From bc7a9dec6f48941b9f41a018d37f56850e23e4c0 Mon Sep 17 00:00:00 2001 From: jaynus Date: Tue, 7 Apr 2015 13:30:33 -0700 Subject: [PATCH 0001/1101] 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 zcmdT~ZIqQ&6~3dUq^W84h2}?Nq-ln88?~T0S|}Dwn8IK%NfR>`h6BtDkfQZg+L!WC z1d5udWTvU<+)5LeD>4`miJFv-ABbrmKWZ7Z>KAMEJmCmsWtmUFKl|boA!vKpBim# z#*6Tc-1y%Zw>IO~j2&G(2pr|#QePi!#!K5yD4vW}@r~<`i}o9lZ~Lvb|N8C+>zJ?p zE;{peZ|ivuK7LCbpI346X)8X|^V@eV^XJ{MYneZv3$bz@6XEB1&Bn^-wQ<^$^7v5C zpPWB$Xa4*%^LaGo&xhyq_rJ@;?eh=ye7=8|;aPRwe1ELXcq5)&=g+vc->7`M|2*`g z^WgsDP+#|r^~W1q^NIp`QOJ zo}2Icop>(3?=RrFY0trP(`KB{d#{PpZa49voIi8HaR2F ze6aa#n@?J^a_73Z{|sYu|8<*B8r`#VUF>hIu^At1{(98z!k&6QYjgkWQ2Rdgq&V&S zbDMF?=lra_xBRP4T)oHdzq=o}V~^i|Q*V51kKcdf^Zx7i-(d6k`+?tE{l4VyFWTCl zzpwbcRh++1Xe&P0eEz<(^;wVKU+vF+`2AIV+Wh`1KG^&XxXXOswEyPZ*8VTzT^NUV zL2=rA{}dl={u0#Y`=k9A<+k>3K`p*-icimN#Rr>zEABGiAMJk|Y`%Zm|3SPPeE$@G z05;!0#Rr>zIco8J(f$i^Tl?RIT72IWzcaTLA8bC~>5*$k6$^#TRf1PsJv*>-lK{m){gQySogq)htJGBi!f zs`~lYe)Z*N=T9ke4Y;q4>%YCfua0ZLQ;Iou;Fo|M_1XD--CU95G1q{nl(+^?<$UB+ z+fVuBXI2$=hFayP=l9hS{|EaJ|1-z0fRkefTmmkGsjkA14@ zhj%QWS-A?#v-0l?=k;26`}{thRhiH7yutAE+`PXZ=9xRr5dMgf%k!5%;)5F7%UicB zu3L22>K@`VN|TEgFUl>^@Rxxb zgu!XZbITT!Q}cLJX&&|^D78V;1zr?MdxV51| zTmrugeh>J2#e6RAJsvq0Bez@rez=Z%gYV#vIM4O|J#kj%caPu8@SWciBj)|&xB35ZU-xdm|K9K$S>6%8Js!Vg@N)+9 zTg(0UcbNSMgA*}wBgUR}UAPOphs{qcDe^uMPc?WF?x{Ev1McDd1TOKu5`z;la!cTQ zKlbEZ_II4Q6=HwKxj*;jeSa<7i@PumcVYRfQ;QYi2Jp+^m%!gE=G}h;yg9gQ72-1Z zJ>YlqJ=h!GkC(Nd@ZZT$dH?v&eWCjhcsp~%^aTl=%bQ!Kw>7u4w$5trZ0_oS(b3u5 z+S1jM8`C=4T2Gxez2%hIEiHvg$ftD7yR@aN!2YDF_$C0V`a1w<|7d59n7$zC`#TVY zhN&E8bP({Hz0KO0BPK`vl1q-2N=EW}=XVGSy(JdQ+@Zh+dpq<;Opf{^mmDi8`+F-2 zQ6+}~P}R@dfDVs#=7{MFlKy<(fkH>99M1Edz;E|)4Y>X%${tfZXZa1?r1ES9+= zf#2=z&>t~5>W^GH8ajLdUBd?%(@?-{&5 zC1rmnqYzc{K>(`y`4G@4(asz(eL>Qn??@D)N=^l!sz3Y?EYw9ibHwxoN#EaTDD+{K z!~HuQxZd00e2K|XzvPl*CFS|@zZE$n7R%fy;E#Aa^hX^2dy+6Ka>=ohvOoTd1FGa> z094J3KeGJ)!NP3mBc?A%=s9J7XQB{Qauxtp{e1%HF?~VO_je8ojZrzwXDsm9 z-VXC3CP)2}OOBP4^E(%XsFF_tP}R>kpif0RbHwxoNk6|&qtJMj!~7-yH+nnFkC+_w zOD;K9QqJ!@6rxH#13*%3*$!fhT!8%#WBH^-C@}R#MJy z3JP5qi)C&q@Mpap`XeSs{gF$Km6ZK8qYzc{IRL8qnFe%Gv@=IcUy$_Y`*{?iN?HJ@ z>Tf#G7owdxV)}xl@9$z1YE?Phzb^u}c{`jhF*)j&Tym_WJl{)D=u5F!=DrL(!`q=h zVsg|Ux#U<$+22eQqDn3WpsJr)K<&}a95H=C(x2~a6rxJz08rImCs0SUGe=Bcko5h{ zL!mB}!~L5NJlEUde2K|XzvPl*CFS{EjzV9F#WJ@5_%d&Y{)ov@f8>&5C1rnCpb%AZ zB>+|Zd=2QU(asz(eL>QnZ-zot$=3m>>hGIC--veRi0KQGzQ1pw&{Zmj`}b|&tGyl0 zmzW&&OD;K9Ql9VkQ0P0cSmv$){;sz}f5hadKXS>jlCr;RQHUy82tZXoi-8tJJ9EVJ z1xbItOHha^`91(u{VfIhL9{bROka@n{VhkKAF3Sg-*v#tydBP$m>l&>E;&|Gp6~T2 zM3t-npsJr6fo_O)=7{MFl74zvPl*CFT5XK_RN-RsgE{ zSp{@kv@=IcUy$_k`w0sDSmiLkJAiNZc9R)vGe=Bcko5EW z6$<@A`kCF=mF>SsOBBhk(rF?~VO&+kzb>Qy<+?>E33ydCC8 zOpf{`mmDi8=eH4ssFFNBxpZj+K=2dm4qP zl4k&@>gQRYzG!ETn7$zC=l22%J*RS*-*({Vy&dL9Opf{`mmDi8=l3ECQ6)P7sOslW zKrcl*bHwxoNk6|oqtMGLhxz>l_!V!5`4N+&e#s@rN~-xyJZtROn%eU^X3cKv=(?=7 zkfCVH+^$*E+uFO@I&24($=79e3a9Ckb7K>+n7Bf!Us&cg2 zm~s`W7E#BrOj)%v>jsUpl&*-l$R#0!+g{?(K?Y4 zH$VOc(H|>pOgkv(FG@3i*{>oB0|!zjo1nr#kfL?1&vTQf#CElb;2R7)J?EZ#?zzuB z@3|*$)Bo&1ED$i}24l>@j#&RakOt!>hyws6Kkxj!Jv{cMalYP}Z0GouuC3wuizg$$ zXBTHUZh3c|!|~xwDLYU9t0UKD)hyB*>}UfSQo}PUy!XR z`B%2p^x{1DV4r*e`%YnBtCz6BurK*I-~(B-gJ%dl$;bKT`(N#I zcQX8L90 zd~$v=LK|9@dGE91&ik;fgHC+7V=G3yk{EL1@k}~9l=Cp~ zvO{q<=avRzULuhWjl1qYcxIEY4_m+D`r(wDOL#}!WXO9Bsu3;9pMEpW$9>0a8IXPo z`ZLW7QO?x^&CoyCaG{elZvti;E_5znjgM5Bv73Rp%f|Wc)8h`Q+ya=ZlaW7QBkfy( zg^q>jm5m=oICUG)f()BQ~*%TCO{9ES-%rd0q`hy0V)t5sj^Nt1ER_+)IyYM zk#)HR5LMRk-9U|~@?}a?N#))$Dx|s<5LF)KK0rtDF{^Am+W^%nscZ*Si@g2!1FBUX zB?zdNeWv;VwiZ=Vd9aKMsXhdVDv$CopriOml@E9apk~D^?*!DWSj)QrH7ioz4b-4n zk!mX-s-*Hr85L5+o8S^v9))jtI*N~3WqWS}bglSx5C(K@*kkz*gsv6ae+N*54nV4V z08u5C#{f|w)yDx*_>x1(mlsOf zY2%oZ{?sKoPo0uqB5Zk-Y=x9;k(6wmoTHtRUr3a+)5b9+{i#cGo;oESu<&FhS9%KCElg?6 zwjvNbba*h43z`@+kB_QOg|8}8b?L6_4(o2K{iwsLv#O)2lPbRADZchoe8p3I?Wg#P zr})~h(s}u7z2a$q?Wg_4NAntMUjA#HPxCsj&aZs@-}wiEJ?Z$sXz$TvB3P^_{Nhyp zYo@wGX>x_IePw?pHJ(W)(z&*l5|M0?J^{#3} 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 zcmdT|YinFp6g^X8e6}WOs!i3}IzIY{V-r zY<>I&(T@>Yswo8Yi;}5d`c*`sU_nBq6;vn)5;S(=TIbFRW73!z!5bV{+57CX&pzwy zyU(6G8F+TEClD~^24l>@j-G*gAPvS%5C;HCe%|?cd-&*=#`$_@qMhScy0(VrFP@D2 zo?V#XxaHk-4#$T#CG9-@uZ~`ukw3?rpU*Bt%l<`{BRW-zn^C^~xCF83NA`_<*a8}nLc!t1}e4KB-|J6Q+ zw_bFeZ_9cC`t|Jef!#hw=tcN1>esU)PLZ*=D}A~CT>eBmb=kR&dNF@ux~$tAkqg(u z-VVFf8HYOeMx1H-(6)LGm-$p(54GmA_IjwT-gMS#>%pdH)f)Tv`KiOw8@)};^vlNi z+4LClcv=Xxw%G!8MzBeZ+J0B8(*6Ts(8kO@uP9K{X;q`O|O4`M7_=76K2D zg#Ju(DayHepc(oH8!mK`=uN(s0^T*O@JOVGk+(bGT>qE0#qixl4ZSa21J&Zsf8%l zB{5<_MPkl*j!{u=D`XwB>NB`vOLVgfDYp;Sw7|+fLa$by%SLDVomP?)VfH1H?StH zi)32?ktLZ&D#(y5-VYba@-Te&(_wtgEE|3spbN$?h%lfF#GcC^7P?^kLg)b2q#Kaz z9zbMC<}pBINcM3+WOgCaKq@6a7Dd|sLlJnFlS*T1YB~wkw zlv481aE^9L7Cj~Hv~f&Hf9jH)r%o9N9?Yc2h^isyo+hndGmb*JK2ovFTb<8_mD!_|h=Yt>`bTh&t)U-1-Q`zgNSDZcho ze8p3I?N{x*{Iy>3w7>S#{^Fx~jWsX-)y}7Romb~qKK}3g1Hs-@Y;dgaSRx+uDhmIV zs{D_qxypyPQ_EXwy(J*9&HB7=}00F^^N^oHl z1X&c7eNQq^iGcH-29!+&BtcOSP+6+5K*X~AL#q6K=e+OcFqI;2n7XejRd&&wue-lK z-M7!V^IlD6=8Rd>+S}XO^k3WT?rAgMp%vp9E$D}^B|C1|UPGtevSL!hu8gvYSGHcc za(NO@?b;nPPVIu@_yzxYVNzn(F1`Kvhd4ZJ@`$hR`8PJ6 zcX{LaZfMM7xbb|l!}H1x&o6$Mhxp<7*Y|wRT4&zl^Y+;$cDNfpf8yMc#2$A(wS52B zpBYnw`$d1u*z+b%ZF+WmJo(q3Gllc4ZM*wF;`yF4h4aRa=Nsb{$Hfo#!SVGye;YkF z&$~>|#XMz)c~te>4Ldxq>@;2xKaH=q`42xgIXwT}bK?0w^xWj|{P)a>=Px@vzwGe* z;uEikAD(}G&*!-~|5bV}&ih_H7xn{s?uH$nUv`Ky7oK1I5MST(dDd%|Ozqix&*#JQ z@oZPU+^$`@Wa^0G;dzORpW5Tjr?zSq`)?+j8qA;msC}J!YShpFK>-;?q;rLkdZ*1Ic=P#4Z`{(_++q{2{iyz(%$H$w`dqoZJulF$gEb#ukm%ML| zi*GyJzwzet&b@zRa(7!>o;8CnKW*c{-DTvqYLmFCz3bw4i@#3X=ppc$!+D+lcO97= za+<)II92hxdFB%EnELtW2D{fMoZsF3FRe}DO#G_&nfPVkG4=EBM*lCUmnL!OS^T>A zW#G_%v;FLRezl7^GXEy=Fz3Yl#a}0GoR!a(b6XeYF8FNMi8q}&P=ECBzjvLnv?T=jkBzLUB)Q7=v6iuhIW>*AMz$JEcs3kK>JT|Te7{g_)TP2x=a zs`xeW%fMsm=f8_?tz4-7Pf;&T;+ptX@$2H3fydO(>V?mCZLr_b+2WV#HRB=S$It8R z#-Cz1@>k`r3s;QAsVH|Ce~RI(JYa|FvC1Qs;#K0?Pi}&{ge%k*r@+eXwm-!W-LqTw zjIEB$?wE65CB>Uem{|Bn;i~v`@oVxISh;J(*YCAz*-GtA&K1J9H}Hx*4j)djIr4W2 z*XRi>PQc3TG}fM-=J46x#Aj~G8PjL3e-=KrbV>2Ea2+`Od=;noS^G-ZKl>kf@uaJp z#NlVZ_&fP?;FU0Uh`Vs{i*vfUTchz^PoLgx&Ycm5yCz)a?sD(MDX{jbiXZ%7_T%n7 z_(b<4^Oa3caSV^9+nHO8j1Y;@sZ({d0T!`W6l>o;x%sV{q}@zTTnUhB5E3!T$b% zN%Q9SPF&R6+twU?;^1*d_YSquqt#VkCxE)gjf6HV>^uYGi_)4NH&wBXT~gnjUoX5# zu&JMCU^wm>E}T@F8_cVp;}$BmSy3?0-XOeruw##4IPMWHoK(v0@r^2mTDBBG-P4H+j zBV0JCl-(o$?i>E?w^8(+T2c4(ZlQM-cAkOpMQP1hzemMT%XE}T@#KI`|X*v>^k{cb^cLa<|xU^wm(E}T@#?r|3t zLoK@spzi4dLK6!+&%pSiwC1ckRSdQ8hY_fI)Guz@x(Ykb!1$uHrpG;0Y&VzGef*&C z?!k^{4Tj^M;lfF!?6c-?O!h1a=GkQ7y@DNk1joNai8F%>CzY~$oT6f=rAGku-1wzr z_(i8?j1P=2O6K;ET^pV2OGcdj=t?6+e6`SUgn$vXQy@MU+28QFF z;lfF!>^Xi+#Zb$~1yJ|&Nuf^^cAkOpMQP0(_f@eOE~z=r5}q0CI7cuX_Y4`oo8TtQCf4>i&PA?93z0b$HhW}g`H<$d{J7{<8dlBl0P%i$%daJ4yJ2V8reWi-LLfE#YqjJN5{M;~wF{Nu}%_&rmVca;5<4p3W9JtFZG7j4w)S&iWh` zLoMGHK;7ecLgyBCo`La2X-$t8sMvR0Qupz@!siD&o;4Vbdxi@qm9o$JLKQxi_@cCCj+d&~_gqqQ{DJWIgB|AxhU1>$!bzpYi>FT3Oh62F4eqHFNxxirwLon&X|qzYKPqBN&c*h6^W^ zvgdf0ilLUf1yJ{Nuh2b(oo8TtQCc&{->TTJT~c$rPxv>%j&lUVanEq!q*C@A?^iL@ z@_+#9o*oqXU18@L7+;ju%<&-=Tji3PH*l~_vIPMuPoK(u3~qW;056FS;*9aZnKLks8k4-EAWrsvi??rfgAR%Uz00SE5iKh)7SZKKig zc+KPWO0jvVFU7>MQ+1BlH0E5#yxMOr{?WcP<~;Kpb50sJ$E!JB?e}Vbx`M6nQnBA_ z8Z#z_q#XO~_iBH-I?q11mNd4uI6V8!O?@d|Tiiac@J9$GQ`4L@X6(F_W1nkywLe{*XP@^?bIeI&#?DJQ_IVGl_NS}!?DM{9jyY+}*m)_( zKJVex{&aPoecm_CF(-`~J1^zf=RLgIpRUfc&-;3{-#qW-)qeAw=hc4moafbk^PK0^ ze)F8?)qeAw=hc4moafbk^PK0^e)F8?)qeAw=hc4moafbk^PK0^e)F8?)qeAw=hc4m woafbk^PK0^e)F8?)qeAw=hc4moafbk^I~3m$KC^dvku+ohz0!}jh*uBe^4KWD*ylh 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 zcmeI2d5~RI5yoc}*#s06a9;CG+q7als|Ec4wq)mx+iU2wTUSnM*p(4B@yfQV zR;@_lsa?Bs=4oAU9KZ12FHTDA+GTgVu!21uUs}(H5_`<~?DfC)KcjNiMDpEFXUCM# zo9ysByB<;r&*u2-se#XoLVUdEFFWCusXUw3Va{i{R_vSQZ`i~uvO^pmHhILyd;U$0 z=Uvfwz8f3!7-~G9?C`v@!}E(D<{^G~{_&pAS?kQF`n-L%i5>2S&!0GVB(cYwPc7d+ z_GiY_;C|5`GxofRQ=6V0A4~oX=T6}~YuoSn_jtbNPT{<<c1(^UDs; zFFx^#_~H4-dp^&_`LEVJ={bpyDgV%y=M3Nc z;&a}w(kpw}TDvBDs^ada(zC8z8*4tb4%41~K6;^spHJ~&YB-Lqxb50l@}GL>?oMWm zvVUjCjw8PR9lXx>zcrCxeE%D3KA&xTmbpHkgN^T0;rk^RpX2^)lpW$@&8Ie>pWdH( z)bRd%4pYN%z9;edo5aVIue%=ZviILgHt(PJmpzsD&vCySj*m6p@4olHMzyKo{r#>x zeqH0;PvYTchvTEozo~JzoxfZ*@1OVQZu9;*E`E4793N{w?-ez?zuv>}v%vfFUh=*< zF23z>|HhinJNMq<$=z*jdDaZR;`B`eceml&t4-pn_O6THE&c{^qldt24(E0H-+g#; z$Y}y+;#9@&=9x>tqw41$8|_)2a6xzXKeaZAGx4k9XX2NEN7c{28vVbhUYf+AXYuRe zmw`k7&GxhF1=TL*$o!kcL!1-y7k`7eaaKNC&TT`OyWq3kAl`h|qWWV;{H^QEt#7Y2 zi8Jws#IJ~71|C&E=c(_j_Mg$(FoauNe;tKXHC% zH~tjEk-sW`UAST_PDQyx_)`pL)j>N|k5eA86t5QFesUAsC0wDlI0aU2xBV%8_})Fb zXKr&;cIVvtD=FS=!o6ajCO&gh&Zs_f{j>1#WlM{ng&V-(=c_oy&)QeQ{@MTNODA8` zBo06O#oxuB1FwX+L)?W+UYgs@-5QDSe&&pBbMA^b+%@4Ucb9u7PJy*gRs7%wvmbZw zp(nd189$KV)%{0@_XEzFi0j-#;c(x<;uKi9E2xQId#>P~aTg{$eQDSF@Hv;CUHBU~ z+%@4L?lku<#oDLvgV~$AH|307!hPpXrg-IE&vu#9z;*7PFu8T^WQvs=-UB$`jrbBd zLijfs)ZckuE%d6w&NDE+DDivoN%MLZ^v&z(?d@N*WZvL_jDaQddV2{t)Zc`W4_vhCN zZx(Di$TKh;cMTU#DoxI2471!y<+dnF=Gp6nw+wdd5)8*(!iAGc`CYzVAao2F+q*DGY-=cDFDoW66}Fuo|QI`Ma@9BO&D0O~F~gmx(GJOks4 z(yA_ZR=FKrRQGZh;hlmVPaF)#UBiWwO8F=L9+lg*D5>8!2u}!h>=F#eUBZQvO8H&x zrgErdcLCI0y-#RjVdohbUzApzc&Eyt7XDxYb(i{uPFq)D=NTAZlvZ`Qm&)zoqPmyw z7v3}2@x;M!+%;S{sg!@>{Qb$^MaevyEWA&!W0&CgH!5*%aN(p^uYGi_)qS&s7e!oF;&}%dZH1xv=vLj4w*7x?HMqUv*L4%QJ*e4|Y6pFdTOc z7fveWpZGUa?rTNKJo~2b*Ml9q1jBKcaN(p zuF9d7Zwa98@_eE53Omoh_@cC`%L`TR+b*hm`5oa4f*nsB498u=g_BD8Cw`I2p_YpU zP^Ms>9Cr;DPAcWk@>-QcE!PR4?&=1i>kB*2!1$uH zYL+*v+>I`(SuPX4DcEtAU^wm?E}T@#pXG9uLoF)=P^uYGi_)rD{!-=cbWzRnF5zDUJI)de$6dpP zlS=usyj$f^%RK_9ySh*4-onl^Fuo|Qn&od)?pH3VS>7-F>tM%Og5kJpxNuS_f0hrZ z9BO$`0CiUn3H`RP^9+nHN~>o1u*$7=QO)vq!fS#ZX9a4;kawKa8fCMmQSc0YI#xsbyt58`g39D z85m!bR?YHhmHVrUYL?FkKNajaOE4UF4Hr%-<<4^Mv>7wnI}Yqy*tcM?ueYOZhj#s4 z*8gQg6X=*T(7(8EVDQ9_wp@qRbKGG6g1$wAeFN#qHIF-+r>>XT-f_^u2lfqiv`yb+ zWISH=c)?O^Ug}FRaqLu`<28*r*DFO50RJja}q#?A3+j#vA=+MljqE4)j%2>OA|rZ<=FH8Z&lY z%CXOTc(p%WooAo-O>@jiW5&))Ire!EulA>_^X&7!UhOx}dwI3rJm-0}-#q7ewckAF zd9~j>=Xtf?Jm-0}-#q7ewckAFd9~j>=Xtf?Jm-0}-#q7ewckAFd9~j>=Xtf?Jm-0} y-#q7ewckAFd9~j>=Xtf?Jm-0}-#q7ewcos$*WR)3qTbnu?|0H$h#%wMzx`9hV`WzUOzC*( zj?PHN;&`c5QjK;-CoF={PJbZmN-NN@6peH^B+m^6&EUQk|Ah++> zCO;{%_L-k=%4-SN(fPIV;)3N@S#`#ZK&8bQ+g3CCA!*;h)c_JFAJL`Ax*zlJ!ct|` z6MC)>s_zL^)%i6%*T9i}WL5y~hJ zgX-9^rCHw!3@ogc)XT$qhCN)N40_P+qN}vF5M9tJ4Fi zS~}Lu!}@Hh+#cLs=bg;|36J=D>Uw>s!_=3`nv3l#!?ZZdUmxy_q(6}S(1)R~z;^Qf zoO`^qsXm;wPvwKWc;Y`I>ks>X-IPzbmNMGQ-GS??s%d{alxcC6chktoRQdz8Z)MU7 zu5SyoJci$-US0^xN-@i~YtrbCu$+ue{5_F(klSmx%BbJ*GySoBCQW_9dNM6f_0hcH zZ_=_dI@@!X-_grk%8qp0El+5h_Eo~vFVvgyr}kAGmzgE^-@hZ1pXs4A%FDn(mG~pN zZ8xeqZi!ZAZ?5lI5HT+=!fHFkaeMw-DW>v5xH84u|GH@p<(Tmd!_`j9Q+>yB0v+e0 zJ@yBy%fGBJGjHs#mSeQ<`}-wpe~{~B3&$frV+pK|he%l0_gG4vrF zVc1{Etb0j3@#{K&VYw+}`IXl-zA*u(1*pBwrg~PN+xItRnEET4B5ROvBX@UhzcVt` zN%^sUq-pO~-d&c*ldho;)XnTc^&Kk=b$*D?Qpb+64IFw(>2wec{X2GO@R!;IP3;Ak zAkvSpkmmduw57q%?k+F#AE>?zH2(m$JV=y$M0cHBL8R}gPRG!!gs#=3oUupfP z`o2H;Bb|Q`nDZa_DV>h-okHgC=8&;$$sjGj{ypgrXBh2czISzOslc$OBfN|w>%-0m zAYtLDw7MYvov!g`i99}VdEprRyYmG^_lzNxx2nyYKecCN!-xB4JEnax{}}b{RvsT% z{@nf8--k!?@sh}Av}bqC2SS?T&lL?Xt-$q_NpDywHIApUt+HRZyp)E#p;Cr^RKqs> z9n+~{FLcMSkDWu-k5IXRxV?P3jOn&HUNM~*?V-BC-^!;Wt{*y?IE<|@S1|iC60B4M z)V^k3F0X<-pxAu!?mp@%3EFoTB;j_1#zF-k! zp)9Mf@ch=(Lq+C~wpCxDwgq?<*N>EN3eW%j2ZoAkiT`kYa=0jJznb3GcLmWsWyx98 z-cx-$2~+Q85+3UR1HwXDRhH*A_dQg9m_ODJ*%#ZVYkraD{D^2J z(+b27)0fr5_MAAIFr&5rTb8HF{k4yOw34hRI`xy4{+nOiIo?}i`7OIz?!VcsK?uTa%d*R}Z(Dt2 z+>ZHSfR~HEzWhj~Sfl=Qh9~Q#V(k-8pPm`h;ZLPmzyAIY&M&TIe#&zDt@@My=e)kh z2sbd_!5_{H-DE9fIuZoEzsT1!%>FVwY|IZqAi*O3xPDiBMS3C)x^f~NgKE|fQ)*)W zJiX%nU^=tY64YK*+0c0W5e`)bIX+@OGUUbhNQ*Q5E#K@9W|MYWfcV*VAZM_>AH?i{ z@e`<^Pt^YC)>pq?AdJxtd)EHxn~R@jtdx@FzPIPXzHI-7D`aKhiP}d~dy3F1m&lrN z|AYutrA+Z+ToOMFZ&5BYndLiqa(JXtUQ6^LZV&RObe0GGFJo4r8f2d-j92gr((+Ba zttx{%pWJ!=f8%&yA%Q6ue?EW3mOI~!c>F-Mj=1@)Pdv1eaiaj19qr+<(N&#NNGJf4BpCt%Y}t4?R~pT8g4*0`v;mFTn@7d@;j^ z7$^Kh!?I$20rUG27QA}D|{n?#MPR#y1V@zi= z#T{D~{`k)KGgeJ=e9AVl;*a&aY1mjlwnf7jpIE=jqkC=37hV6+ z3y#L)+igOhMXXyBeR`J7`d<~>SE0VHe^-Pewoirak9;`BiTy&vhqOG|do+p;Q~6#D z;l%!qCLikqo`80$A?n?IDClw2l1kk)@Og|Esn?i3q4UOoqlrXsUsW@ z9N{>nV%YQMiP;V6uZ{hQzQUvPSDe@X1mTt&T0B48VqHks%hN@+hZp8ED$~36&m7mZ zFP1ae4^$rMqeHr+k1#w{F-S1X>!z6fZDh*uH-Y$;(z!myn~qW0;BQ-voX+{azX{`g zVq0x5&*#|vY4!Imsc(2=Guz*;T26Uj?+MFV&-TaUfOrk#LB-Tw6$usVAMrc3&%~&1 z&x40XVIQ)`crVdMqeH+j7D58y!y6|K!5)tn&fmY2>2Ltz*PGZEFv9p9qdpOR|KT0i zvp;|(;pp(h4(4ARi`zeZc>7u9+LITa8edFwG!K8E_Okc^|5{Z^<55F}vNAaGwWrRH z{Q=?5F4>PhJat|l+aJp{3-iPLmo^W+K>hU~2j{mR3%LJISN<=@b#P6{sIX`xl}-nG0Fbd@rT*|g10H&`K+|H|$v{ugvT*aR|8dS9jm|$s=t4?K`gB;gY`~#02xOp8illFkXw9n=lSi z7}pZ)_ojG=>HhllmBHs8-}%GGKTYx++!4k8u{LfW;RWr3e=SJ-1^$)f8`OUb3*ySa zS1w;s>A#0C@>{3BxApK;ssAyy-|*zf3~|Nkg|`GNi0;bJ()DR|&G#)~<_pM|g0wvA zbJE2y_MdpFNjPG`5X3z3JH5~Pv~=u?9UkU4eVbTO5<}x@pvt= zgR#Uu{+!r;iG61j#4^nHPrkcmxl3E6YY#j2<@0I>#)fLvw^whOx9<_hUgOq|lK^Wr z3@!EjNUWJxTTS@-4Z*yT=?L|=SxaSc?8mE*m9E?Uo1az&Kl${`Q%i4*{lUKq@&*z^ zp8fM+v?H}QVN4f^Kg4uQCx_E~f$TFf>|;Ig(w%RX`u_{{&vG5BSoqA+6$kG8Az?%V z2~qeXth)9$EH9sbi4J#?NpaRE!gXfgGob$>`q@`?y6YmNOFpg-hfF`hsNL2v)}IX> zckc(o`~j_h@49EsSyUh1)O4&xQv;8zx2V7M`mTDp?|_vUwyt-C7{p(i?Pke9N2LGL}_C0z%*8f<~EqmtGtv>91@T%ID zg{}e;>-C*{^0cEEFZ!R z7`lxN#Qz~g-*UQ2``;!vg`GdKhmlnnQ zMRTrveT>)Zl#dL|x_Rmozu3&!mJP2waCm)jj%0p~MvL-w)))E5@YFD^ue5x9!mvNW z>nQvs*m?Tycs?ilC-IfWmXy!>?qkob{)@#I zFMf3TXk*FNr3?OP`aRD)wYabEuYWQBm$UEq%^yxrKmEN=?p8a6_=*Cx0}5>E}N8x!rDAkUvPW{|)W-4VBWzmd~CW&o3KCc|L-F#Pb#W zA+i!#ru+Y&$d&s{gLiP^UK9Cf$@GP>|YRt8JEwSSF+}fl|GDk4*Tyry#40# zIZMh9tb69$TNf{0{1?&m7I$f-xOaMb@iToFef6QkTp z;n$We{66BtYrpy9>$WdDaOeAP-LlZW(OtTG_y67W-trB9dSvJKY5dz^*rxn%thc6m z$^X`0_3wDSnaWG~WgNef`5}V;QaoEV#^Zkk>+SL&G;RbC(B zybC)tFVDa9$ICtt>$`2I`e%EOnCEGY{J45a9hSnF-gVx9?M1`B%{<%- zYHv^7Jb%UZlMzoKosD<}eZ=)`CUBz ziLR_hNLVKJhPtx+iTq&{nDc{d{zrT$oxc0V)4^iWf1y0bUsmcpS}7j9>s8Fx7d<=G z*|qF{l?Ly*fA{v=-K7^Te&ng`-~9N}am4%o`n|v1YCSq#|K`==$ajxCH1rtkt$sS~ zzjycH`y9ll?YBR-`Zv3;8(!uj*snzVMLcQWuyGXepZ$~CyJ|h=|56{~|B-%@@6hP} zWIYhCKQJ96<3G-CJ5wWmWgzhOmge(%56d}w&{pjy9{&D9(#J`^A1#8%F%m=~6aB9k()T$NOPE zE)3~(L=UB79Pg@PVbPnF*Ux7AE2-R4@euOAIlD-Hsj%K3Kn<%@VEbdkK8@!*e`f2u zbo@-vdQJ7B3ezVjzyIXe&eO|pOv=L_et2Z(X|?lDU?0o}{)gN}WB1i2hW--vD;5v$ zyL=uNnL}R~qWB=1qy8FKtQ?2Gk$r`T_APS}-xC~;ZuAlFg@noHFI9FkiZ;UEj?6wC zuO~NdoY)wT=Oo_m-w}`ZViM1M{|+h-|KRl^!oftjSo+f!w#?`J9{ZhkQJiSJ(0Z2R zJ7x2|BD{PdwGaJRGL(is?Lg_csl|UPkL{8yJ`mQ9=i>2>4J5t3ofl_%;6^f~^LY2` zhChg|`!*0SFOT*9@Q8Wdf#axfrg&@Y_S%E5@cE)YIpSDntzUQZ!KaD8e{$DwY1S9k zuY2G950JcYZtUk)*3`Zn`%9==@%~S;{-=0q`Uk~Viodb`v0Oh4e}MgGZl-*Y?C;Y2 zP#hZ?!hBs_boddn=OWC{LrcSw8Xet8bh0AN|eh_g99fu5}YqwTOa z79&Y}kL)nznV3lD``BMGJ(0h1zCis`4Ob4%I(KmSmW!9OeJrawQyiGT@Rp@~K7jMI zEdG*yrhM}}7WrECQGHjK`MK+v>vddz2-6DOp2+ua3FEv;8gym)2TotI7P&kQ4E6FV zH0ij$qjb8bZ9r0euVslI@%-3lYWw5$oaM9}@!;lxi}$hpg^a9H@q(9&uitk+w}%4` zthZs${huZb-fbRlm@;U*WBAA8EuRl)eyE6=iu3D{P4#$w33z?5%7;A%R@3spruw53 zhp=CRD)glXup{JiPr)8eD|8;*;uh{G^_{^3CM9+86;`MNT8#2a$<^XYdctG+I4l#ao zjPQ~bAiCFTW%lFt{kM$$dz_CN^|9S-#1oY-7dc+2hBEj&DoC4WdLythOzpk(TlY;Y z#JeZIJ{Xv8h=d+KjUw84GTe*LZ8!2BQx*bMdc{ZH1 zbZ@+W1A7h5I@*3>+u!m0?vIR27DcJQ)A}DwZ{RvtLB#$?^_A1;)^{saAklH#Nb0!z zeg~S%@&nTM@bIK@{u74g`7TZm41ON=A9VhDGaQvY41JjS~kMjq_bMhaF_(J@JhkTXtbD`q= z90MSUM@M4+Lq5_kdK+W!W_xKi6K2yU%BADYNk$>&LwB8z8faxh3|}0tl6_cHOT-`e2loaFFz) z@(x|7NIt@{>%M`93pP3({*v*d{`ymO!yh&Faeo^U`YG-`w{{?2ANln=`U@8vz2bN0 zKF$4ey!PPC%84r$pA+W~_4)|(FAHav`iL$h@=0yKRkV;#I%?*)sxvGIABJGs1QC{?o0x@!E6 z2jcNAv0j^X;`g3>?2VY-Y(fDiq9-1{g7bHOq(0Ik);>9OMG_yROx45vg>qE-1GkU! zO&zODd$Ijw!wz-2#D=bpMIcisNZ%vFBSwC11@OS+qxM2KzY)gmYZnR$Bfm53jp$;u z=cwG?)LzHmW%x4|uMML;nYYjW@0<6lAdS%;rhnBV79n4V^@rsM?%(vj+`niquOH|- z{Gk1=myti7W_hJ6%Z_;Oz1RO^Y(FG013f3A&ejc#5k7F=K&|<~ZD-hiA@(z7iU0ZX zZErsGZL05Lyc7%8(Y=e`{vcs&Z-ahx!Anzr&-S%#&z>p1u$k8jphviGK1-aq=5!)o zh|czi%b#43V5{qXCIT0lh(F?w?KG)l+{aS}?z-=V_+aQq=GVX2p90JDj}Yt2lpl}3 zU8cTO?tWY!>6#ILa9zdl7m=rvvHxN{m-46nRNZ`of!eEg%=IL;n+<=^+%ayyYd;$6 zQ%~nl#}_zH+)MG3^@r`Ng1znGo5g0fKTbcLq7Yx-_w<*TF73dYDbBrYVX}VK#}oTs zy=%SF2vyb|)-yg9#2H5a&{?VD{IoS5pAA{f^v&{B)6y|L-<^-KCG!IoDv#Met3lY! z&Byw|^%g_laDPKTxD9R6ao(CrK>To>DTN##>U+%l1z4_Ube7-FBQ#@`buYF*9+;#R zh;F&fwvKUMOzIfi0v+Q%N=9e@oX+0|5ypMdx?UdppILd9r|UjEqKm;_;efHC2`>3q zU;eI6ib)^R%MXYMV|*FqJN3zvdU-8fO!*t~L!WL|9^>IHY%ph-?5#pWA8;3`(~*v) zkojY4rIr4`@^;;45!!_Ywl4yjSw5d{m@drtgZPz|C;f~}O&Q}?RPzx_`w>%J`x}na z$^_>6C(ZbU^R0|Ox8F5Bkxm=+PrhT;$M7`tCA9}Q%+IN&-Hr8SD<}Pd=qfb#b46GF z4)-_wU#X@{>r;RB_`})x0O85HnSbIshn1F(^=s&jvpiUz>v$L!z*0=@;l5J}nIGa|CNI@Tb)$bszcPN@ADM|8%M+OV+%R9^ zPu%;J4T z3sauZkBW#Pv(Q)YJX%^ALz{IWm)hWx< zwDPo<%B#Q(TVdM`b^g^Zw~q8-iTbYRWqwTj8d`&dJyCUae%M7s(nm|+a_VgIC| zW~Uh#ZmLxNE{gl>n#&B?LSRTfmM6ePObx>eS~|uo+0=2nZ4Qed3Jm$1tvrqsf2%vq z>AGeZIj+&3bX~*#?J%DviJuHy!~UKO16{smqt(_io&^~Enqg?Phh zD7*GY^hOxEI=vN!xHeMic}>|XiEg#SXf|Dw{pp>2tcFLUhJDb#rrzIX)ASeD!NZp1 zBYubvhW=X83k`b9oVLP-)wcSUZ*PBR%X_H4!o9q5-@(m=9?AVxRWG~7aJ+O3!S(Ua z>-}k}z~y5`Tmw3W_^}D+9?7u=vlTk_tk5$AYR_|9&GL*h zcV2ST;b#S{fc_3g?Zu&61K#Ftc#+cOZ*^Vc$03c>={V&zaI+dUbUOY@fuXMk;%BL_ zWX^`ye;Hr%Ys)rYbHL3D)<+n{$M%W5)v(e0o%kB(xm)JZGHqY~2Y|nI$FTFtYGB;U ztd(nLrgvUs_kIi**Dx;z9{LZ~g4H-k@rOTk4eJLdWr;qb^59WxGlZn}EU)1Vil5D2 zaZP-UKJ?7-9NJM!?~ioM_}r+5Rh=G$ZNs11cH6@<&oAEf{61I<@va&KrI~Mztvhsr z{auEw?3kG75$;jt_C8kn*4ozE50+~W+=pinccDK|J@)&Hr`JCJr3c z%QLRI^ODjaUn91$Y{Ij;GeaMbpB+Y3^V&~nRh8afD{33|Z8pM4r>m-J&Jg$PJ&+vJ zR$WJwdf)ZS0bHx3{tDYsd4GXDyBZ&(k-r`*RUP}UR+bm-J*Rf?+cRL_ix)rJS@zwn zmo7iAZ|BuNu|C#!(PLB7%Sw+w$k z$iL6u=dUTxdF9C`9=hzq8?3o~Uwvm!`Gd8mcOp_ehw-3(`i@_A7fF)&_@d*bPh96~ z&(4mO`kZ&;S*o&sUg}vw?c>$3Yl{P4TX_4693QI6oDW-(xy|glTKR%v6;6L;URmE`f7ZHZ%WDP|`;)IqS^hQ>7QKIwW9D1cu4~p+l`|lDAfBby7r56lQ#`--Q?&!H5FM|+ zn&sZJ*B2(w=4&mjrd5rPkxSfufa#+Qr(C;!5&LVfM-THwVepFMN6wqY^4aYuEX@A$nqxsf_qSy`ST|qr z%cm263PRVODNenb9`m%K$etlKe<8(QXzJf?n*Q9hn}&T{7w7oNNBV5G&He|0x$Jb? zW_irFhQ6v@%TzZopIr;j+*XopGk>qP&1HG3YrPdTO@E7;%J5gGWp2}iw%gSE*Ronh zd9UkQNfc@8Im~E#hVyMx_FuPQ=r454^-$EcjqSDbYlB>0dVwxafP_rP+O9`D9xZcy z5k=FGGI&3K*9HgSG~KMP~@54S3%ULU70nLy0nGS@pu zciMV+7YUM%L#O5PPH%7eD|ZW7XO#YM{M?p}G&INPMzz(qX$CK2P(w{rB>@50~gqIF_wbJ?~YsH>Y&| zYX|G%WgGO{%H-*8Kfxt&&;8fb<_xCw^|S)hQ2V6{whIz2$ zJov_{x&Ed<-i@>zuVv!29O{Wm;$!Z@8-m|w`6Df?{|oK+49whm(UC1YtykU1tIWnU zHGXz2mFEZL_wRk+`7aG!`;&Qd7e6)SpDBlzUv|g%(8L?_=Hl|aU+Ehg+A&^TMAQ7$ znC8pk)YlfQ`xQ?M4h)d>Khd|2(Z7gZ6Qp6kit^>c?~FNbk9~&auePE}A79Q}@=EE; zr8h|5eZ=9W1+8<>u)iXsvj6(PGQPbLHLDJ8+i{wa%Ad8@-G7n?^G-$w_81t0qkk+@wk_nw|iBtcoS!e@lCH}V0CDe^=-W&IknEsp@E06S_9)H)d@;=5_ zyBp4Bg$o_#wOv0qzxey@5MLb7y|OckSj=Kfe{#R;^05i2olc 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 zcmeHP3wTt;y`S^g_nz!IA%S3|cTF}Sh^vW|5aS~YzE}{52@3%gLV%V;woODxpbDFf zdX3lC&B8(nps<8U0u&O-QbfN*u=b0OYl@8pqE{|@En+F4hNsEi|D0v!oCGaUTZ%UO ziJw1a&YYS5@Bf;a|4|dZ_ui2c@4R=?NFE`S^I(xq#(5*hVH}1Z#`liA?;ea9_=9oo zJ@-s-z<+z-&ws*y{3;uvz(j;ryAb*q{#^RcgU4{t{y}SjwH|)tFZytwJo@yZ&mQ{x zK|}(5{_uz44;ke2+ng*Se4fWvg8TIS>eBZJKmMM4K{iDAVu4S0M@Ufc{*b#v)y@Fl zuq4vXVcenZjq^!6+pE8fRr&(&Yjk&LX@8g>s~%sTucNnqd2M9;KK<&cU+4MdiF`1| zJqVWNZ%{DLI1hx5Dtv2Lr+>RU$w2yR*#`G2n+kKzy&)Cf+RMdk=*|NP1}7OG-nTd8 z=jr@-*4fxgpBnA^6#ZaPN26PXVSQekgSC?J{@wH;!ncpgk44yCw=qN>z;DNbqalhh zpG#}*qWtQ4XLLvM5ZZ3kIOpzi52o#c*7>tt_Tdy;bZ3r*t{tLay|bXhW}xr4MDR%R z{wUqMGtYHsM-wb)ClqwV8z?qw!ZYD{icK2l7g_O!eA3^*g=dD>+utTw!;agVoMWmZ z82nG8?E$ZyU|AnVvp-n>@J)OR@u^h)U{BTC>n2iu4BVN=SEc_nipa;T+4=a2PZWKy z7+Qb+$Oq|^f6>(NVaRWzSQ09o{u&z{PqH{ec=JrglPptiR{IygY)=gS9Vzia5^56t z9>v}z!8yvWvVY0EU{pw@4;KBSH=m3)Jxkta->z9*{qHu0@%I(8KHBkQ;5Dhro>`Ud4wG&i`%`mGcLpUd6xDn3Q0 z>_W-&k|aZg?|(KHA=tx@zF!D(X`)a`u%O+Pcrs3CAXvxMBpwhI{&~jTnEt?jHIa4( zfipng-}u0y*5%;OX+EZ58VZ*t&o+|v8TiWh9Si=CVvD|V;Ji;?SNIjKn>}WkRgtF% z!Cx)kzmw03l(iz9XH*mYs7Uc(yi&n(do96azL$+HE$m#C{}7GA^(Xe4sXmxBoqNvC zeC`iqd@T$55UuC~$Bb=E`X0pxuy-GCP~thqv@V~!-$(h^ag_se(`Qh=1#L-Z)S9-Q ze8)Hx{4M-?tzN7Kj!Wgkn-T#cwTfMbaxL7e?jnCYlRigT#pfq`y+-I36}Mx zu2!W#m#8mM*<78^Nb?1Yem(XFs`&8LuyfTGst+309Zb&Qs6V*c^WPAvTioJge{}FqwE+Tw*tsecb+gei9xTVER z`SgN)*Hzam{AYNrE>~a*?e73QsoqPlN5&h26wCdmP`+nm1miwh(oOXP&!@IX?N4NV zs3Xsl^-3b@6(153)1nR3A3%JlXcvXeq`#iqvL~}Zc%NW7K0I7O^+Apgj(=Ug7>VzG zx?h9+Sr7ZyvT3t(Yx60;f_CA6$s;;xJ|_y`90scF|6BMb>nHL&@2`JCFt$%#BT~L+ zWvq+q3LpCoZ3jLB8;TML_GEjlUCs5zSPAz3m9rT3ey_vzI|dEF_`XrkvQr8&mVAwn z-0ozZ34s3;eip^xcG%)`Q_53aOBNLapYm;tC)FDV{^B?pKjJ^S!vxFmrcTj6x*o_E zAih(5hxm|qLX|I=G+zz7Blz42(qF?C1=F*8_yezf-&1bV4zrPeR|!DfPB6|FGlLwB4;=GAV^Uu4{o|F}FE9v# zJ)`(*o^AD+fl@MG@b?RIN6e@8ZZZ7tqfxajR6isO*#CYdKP2)Z&l8O0RRjT?VDR@M zh@Qq{5BAT2zy{LJgMD^>*!=2`Vw}&v(hwhCvyi=CunXKZw|Q)p2d+;~c`I1b**w(b zy~*kCD4k-wzq@9)t81(2sUJHF!Zwp*@6qJ9F#mIgI1goQuIL>5$C~;NrykC~K5pEo z!J91IPX;SWrp_sw(_b1JwB@l$GYi*cELybh2zkF3<}>vtMNCb5@b}j={Uumn>Se zsO%bPdu~?o?pta~${mlLK3zumEEv5mWpOyXm|z?a&V|G02*&HFuB)T^5ZR9ahWx+^ z9-PQeH05yZqG=<+X3bxQf&FI^%(GzppfUu5NZ|P^w_gPQeQrgQ=y6Km_AC`?MS2Nn#wrK;a8fnWT07rzVWfAvU3 zZL#r~m>UkibJR3+>z1$HLE1U*O-=6#w;lDYJ+f%8EAP4C!I$osce1Ab@ae_VMqay? z%RI6*dGxMeVOd%C^g+_bTRU#pV|#t!YZ<3ccYj3Y!;UOSDgJuiDS`_iUkrDLmk=!H zE4;FQ0W9Ycaz25OmB>dld-PBH%xMIhHSqr6dKLdIz`r+%v|nld83g&dYQM)bN86%4 zTfTtIN6$m>Pm9eZILc7#Q)AixtKtQb59v>E#6F5t`hfRuB2U`Ofq!uSu895nZLHIq z$_f-*=)9=}whiojwo5vPSpGM~c@&D_u!>arbpD$F?^8~ElkPc#dho6$aivrTl-Pf2* z)^E|ZY-~t;hw^RUMSJGv+`*)sXYzJ6J^WHS!I=Lm>Hp>Y5Bx28KgaBc_`jUSFCAA4 z_8+^7v7HZn?tcI4<(-<@|68QY_JH%_QSwFkzhIBKBmaK9P<6x z*#TFKG!XLjY8wOjdsbFgXJX8Y$9BlHYA#b9_fklMeW<7cI7Y_-)-%s_8GJbz%i z^UacIgc6=Pl#Nh*Q%e7~SGpJYZ3)o-;G*fSIB9pN^S&=^6%g;AInq5nS{e=G`)%0Y zcXuyV>{~uxQszt7cRs#>Kf}a}Qk2J7m(2|)?G}C8#y_lYzJp++rfqZkCWUVe>oGRv ztf%_HG7#)x3Zy^m2fcVc1mlJNrp-{v>EmxZj(a z@XA9jGCt<}uif3#3C8*Um*Mb71mk#>n#!38#`A;e(fN_}h=T0D?F0+jJp0)r?^6DC zoM=A~yp!5H$Fw|Uhm@c6m+c)WCpg0PmE*hj`{eyVFMlxCxqKFxpO&r7&q-VPYl4js zAAo=AA1t~Lvd7=3`g$dP!}ECK(qlXg?;x1Y&w@}sm@LI+aY%#hp<4-#(u$iJ3f`ssgS`u2 z@3bB4-D}TN_+}9H_g9a-U#`BL&lh>JevZNV;8W)d`MGHU>K_E{UyCQC1xiVO$QQ&h z>n`pOXn#c?5K2|@1j9(i6wpiiI;R&3uWA1Qp} z{Jk~WPWcqHzS^eskcMT)j_tuP~{aLVgH(Uvm{+BE7tGz$Y7hwNL z`RAEIZNgDy|6t@#9naml;sdgNi!P?ckUT)yKbrlHoaBK@{s8hvoO1qn0e{&4s`g8e zZ+m9AJE(t!{KGmXdFAWmeZc27w<@2K1fR`cbCkwgh);L<(^pa~n&5nC)&rD3LF>`~ za_XzppBwo6P491>sqoGEt{+~smp;#;7MNd%@(uR>FU{xv+4_U?1zsgzmVwQrDqd*V zKpUJV(EQQBCmqZwS@m1OkD!fdGu))|59XTeoEr!3Anj5VvW|udFoH#cFQuVi0<}Lu z*A}V@g()9`ZmHvuQ)@mU{RJJeIzKsi8^v0mE!3p+H)%jWLSZ_diT9*8s<56zL*L)x zrsHcEUrJB=#`^g0!}rDX>B4+rzYp?9%Ac$c&Q&#p4+HmU{?g_(VS>$?rP;q~UPJo} z8nnIYHwrfKZ5anT6~1(w$5v%?Q+w5Nz^6)IF2wsnA-A%>(y++pRQ2ascz&$X&N1jI zH|!tC{J_4!pNCZW`w!c`FUI%9+Oa9ZF&{_gvp{JcZFTJ6Ds9Ju_F{I1q%{?O(JX)R7Wshf=8@AEM)UXOBZ z$HDsGGd)`Nr9lnu9ZAY(TUy3hutWV>9^=gEP+<+U-kF$!D4#7w@y_QvZu~thdlI#+?iH(TlyAw<>oX$#lAfOx>72XY zKcIYuWYJ96eRi)gpV+5?S)7x#+44TY__I`y2R&x^N6SNAuX8!QhS4*vYj&0XIhwp* z(zdRe_o=GPPe{8PZ^dZ)`D6LN8%KHAwNQ9Tp0{WoZOl}c&7-D02MPpQHu;aXCmuBn z%uSnNqVMMx4#+*0Ps`k-C<&^tE?lqIx=uv;wNH~{X~1#Fvyr73t{q*j`4)n4S&Pdx z`5?gsDNsff?mkN}dB0@L-wWnPu3_L>_T~DQ>my~<{+L7AUTb@o-6SQzsfn+4cv5wFh70O4 z6C~#sVYlFz9fY#o@DUUzL5un`rdr+(hwI*QO)o1> zkA}|%zu>Z-tlm8u$`Fa*3*J!#F70_@YnIf5JED_r|rzL*`eJS{`?ky}3D2DyfRE zT>1JvuztI}sr}H9Q^mOpSAH-cd}qDMw59XQku5izsQGemby)M#!Ln(tOzCi9)?&YC-p8-? zuqlzxoa*bjs3DWbuW6z2MuYOV9N3&okGa3=F(fYgG^>u~4eVdV(w(d5HJzx9$u}Nb zrnc<|?=Yq$TGK=yQuNAozjP={IF(pX(CgT~~%qOPq zq1SABCQmrINhzaYQC_2MY~v;C`^D^`cRPnZ^DR(aOPIM4(qz@OrDW*mU{)`Cgz!(V zjmiA6zWAO{t|24(L$AGLeey4}QTgdT+RA99ERZ!1`O~=7sWiXh5tI#WSFRa*&-WjV zd)o((YV&g&R_-I~71#~OC#m#9(z2;eyK*gO;oFi!+ryL}UKrO{rTVPe#Ch(5Yc<+# zWZK?*UvxBdvqHUxyZt8hp6o48gtSf#=7=2bH8<;ugmCJ8@xJQILwa1N3DR zZeK;_H^-w+_>^iaTx|o#Mfm;A%`k)L%Bt1Q=WVxy*NwI}b-E5mAG~w$1ix)c__fhc zJnzEQQ3z?Rhak*DF{MjlvbUc3T&ZrA(^8l+SugI5e+27LTGg*xmFf&h!yjboeA%Qu zGCsPY2GY!}@Hu7#`;zed&SK0V?bA>|Px|Z7;bB>ifAOvFi@aTVe{al~+6v~R=f{)r zER5%#(5a<#Jl5!Z*$Ma0q+O5lre`hr_Vx81|6h%9i6oS@ksnzGlCu>X&90;H>B~v( zZQ6eR0fOO%cJ=DYKn%f?<&S9nd|DSai}vBAGWHJcf6|)*yWIyF%eLG11qQuF`ZJa{ z3O1$BqGFbc@NO?3eRbAPFk5VGizN75)>TzW5J1%43U zQ#$ush;{Ib_`Yv_Ykmp*yBdD~9{%yuazb`3BxJvvkjwBp@SkebQKGfK?9fYSl>LwP zEQ2J&&v4;n`t{jwiGiTMZ=m*)=^JkU(Z67a&pS~625TSncb;kr4wrt^=k@zf4VS*b zjwe}r^sl2&_9yahsQgm>flyB({k(s?Js$Jzli_6jsee9ySo06&Uw61~!1FJe{$&2~ z^1x6fm~KactL$uQra&X169!0}F|pO^FYcsY;JAD^#NoBxP=%?eqTdn8vHKW5D%osP<|9o~B#Q7xXve@7CfuSbqlF zo{tybpT~TA9uKxXj`vicsWVajpxp26?oK4^DSBbWb(nr zkJmTU{=7bnSD+^lpN~z7R!{i$L&fNSPzh@FZK(Rte{V2+%llL8@9POA%$MPg_fW_C zm)>9Hqi?``+-iLF#8u~XHRxD>BgJzi79X9dF{k8w*;IxF-G;SoBL%{+Meq7dskCTV zXCV$(+wND;f4>rv&AKyP-*5_LOus;&{mU8mvi@mk?}Vk2;Z(#<+jkkJ{;bcP#QGGE40pMmoE{75!F6FKuzYk|wku*GmDyxVyu1NoA>!~Tp^S6@@XT^gS@ z)3z&X_d7H!Ww_?fvBTjwa=x`^tT|sFduo)|sQ&yy^VK2Y*t@ z`ip{V!O6B%O`ay&kKOC6e}nb67@lY-%Cfx1FyuqKbG1H?;Y55g{Y;MI>*xq1Tt9hz zG#(-UE$>fmq%RoqY3l$FR+W{GQY?ELmJxz^}lt z-TJy~PAs1yvKi&mE@8c>bFlW3q(+$eZSFfSh}X8tD9kN!9Hc(wH}S$p1}WbJAG z`lI^`)?c09yS4eFH*Yl^U3NSgfAfYtkNtMGR^RQ`$>ZkKIimA5!XMKI{Cb=~VGKq- zjm$sf*9d%Fav1RWRtvPZBYzQmmga|`;Vz2%>8sK7vHW57B*+g31esxb`o-hdE}DMG zaC*w)`l(sAV+_N3@mb#Tn!6cJ#1Hd7kvv)d|7|(%FY+Js%Y8aJzdc6gkIu4n<+j@_ zcQP!R-yHR$@fCW8B~cJ@%nVaLN~8Sp@uza2G_HLNf2=+7U92d**xm?JIKqE1;2LMC z-4UA~4zNdYucFu`Q=OCLM{gJA59F7f^{4q_6za6`*~PYo%GO4$9*DvL!?kni&oKW4 z-Omg~VulCf)6>-LrR&35y;koS-zY!T?bqff>(AuFjd}itsvq?Q6{Q>I`|~SYwc2`a z%n&WFi({wa_eZ~mC02P?O9*il<-|n40iRJ^SM6C3-OsDzRV+uHs_gNAE1rt9%2WcBw?;qooV5_^(?ZeXx=8UpPH|dM@S*lo(x6dzSl~ zIzn-oUd8Ytg<@9(yNwJxX?u5hx!v~mvC0pRJ%;|Aovx_)QKs65@&fijzpEyaFOXmS zdS!iiR*^kp8ykN{%H_hMtbcf)jW>ndyC83E4R|-S_b*IeBL0S|f1v#Z{f0dw*GL-w zqWPd`&Jkny7wXVQtOwyhcPGpr${*7Y@$?}7QCwzsvihuGJuZXYfhWR`J5%K^!f%R> z6vBGnFwv!NUh2>|EDd=)lK6IW))ZmdWfK*G$AS zw|_kCJBkebSLmlW1kdTGNcO{3pTmCd!IP=2Qyx|G!Mzatt#QDVr}=qSna=n|49i6% zA5=LkC%tUH!1xh`i<_^B8QOV4&^9A-D5m7M^}`RlA`-T?&N=4|J!rASGJSo*Mk!*P4~O(ZGZf| z?$`&q?d~u97Vr05%i7>PH|5>U``y5I{X*BWyf+L*`A2iM|8~iz6|)OrazlOjWHVX5 z^y!D5&Xvk)5Mw^ATD4cUi=!LA+jfll2jvF$2lRYE^P#s(-A}q|==!472cb@@Z&Lco zu@|cKCs;fzhRcSj6}CSzO!rSxEg|BCim@JL({-R>t&kOD-@G8yEOkO@^e4ld1yC(`Pmb0B> zucmMM{0EA1^1TPEs+-+1IDf^nzV6*wJFBXyKE1!NvS$3sn(?!Do?fzX8fGMlH{+A_XP9q~`eY^geu~XG zbMi+$$Mj2<5hX&sIFHGpenUBq&WG6j)LFXTLvfGfLm}3CkxW|As`3xpJ!PyUcnHk* z_Q~y8I-*ONm6Idtb3CGP%b_{I|E^cRzeXB0S=x8+dt`q>LBY>uWm)bNyHKkr>F-)5 z_>X!OTo3Lsf1%8OxB5V6W7GYu+dn*Bn0FrP!>6DB-NWB6+`D<&x@CE<>~CIDRn@!n z>(a`fG*{iP_G~!Q9ez& z!&j|;UVWchzk;%4hW+2*j zCz|djjlXPs!MXh-vb{Q_xW8WY>P|D%r{%9ztoyv`;YEeHQ0z-!N<%$4vU15PsQ+|- zg7y}c!}>2;p#C>zpnqM(Z%57p>iGkfgUI}k+22}gzFI4e)y{i1Q}vP85B(~S#lx&` ze)g9uzN29y5oe8`r#^4O=bemi7O#O~T2Fl5gztBleWnlF2Lj=Q@8|gTiTn|C`Pc0E zqt-FGD7>=ToR|3|!;%#&>P7AR$Lcw)|JwPE&7T%LuT|rPC@OEk{r!WU%C@PGM%qI@ zeArmoR$Y0il&%NvZ|3HEcDkN-ZhqwSG(mWE*Q^}4Jmq}OiS>azyUIN~mz2~&zBzzj zLgZbAxlrE$Bi{#BEpbD=Ck~+e^pa-rSy^5J`PP`;rk*ElwiX+m-;sRmdV9J$--T%Y zV|&OCdR~Nb&>{(0mh;OCA$!#Qy+F=A^Zw6@iy1bO1GDnLKEsR;9wR?tIWVm6(>j`z z0JAqxev`FNC4cs;aJ?9*cTGKJ{h0E#YwAxj{nj-7IpI$`pJL;)TkW%52S?I+(H-jX zsr6Gm|6@Ik&kwAxSbx>^7LMz^kPpCrY6b2GVLt%;!TKP0oQLMTC4Mdc)x*eVKCI7& z7Bpv7uUfSP<;XX!AK!Glfv<)YZChzQAtM3f`NI`C|0{*SHylPH_O4Ek_ot;u|~vV0z*DU?;9>ZG8nf?8j^9 z`JmJdd|GGX@xX-jqPV3Cp4Y(UI>P6qF6AoKr&IGO9SDreH}(0Fwts6;uC_3FjDMI< z^gICjRYgj#Hos9mL3`erk>bdhdZ=YQqZuY&`4#W$}yk;#5zMc3+0s|FZ1y z<4I)CNM5g9?Aou@J3&9L+?-!a=YOZ)@0TniSL+Y%oQwWexx|LH> zIw42OcWCq5W+LDC;HaYIBN6g<%{g2mFnv0r<{!hu#Rng68o%z&gzGuYk0!sD*{9

R=*#5z$u%?gqhaWGKr;)pA=WnQ8XUIM+;{9V$_(#vYDU@tpFNT7Q>u=@gsS}ZJNRKWF_uHcz)$=9h3(8OLR`(B3&oLhyP%@Z4+MZNv z`}0UWYGnB%Wf0>to{1XYDc1Zw3x4;G=3goiUw&bEgQgGG_qQ=$*?3vJn7zMNoNT<9 zKjF?mhmi=iS+2cWe2f{(avMA=%4k0NPxaYMqgSupRNu?=LHr%Mk)nmgkIx6mT%Ee3 z;tuWnY)unOe)`8RwDlJBom>0lzE4BTh)*82sWJxvHo9{J$Rp3i}jPmBbC@Io>ijrRVTRS ztnyT7`H)Joj_1vfwjZc})c?ML-^a)CcLsvPHlNt|n7_k~hnpW9zqcuz@cBYA|9O9S zoUH#~<>+tNCx2=8eR+R|dpx{898chsS9>0SxFg^Vv;5)P^Zq5p@IK$CD4M>c?T7gO za;W-~jThy9C9K_-!+81qJ;PSNlGz{X_y*gb_lL)W)i>Do7~j4?DB<~o_lL*H?D6e+ zoUA|k*VG-<_~+a6`jTP3KactTgOv}pJ>UPY4JV6lvhni$li_6gcsbSA8Pw{}4dw8B z>sISG?=R+eI2_Q<0a(e);oKHk4%?Rh!c3xzuq&R4!YkB4fX*T-YjA6ArG zeqY1uOe3(x{K!yfQ00H^#Dd%u(f``1aoDpACpS#?#6U#a>w(MnoRpKjzO4 zpd8fQR1RY8wN*s_P1^?ooW4*LUxt^+1F#pbzyEmS<+3jx^X++mZZcl;&0lH{48-R{JPyRfPwg+q@eNN&;`)1G05{X;OJ*;|fAkNU$LaIN z#GCrh$D3;p?#K0)H zktMwgJ~J|s2o9(?m0~~mBkEiW+D518So;j(T2_2p#xrz0pkMurqQ)7K$Hg1E$B&1L zXTTTFPrvpYKYV;)y2@h8t zA=J;X);@Bri}5R&%MJfoZ7yMQf&6$%-X+7G49DgZOpkc}V&((t3xU1Z_91RQfjAT^ z2OQTPn#*Q#rhe2k$)?(G3P|RInxDlPd2EP`O|yDpvXc+wn65YA+y%B>l3@7n)5g5r-hZO~iHH`Bcpein;LwV&;SD zZ~S=p@%6`{xbY+ZqHc2LeOInpnLc{W0d8Jkd@(+%|M=KVFUen%<*%sMIJ59IyW731 zU^?J`-n7VEv+m<8_w}H8w&ZG8#tGygTm-;tn0Ek%@r)zO0WW%}ipB@tl&SFuE0V2Q zUjZaB`v!66FHaxzFn{9b1DF5($Co@F@Y&9bTh8ptqV`~blJVNrc`uw}^D`9BuM&*K z9q`?=ba!*=_GbOWnUA!KCyw4-pxkrjrG0l@w{8sUx4TaiWGD}BIzMBH;ku&y%YOIL zs@3p8>)0arQsmH6A5U8h_Ymo|C-@A4jz8SfL-PSr2R-S58yBw-=;QN0g>0+c3$JO}{1uJ2U$w%uN`~2ZBmTg(4SbDO7vW0@ z&XV$L7rE-+IkYY}`;LO(g~GGTXH31#QaLqT@swr4(d)_#@#yu}y7C?fSFF2qY2(tR z(t+TNCl=&g-kg*D>E|0C#@G6I?fW!b^INzGUgO)~wOw1$MAg1eHb}1eo#TEX;CRvh zR8rND_jLcqzG{5<@p1J$6kk7lGN1o)NF<$C=dG!4RqaFkP4HUsc8^&de@Lrmj2}85 z;LY*o{L^Bw5>#eMnV&Sg{zCCPPnG7tHMAc~ce_qj!Zxe~UUXK6zHm#q`3~eDXC_=L zTR&)-IykrWctIQG8v?-dHx!KVu2HG;w=W3Srl(W@g=4eZv#u)F|HQ6MqTJUP zy>_AIJG_?7fVcED;|r*MS@ui1bLRJ#v=l`!tcPXvH5+2AKfJ$*F#6|%pE!9F*FO|p z4=!hYOy^r%d$5;E&eT5S+WQIS157uVk0Z-)(z1iIs<-Lo5b(a}4WkT>Eg6_Wkwo{>Itk z`Geub=VOdMwcdo{`hz&mKg_>4e`D7F%L(!~u6@7!;LcZ^{@DHcjq(wibNJ^{2xz%sF4r z*$d z$2OjZepn>i_AGW~MvfV?cm>=^`jmL>$2U~e_k-+4{#f1zi8ec z{%*c|)5a>;mP3(ktYpiKNap6|t*p6Q^(Q)wBL4C5@e-S8nAmLA{I{p$u5P4@>H9#M zR=e-aOU?(tUcrg$?sn0yd}bANJS#8$H&k6 zOj`z$w49Djylx0|kw$a-MtiP4$e}uQS8BQU_eaznw4`bDgt92s_qbzosIro)}P#vguz;Vty^_u`n(eu1aI z3wKI;NIG8nU-%xJ{@hC+(xo?Mw7qeAD{Bw-JX>PID($G&m!wt@={@ybj8->k8CO;o5*OS(p(qbYed@P!JCk|u9SFMN9ZFgo$3AkBz z`|0wd6fc}c-mLu%xM>9pSIyl;WOX}c!`}d22-pY}72}zmy4_e-(Q4TO-AYR%f2H+* 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 zcmZo@aCdhM33hYycVJ*(2moP528P){yaR|&0WoPnfkA=cCj$fXe+DLg1VrJ0gomL3 z8z;k`|NjLT1Q=W>^*;|Y!~g&PIT$z?#IPB404T}Az{0={m1N=k02EBnpr+not@!78rbcE-5%qZ+NL;qEyv#M(~#hijeb zAKu|5{N8=<-t+t2bIv_C3OaAz?1G$mi)Tj=LZUt@PmyrZ?57b^Xo%;{UXY8JfeUed zZtfx${^#Mcs0ev=I3e2;2{{JW-8Gi5gun<7+5-iCLH?g`-4;zpLp0% z+Mg7?EcARpoE%3#2#k7&<)L2`g@dEz{+#P0qD_eHsjfN_EAudKyjFpF7O*TN2GqMw zBk9X=1@~JWxyrrl*?-hcN4|-P42d4^wZB>R!9?CFSOWA!?@V>~n96f3@D+f6YHDFx zXYkMGP!GW}K~Bi8b=~D1XETV$DpgxyogZ=guhSMo+N+;@5xYQ@E%f6nYFN=Ls!shi$ zpBnE^))mF}2*}?K8^?qlo~KW31Ah=K54k9nDfg!J|Gw#n+pA5?`nDfOGFJJ8P=be-$U#Jm~-Q=C;mtl^0py z>#;iAOSq43ct5)Z_YsS&;t}d?mu~{66>KLZeZFe0eP34``$<@jy`|UQ(v>QEkpFSe z@1@MPw*t*pz`XSQ@EN;}F{g$vM1OI0QOYDt7=7@RDh}<1@VMvp2%}BR&rD1ZV7*1B z!#QJYR(ygsJ^}2p`2GH>RdclQ%1f6e{v911?LF(XRSAO_*P9-WHxlrB92eDX_=Y#c^u;uvLwa4d-5jNa3 zS$jbbGtQSJZ%GEdt_xN{!csis)oCRELI}T4V-rT zHH@YH8zm)Yw+eEd(2^}-T6}c<&xv+Hi z+7BFH2#`nqm@lE-twW4twDFZ28~%dv1lfgoWX34D)*Is#Y&@(#rK@M9$5*blt;6|B z%;pzAUh(JvB52mY%Y z_9I?T>A=y7rjr%b4gFI5I8K;pYl5+&qY3;G{3lgxq1*V3ea@gBu$hp$)T3ta!9M?0 ziJwSf$l}e9a&bEzV~}s^q)Fn^^bxbJ{}=Rt_rX>%J+{c{Z*IxP`FeZ(!C^$0roVPb zgS{-v-gEww5yNZG!Ipyj6BD7LVRo)c(Ar)`42?;TA7hGHY3o2e0zQ#1o*?lB{=CIZ z2Yj_G;>Kf=J^@jzUoy;C(bWX|wP5y%&ElVm_$OX5=5+)0#zFB>u*N0#35> zNBkHb=kBh4pwmPU25lum|YW=|?9R7gjd_f8H_>5bX<664;e% znrFb~`;v01C&%7D#_8{;BJ>OZneVWocsjnUR^OobToomO)y*l@` zL(p%M@>?|VwrCc88CviEBfjrdnh5X@P1rv;j*BB(O>x~#lD~j^a7nTRh z$a1Lnz#qZCjWFN6+JC>_myvEs9~Scm*c(AwZ(}$haB{NT7S<2({kG@9_}^AQP1J*22NoU{~nU*CTBk{Kp*<|vhL1Wt`rG3Cj zc#OQZ!Ow%+-FXO*@EymbAL1t;?Os;qesPKbVU`GW@A47dP5U!nh&u^k8Kf@9zS)K? z{ZqT6Jy53gwu|Dv97C!8x!6sJxx%&L%8|9t=pEKx0gg2%))F#~Ec`U(B^i_@cue`G zF#VzVACIW96+&g{fo;y^bh^6roekAcS;F|1$&>f&p)KbN7+I*S+<)$Hd+U|+mtUY) zDVCA2eC8fKl+De`06zcKWs_;9;zDvZREj*5S&pu*uJADl`9aj(E{nqUWJX|_x4qf~ z?-!N?e4oq%oV6W_dLE8t4(GwEFiX&S3&$75ApI9&`t=aR@2n~0{>?!d=F7n{))H7# z!evKcS=IvE6mHYK+oiG$(wG2xz%F$=?8EaXldR2!8yo&^f_^x4C^o1suBz;8JjTNN zxUF7%cE`yrotS3PzJb6O25(-Un?l(D9w2kjKTIr|74V-4VIe>xC%tj(y{&1Vp?}r1eztxytrUT35_dY{fF>77PARXcp~rW1x(=9@@re$$&i~?fi$) zvZ4Kh^BE&a-j|r>5F5XTFV2lk4HwRj|6^0b^?g`Ij@(Y83@ji+*wD6s{&hzh{h{|^ zSgEPu6USHKPk|Unp{9l}yd9x&ujtR2zSGR41 z0R3=SR!qIdN7NT558!Do=yJINTJ!taMM|#+!lKsB^IEd#Q_VUV?B;|N8I7!bio4X2 zvHV#aAFIvrZ-3l1P%N)Uw~KN3IXclZw5O#!T>V{`Mplha`Q2&hbi*2rMsVwI?Z%N= z#btS5GP)7&KRTjXp&wiZa6C>%@+8@CK3EklibN5Xkc5knZQRdKLGR=s`Xg)HX`hX` z^-naDTgCD*uP!d1lJT6hy5OCOL+hK-63nCz+f}YXaA~!vpXYvS^ld9PS 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 zcmeHLeNaV4y;Rm=;CXC{fxd()a-qD@3tMMvK{!3t6lM#cgdZim;ZVi)3`S zT^0OhSq5oSP=|fM_|X!Ey0g&Q{XpB9s0&qb$8TrE_1j>j!rgQ3OVHW2v)bC7{lhc7 zJbt-1_nzPHo_p?jPswJ^oN7y)nL5>v5Mn*>WhBS;sV^aBV2Eci2dNeZ=Ga)d-6MLe-V^p9Yv24*>wrkciLMT-V{Q;lPe@@_7 zNyq?Vx!Iv_k}=F1LM#gs!UNvo?SO-zU0D|q=Lh`uCbBb={Z~nF(wjZm83iSQFb@M>vtAzy~(JyXLUhHx;^2^9b z^UT(*t*D5-FaZ5uy;`MOKB=j&Y%C2%EE$Mn7e)NH0FH@MYAJyA9vRE^kPMRa$x?Q- zy+h_NNkpp2ww#TuQ`cjE5#nWKd{<&ZR?uF=WW+kdiz7S{CVS9f#5$d*QjOf+^3s`Y zxm=I#=5A5FC#vH&mB&#Jn++BDai%7gvb4LK)W{zXq31Qm{FLY$oS#!9V#e5l{Jg8D zgHaDkOX;3@O$GVUzw~1I>fLQkEAy_JIp1|oLJr+=AG-&U&Go3MaWHp-q8P^I82El& zwdyldde9d#7NtE4ZhvH2pyqrHQjN4Yw(g_us*M~w0t2OilXhAI&kRh){zRv92%#f~ z96X~5{v*s#>hXAfD0_K7Y3Vb9QJWI04XuUoz`7?5iwg-ghHzY%R!DQE8AH_9u5-Ti zrS+wUR~naxdU5KC74__^5Gzs0{J@tg20Ef~e~Dyx5CeU~iF-vi-Yfb#0owybLe4ts zBD$R$J&2v~yMm-nSbrIdDxGTDQ0JPvnH$@%-J#Qwa7A?l=+%Ym(bLw}#`8ncYCW!> z4Giag7y~s4)oQiCe_3ek@)YF1V#Sr77lr|OV@L{)pO!X{{c6SyjT-*=`lr#xGsTxQ zzIGRFNM*NSHc>;cz0-A^`uOtx7gPH%*8}+a+KZt-`gwk2osLq1_B5K$o~NTK8*$m#*nUOsPpJox%kN`3fY?~49i3)aLe%EJ91fT{FZ5ix@md)EX1Zb@2akGz_b zl3!lI^?>ti^DN-MtbD($&*kP5xs|7L^UFKr{R1-X3bp1oR_eX`shw?e#O$l@0e-T- zCyLw$+da2{pNvyCKSzVNKQH+3tI=Uoy8eZF$nDWV_IgiMb-b+qshtCeb9}<>qdeY$ zqxoTZeqTS4ST-$$k_P!}wUlaw_j5vxW$z#c6QVd}9LRLj=e9TPUVKHz$^v-+aKME9ijhHH_sKIzi@F=3P2>y{>P zeCp3{jvv$#cvwmVeb%$a6?Y251>NZO9Y=vb&fm-Y$vbEDbGC5)W}EGi*Zcc)@O|Hp ztlhlBtB0VZRMdr6m$+X`^64=ynDYnk7y5^7D(FF)ziXLe+$dCA+A_k4I(l;h(P zhWz>Y&Zhs&9ph@~0sg=T67G1l``Pve&^v&*tMzkk^7S!W ztv`AFqizreJx|N?a}wM&+q@$ zT_mmd^@053M|SmLctD^EvZ&0*2eHpDj3=Pihkf5axj$Y7bVNr8zG09}2RGPta&m+J z|6j0Tuq!+K-FGKqSkRFoi5B27GAfQgc41j6jwUZy^kqA+-3&M!A0uzC@$mk3_`+)( zQ`%Ps>EQeC;;R_qnxEx*b4(qKr&S8#qOjJ={jsm}vX_t=ao<$SmX5KlysRgZQ`(mZ zkFg7big_6Zb^DS*t6om1-Pnd{3#@rKNj?&}STy1MR-YQLi26S5TG) zl_jSAjEtg;)`X_=e5fq>vA_I{ORV~mO@ML<=c{oL=dK%ufnpdI-dWY-s$0G z8Kf~@me^AJwz+RTB1qikw6*1bLcK&$P_EHk&B<%>9;4S7yE=FK=`BrIMgU()VplBg zq;?nc9-Hj)Z%5gubbHQmT*R7t{h$5t<RtyspuF@|ZpN}3)BWlYxxkkGJ@we}{KIt3OG)=}U9g z2hz50KA4u94nDujAG!6ueb7NusnGkki()@C4<_jk0Gh2gSlmCB&8w;g^Z=@GpchE9mnZe!7B z@piSFV}m3b$($qlm0~3Jw_B}d#TeIu+L%Riar_{qQaR$|L(RSE3V8Z2W`(SWvQaJl z4_C|85IqIe0m&H=`RlWCwUcADLRk070#Qu;>4xn zyopnro*f@g{?dzvXK2sb4tp&O^_E{WJlwFu{<4X8IW9hN>=2*m`P=KcdES+JF6Jql z`(3N*xf^!4|FY9~m-uOX!sb8x?CNmdch8RJ|Io9mIq%v%v*Y>74(Ba9+z;`IcZna) zf1>B}Ts-d@Js0PFubvD00X=ua4(BgB#F-1vFMfzm^n9N6`o*`-*m~~;;XHY^YhP;D zmMp$?Sn+WF#KlkTapzN8HN!mFe=FJ4VE*(+?Hkoo!|uYS=OjL^{G(sIfB2^7PAZggkEx%3Zn9T>@}-@f|I*qd&cv^ZpNU@v9#cR6ZuI}0dTA1ep2e?=Uj`2S zH`~u{msUHNBlB+(4{=V+U;GW?###AnIkydA?t;&DgLunX{q;wW|3}C9+pZpI5@+HM ziQg@L8F)W3_5x%{FZ=QbqP>Riwze9M0 zp1|S+tlX)_+HLED01iK2#VLN)z8v$)a! z_}MT1uKpZ&Im{j6E?n{a>`w01Xnfbx=XIKMXT;&I30Jwh+&gg!tbMBD2S1qoxO)#i z**VSl{sgaCa8h_b;H-_f&OH>x>bvu+g|`Sc z_45o2$34S^lS*@g+4wnbqhebX1@r7R!dnMB_6UaK9^t}CrR*MGt752STLIKPy-sMm z!p<`=z9_9Z>+MzS^)9Ki-9h*b!H#nT!*S1W;iOXb9CuW)Hx>o+?9IY&3U=%f497jf zg_BCzJ?^ApsO2pJsC#;w&|3>T&%pSiwC1eeu41U=9RjF(Y!}+Ou=5OzFG_2A+(pIS z>5{sSy9!SVc06k^9QOmOTVe z_w*j2DTSS9V0=+pbJkN;47Kow5vY6AFK#Lwg`H<$d{J7{<8&3<(S z;kakGa8fDztoa+0y^Df*wy*F$!HzwG^uYGixQus>^UB&Vl!P*vpPulfM8QU z&%kipGh8^Sl-=V8RSdO!NC0(D9})U+VdohbUzFC&@ema|*d;Z$LxpDrJI)ad$34S^ zlS~kjvo^~GT3pBU^wm>E}T@#p5rG~ z?BhkjJo}XJCxRV&1jBKUaN(p zHt3SNkEaWt8ti!1U^wm>E}T@#KI=18?6XC|JUdJHj9|we!EoFoTsWze-Q(v}47Hps zfV!tI2z|b=^9+nHN^8zKS25IbjsWT&za;d4*m(xV7o{~lep|)9<&wIO-x0nv*zv5vaNILoIH{C<)|aUm zYPnnhbx&6cT~XM12F4eqHFNyFihb85HOC(ae=pc^j$ke2#uueEbNs1_ z{n#Zn$D4(J66`ofFdX*`7fvc=&+%s}hFX3ufV!vELbnulo`La2Y0Vr*RBYHKHOIPe zE!c66U^wm>E}T@#p5rf647J=UfV!vKg>EbCJOks4(waH`O2zJQNzL(2;a>(j&Jhg9 zJ;Q~QO4)O~OT|#j-2$k4x>x9)!p<`=z9_Ak<8M{$*Dk3!-Y5K^c5H#Zb$` z0;qfXlh7XvJI}!QqO@j?kEz%rE~z;_F8pY);~c?o+%sG_sgym(CsYizJSl*>r@sjO zxv=vLj4w)S=J=F~{naHk$ESt=7VJ1jFdX*`7fvc=&T;ns2OZSbenj8=zIlUvz3r8q z+w?b5|CbF-p#89c1q=HI2G3}(+2uv8%WQsc|5gw>Ux=N?MEJUMBiY0 zW#(q1y={jQeTRRW2fpIuW8J=j(N4;T>PVbY0P=%Ip&-+ZjM)TyxQ;8{&WRf z;iY1~*ED8K3`sfm+3(f@jiW5&))Ire!EulA>_^X&7!X^uH* z%-DG;$3E}j)&6vKo_*do%`qp989OiK*ylaG+Mlk@v(Ni_wckAN<<)-koafbk^PK0^ ze)F8?)qeAw=hc4moafbk^PK0^e)F8?)qeAw=hc4moafbk^PK0^e)F8?)qeAw=hc4m zoafbk^PK0^e)F8?)qeAw=hc4moafbk^PK0^e)D2pTl)e1y@wuq;0g2l+8aCN+5Z4? 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 zcmeI2d5~RI5ysyrvI!`tpokk|fGEUd1|mpiE@%K30tf-OXc#hsEFlS#0R#juD!~N- zL6pT62wM`8%u`X4mnVy|semLX%IX4CX;Fn(7Jo?T_dDl(H;1Vdd6TL0N2=_ibH48W z`gGqu=gxaI%(R0Ko!Ze+tLeYmVck=w?W7gs87=7huqC@}dQJmf)YCJmW%rD*iT5bJ zJc*}vW89`4U2q)V@v(W661yRLIeR)T{%~TCIiI~YwEtS|g>mG&pT#|m(5vk5JhH>H zI4=G|VvcX@`Abim9L`&7IG<%&dDffc=e%TxXO$h|@OXCeh;QuqOIpvny!CvGTk{xh zJ)i9Gyt2ddiy!78et7yi{b3V1G!F^(XW=xHi-C)L^ zH*spyv*TmQUv$yRDcZBK!(Q`3y(Jf|T-mb2{<4YpI4(YM>=57B^S9S?^SsOST+CB8 z_q$QobGPhp|7EA~9`V!oMw|cevn#@R-#tB^|3lBN;Jh36OpoU)JDj)da6iN+-XnfE z|BXGL=i+%+>$y1Zd-Yt{59qmDb~u08AUH<1~m?6yF>h zdiRrf_}St3X!Dn}?zZ!n$>#m@{=6H!e~ybE-VMjcn$NpS4ezh_F#Ig={=ApGZ;p#^ zJKVpq=5vSN-PpIgRx68k@YUyT9=N+VR@B?Xb?x00zgztE;#LoV*B&mL^uI@A-;mP= zF2t#e-_0{;z@zHtpPTH}9Diwd_rJ8Zi3{=T;uqrQz@zHt->v?iQ!j1e(6jhW@pItN zf4lwcc4@tfIWqq?@i6Da{Ka1{Zk?6SmUCMl<}Ubb*NeBDHmCXMasTK#f7=zS+QfzU z!{Yafp97DopNrM^!b2u?Z=qh=#J%Fz#cztA1COeovu4j}UVin=?v9gh>1`7i;@8Dr zC4LS(s($`6@0Q-n)c@J)rA@p_{JQu}@pIr&^|NN~-@7(B{G?+3i_KNWL&8s7GO-(f zis8s#m%l08Yb;K$a)vUHqo_tK_e+a@UC$?X!B>ZQ7fhYlLra;hQHPH=JT~Q796sCI_{>c?qx#JC&%(!-E~tJMt_O#oui{icYhMogXa6J5pLt!I zIQ;Ave^-AFyd35ZaTl(5etI`|Yb3tw>GQhHxijK$*M#fbUGAMY71lm=@q-`Ce%!qW zpX{Dwe1C#h&pk1`A8^)0+~gh#hx-l|r^3ozPEGvUb2;~nyD@(Z9>4)_!k5Sq z!vB*&{hjxfLa(UovH;_Y62BLpF{5wRz>L2B{<(AJ&lnn%F*tulf8S7F%a}Ph&_8MB ztiB2J`ub|^kS7eDdQ#s|jsC2z_$mR^{cR?+X=RrM7+;k9{cWj2o4cI8GrwARi(pf` zEWmKwFI+gOv@?Spv{hBCEM6nLb+BW9U^wm%E}T?y_V-#9LM_`0pzh~&Lfch# zS%C3H$$!4vtI+FRPUpFU@Ed|1=Ld%4e&NDNCFlHhRG~Lk#meH%!fy(8><m0cEKd{OeB@7q-fwY)~D7!LM?j;pzh~A zLK7;xEWr4p~fmdp~BOG9p?vz<9^}7NhRm} z4pSl2@=*cQ{Tv~5cx9Ib7+;k9^E*m~rn{Wx_c7rkgB|AwhU0$W!bv6P{648dAFqm) z#ixWn5$xC>7>@gc3n!JF{moDz)beQo)cwp9`b=e)1sGqH{O5bL3Za%h0o47?5;~@` z%L0rqO8)+iRiS>D)BXFb@IbKR`GVoNU$}5m$$7pfsL*j$v9dT(`1oMQ{=jhDA6z)8 zFyAPlZs+$pWbRn=dq2*<}I77bSmxr>fA9%jy1| zCVWb;$%QptI~XQK>#KQJ8k2NzB%Ir}?bg;2{k1W@;Lq0j}DT^3+`QSzVfMJj|^ zzA1pZze|KJuI#b^oYm20NZF7>@ge3n!JF=X;q7p_a=9Q1^4C z&=r+k7GQi)^3U)4D)e2K)BJuQ{Jmhu`GMiMU$}5m$vM9tst{`VkpSv`t`@qgvdaRD zFG~LTU8_RZxSZy9o$$h7$N7QbxL>$%Qpq{L>s1J~+#rCupG879R(4r{@kPl$znfHO zvCCElSb$P`Q0h}%V5X(f#JAcxNuU*IlsG9 z2({cTfV!W1h3={BvH;_Yl7D``RiR(IoaT3*@Na@0=Ld%4e&NDNCFlI^S0U8$fB@=# z9u)drWtRmQUzGgwdq{;=yPW3td*L;~j`IV^)fe^4RR@~{Bve*Pr%$I31X zFuo}H=l7TjJ>qhj-{ZoM20P9V49ES#g_BCo`8}aRsO3ok)cyQL=+Bj17GQi)^3U%n z75b~oX?{-&|1H>YeqcE67cQJsa?Nl0{s$e@(Rswc?15QB1O1(~ojdfmL;sicO`!9z z!MXDW28T}Xtd%;ZzEg(g&Kj6AG%%Q+S^Icm`_y$ZJ35a%>WG1%&f3(?M#kgyj#n$i z=B2(A6UR=~IbPG4a~<<)zq$BF`qG&5%yY~+Y1|yI=6JQ=tNrN;w!%xrey?fFm>80B z?6cpi{pspF``}vA*t+8I>^C>{rFdO&`@F&*Da4SJGt!sFB75z>Be~wot8>j;o4K~8 zIcdz;c`3&}*YIk8x;oE3@0;eBlg5mlmvZd$9$xKFSLfO1ebXFs(wMRHQjUGz!>j%2 z>OA|rZ<=FH8Z&lY%CXOTc(p%WooAo-^=iL)-pi}~<~h%+{pLB(tNrFV&#V3BInS&8 z<~h%+{pLB(tNrFV&#V3BInS&8<~h%+{pLB(tNrFV&#V3BInS&8<~h%+{pLB(tNrFV r&#V3BInS&8<~h%+{pLB(tNrH1ypGNT=JX$W?19J69_VcCR2KgOaI0m1 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 fda4f60a9e9513b4db34b95e2998d8e7ab8482da Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 13 Apr 2015 22:19:38 -0500 Subject: [PATCH 0002/1101] House UserAction Prototype --- addons/interact_menu/XEH_clientInit.sqf | 3 + addons/interact_menu/XEH_preInit.sqf | 1 + .../functions/fnc_addHouseActions.sqf | 119 ++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 addons/interact_menu/functions/fnc_addHouseActions.sqf diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index bcb2d5aa8e..60fce6f4da 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -6,6 +6,9 @@ if (!hasInterface) exitWith {}; // Install the render EH on the main display addMissionEventHandler ["Draw3D", DFUNC(render)]; +//Add Actions to Houses: +["interactMenuOpened", {_this call FUNC(addHouseActions)}] call EFUNC(common,addEventHandler); + // This spawn is probably worth keeping, as pfh don't work natively on the briefing screen and IDK how reliable the hack we implemented for them is. // The thread dies as soon as the mission start, so it's not really compiting for scheduler space. [] spawn { diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index c15f8d388d..dc9b539e6f 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -4,6 +4,7 @@ ADDON = false; PREP(addActionToClass); PREP(addActionToObject); +PREP(addHouseActions); PREP(compileMenu); PREP(compileMenuSelfAction); PREP(collectActiveActionTree); diff --git a/addons/interact_menu/functions/fnc_addHouseActions.sqf b/addons/interact_menu/functions/fnc_addHouseActions.sqf new file mode 100644 index 0000000000..eff00fd90b --- /dev/null +++ b/addons/interact_menu/functions/fnc_addHouseActions.sqf @@ -0,0 +1,119 @@ +/* + * Author: PabstMirror + * When interact_menu starts rendering (from "interact_keyDown" event) + * + * Arguments: + * Interact Menu Type (0 - world, 1 - self) + * + * Return Value: + * Nothing + * + * Example: + * [0] call ace_logistics_wirecutter_fnc_interactEH + * + * Public: Yes + */ +#include "script_component.hpp" + +PARAMS_1(_interactionType); + +//Ignore self-interaction menu +if (_interactionType != 0) exitWith {}; + +//for performance only do stuff it they have a wirecutter item +//(if they somehow get one durring keydown they'll just have to reopen) +// if (!("ACE_wirecutter" in (items ace_player))) exitWith {}; + +systemChat "starting"; + +[{ + private ["_fncStatement", "_attachedFence", "_fncCondition", "_helper"]; + PARAMS_2(_args,_pfID); + EXPLODE_3_PVT(_args,_setPosition,_addedHelpers,_housesScaned); + + if (!EGVAR(interact_menu,keyDown)) then { + {deleteVehicle _x;} forEach _addedHelpers; + [_pfID] call CBA_fnc_removePerFrameHandler; + } else { + // 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) exitWith {}; + + _fncStatement = { + PARAMS_3(_dummyTarget,_player,_attachedFence); + [_player, _attachedFence] call FUNC(cutDownFence); + }; + _fncCondition = { + PARAMS_3(_dummyTarget,_player,_attachedFence); + ((!isNull _attachedFence) && {(damage _attachedFence) < 1} && {("ACE_wirecutter" in (items _player))}) + }; + + + { + _theHouse = _x; + if (!(_theHouse in _housesScaned)) then { + _housesScaned pushBack _x; + if ((typeOf _theHouse) != "") then { + _configPath = (configFile >> "CfgVehicles" >> (typeOf _theHouse)); + if (isClass (_configPath >> "UserActions")) then { + _houseHelpers = []; + + + systemChat format ["Looking At %1 [%2]", _theHouse, (typeOf _theHouse)]; + { + _displayName = getText (_x >> "displayName"); + _position = getText (_x >> "position"); + _condition = getText (_x >> "condition"); + _statement = getText (_x >> "statement"); + + _helperObject = objNull; + _actionOffset = [0,0,0]; + { + EXPLODE_3_PVT(_x,_memPoint,_object,_count); + if (_memPoint == _position) exitWith { + _helperObject = _object; + _offset = [0,0,(_count * 0.1)]; + _x set [2, (_count + 1)]; + }; + } forEach _houseHelpers; + + if (isNull _helperObject) then { + _helperObject = "Sign_Sphere25cm_F" createVehicleLocal (getpos _theHouse); + _houseHelpers pushBack [_position, _helperObject, 1]; + _helperPos = _theHouse modelToWorld (_theHouse selectionPosition _position); + //double check ASL/ATL bullshit + _helperObject setPos _helperPos; + _helperObject hideObject true; + _addedHelpers pushBack _helperObject; + diag_log text format ["Making New Helper %1", [_helperObject, _helperPos, _theHouse]]; + }; + + _fncStatement = { + PARAMS_3(_target,_player,_variable); + EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); + this = _theHouse; //this feels dirty + call _statement; + }; + _fncCondition = { + PARAMS_3(_target,_player,_variable); + EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); + this = _theHouse; //this feels dirty + call _condition; + }; + + _variable = [_theHouse, compile _statement, compile _condition]; + + _action = [(configName _x), _displayName, "", _fncStatement, _fncCondition, {}, _variable, _actionOffset, 5] call EFUNC(interact_menu,createAction); + [_helperObject, 0, [],_action] call EFUNC(interact_menu,addActionToObject); + + } foreach configproperties [(_configPath >> "UserActions")]; + }; + }; + }; + } forEach nearestObjects [ace_player, ["Static"], 25]; + + _args set [0, (getPosASL ace_player)]; + }; +}, 0.1, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], []]] call CBA_fnc_addPerFrameHandler; From e84c5f4bb33718b507ae7c54414120ad9f1dc0e0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 13 Apr 2015 22:26:38 -0500 Subject: [PATCH 0003/1101] Radius Distance --- .../functions/fnc_addHouseActions.sqf | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/addons/interact_menu/functions/fnc_addHouseActions.sqf b/addons/interact_menu/functions/fnc_addHouseActions.sqf index eff00fd90b..ec596eb5e6 100644 --- a/addons/interact_menu/functions/fnc_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_addHouseActions.sqf @@ -61,13 +61,22 @@ systemChat "starting"; _houseHelpers = []; - systemChat format ["Looking At %1 [%2]", _theHouse, (typeOf _theHouse)]; + // systemChat format ["Looking At %1 [%2]", _theHouse, (typeOf _theHouse)]; { _displayName = getText (_x >> "displayName"); _position = getText (_x >> "position"); _condition = getText (_x >> "condition"); _statement = getText (_x >> "statement"); + _maxDistance = getNumber (_x >> "radius"); + if (_displayName == "") then {_displayName = (configName _x);}; + // if (_position == "") then {_condition = "true";}; //???? + if (_condition == "") then {_condition = "true";}; + // if (_statement == "") then {_condition = "true";}; + // if (_maxDistance < 0.1) then {_condition = "true";}; + + _maxDistance = _maxDistance + 0.25; //fudge it up a little + _helperObject = objNull; _actionOffset = [0,0,0]; { @@ -87,7 +96,7 @@ systemChat "starting"; _helperObject setPos _helperPos; _helperObject hideObject true; _addedHelpers pushBack _helperObject; - diag_log text format ["Making New Helper %1", [_helperObject, _helperPos, _theHouse]]; + // diag_log text format ["Making New Helper %1", [_helperObject, _helperPos, _theHouse]]; }; _fncStatement = { @@ -105,7 +114,7 @@ systemChat "starting"; _variable = [_theHouse, compile _statement, compile _condition]; - _action = [(configName _x), _displayName, "", _fncStatement, _fncCondition, {}, _variable, _actionOffset, 5] call EFUNC(interact_menu,createAction); + _action = [(configName _x), _displayName, "", _fncStatement, _fncCondition, {}, _variable, _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); [_helperObject, 0, [],_action] call EFUNC(interact_menu,addActionToObject); } foreach configproperties [(_configPath >> "UserActions")]; From 5c994765ef0c820fca7285c8944c53b06a607105 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 13 Apr 2015 22:39:00 -0500 Subject: [PATCH 0004/1101] Cleanup --- .../functions/fnc_addHouseActions.sqf | 66 ++++++++----------- 1 file changed, 26 insertions(+), 40 deletions(-) diff --git a/addons/interact_menu/functions/fnc_addHouseActions.sqf b/addons/interact_menu/functions/fnc_addHouseActions.sqf index ec596eb5e6..95037ae21b 100644 --- a/addons/interact_menu/functions/fnc_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_addHouseActions.sqf @@ -9,7 +9,7 @@ * Nothing * * Example: - * [0] call ace_logistics_wirecutter_fnc_interactEH + * [0] call ace_interact_menu_fnc_addHouseActions * * Public: Yes */ @@ -17,17 +17,13 @@ PARAMS_1(_interactionType); -//Ignore self-interaction menu +//Ignore self-interaction menu: if (_interactionType != 0) exitWith {}; - -//for performance only do stuff it they have a wirecutter item -//(if they somehow get one durring keydown they'll just have to reopen) -// if (!("ACE_wirecutter" in (items ace_player))) exitWith {}; - -systemChat "starting"; +//Ignore when mounted: +if ((vehicle ACE_player) != ACE_player) exitWith {}; [{ - private ["_fncStatement", "_attachedFence", "_fncCondition", "_helper"]; + private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_houseHelpers", "_displayName", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; PARAMS_2(_args,_pfID); EXPLODE_3_PVT(_args,_setPosition,_addedHelpers,_housesScaned); @@ -42,15 +38,18 @@ systemChat "starting"; if (((getPosASL ace_player) distance _setPosition) < 5) exitWith {}; _fncStatement = { - PARAMS_3(_dummyTarget,_player,_attachedFence); - [_player, _attachedFence] call FUNC(cutDownFence); + PARAMS_3(_target,_player,_variable); + EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); + this = _theHouse; //this feels dirty + call _statement; }; _fncCondition = { - PARAMS_3(_dummyTarget,_player,_attachedFence); - ((!isNull _attachedFence) && {(damage _attachedFence) < 1} && {("ACE_wirecutter" in (items _player))}) + PARAMS_3(_target,_player,_variable); + EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); + this = _theHouse; //this feels dirty + call _condition; }; - { _theHouse = _x; if (!(_theHouse in _housesScaned)) then { @@ -60,8 +59,6 @@ systemChat "starting"; if (isClass (_configPath >> "UserActions")) then { _houseHelpers = []; - - // systemChat format ["Looking At %1 [%2]", _theHouse, (typeOf _theHouse)]; { _displayName = getText (_x >> "displayName"); _position = getText (_x >> "position"); @@ -70,20 +67,23 @@ systemChat "starting"; _maxDistance = getNumber (_x >> "radius"); if (_displayName == "") then {_displayName = (configName _x);}; - // if (_position == "") then {_condition = "true";}; //???? + if (_position == "") then {ERROR("Bad Position");}; if (_condition == "") then {_condition = "true";}; - // if (_statement == "") then {_condition = "true";}; - // if (_maxDistance < 0.1) then {_condition = "true";}; + if (_statement == "") then {ERROR("No Statement");}; - _maxDistance = _maxDistance + 0.25; //fudge it up a little - + _statement = compile _statement; + _condition = compile _condition; + _maxDistance = _maxDistance + 1; //increase range slightly + + //Find a helper object, if one exists on the selection position _helperObject = objNull; _actionOffset = [0,0,0]; { EXPLODE_3_PVT(_x,_memPoint,_object,_count); if (_memPoint == _position) exitWith { _helperObject = _object; - _offset = [0,0,(_count * 0.1)]; + //make sure actions dont' overlap (although they are usualy mutually exclusive) + _actionOffset = [0,0,(_count * 0.1)]; _x set [2, (_count + 1)]; }; } forEach _houseHelpers; @@ -96,32 +96,18 @@ systemChat "starting"; _helperObject setPos _helperPos; _helperObject hideObject true; _addedHelpers pushBack _helperObject; - // diag_log text format ["Making New Helper %1", [_helperObject, _helperPos, _theHouse]]; + TRACE_3("Making New Helper %1",_helperObject,_helperPos,_theHouse); }; - _fncStatement = { - PARAMS_3(_target,_player,_variable); - EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); - this = _theHouse; //this feels dirty - call _statement; - }; - _fncCondition = { - PARAMS_3(_target,_player,_variable); - EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); - this = _theHouse; //this feels dirty - call _condition; - }; - - _variable = [_theHouse, compile _statement, compile _condition]; - - _action = [(configName _x), _displayName, "", _fncStatement, _fncCondition, {}, _variable, _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); + _action = [(configName _x), _displayName, "", _fncStatement, _fncCondition, {}, [_theHouse, _statement, _condition], _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); [_helperObject, 0, [],_action] call EFUNC(interact_menu,addActionToObject); } foreach configproperties [(_configPath >> "UserActions")]; }; }; }; - } forEach nearestObjects [ace_player, ["Static"], 25]; + //Need to scan fairly far, because houses are big. You can be 25m from center of building but right next to a door. + } forEach nearestObjects [ace_player, ["Static"], 30]; _args set [0, (getPosASL ace_player)]; }; From c6b4a57ee2d938f9bee2e1a39a2bc54bd93a0a91 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 13 Apr 2015 23:11:18 -0500 Subject: [PATCH 0005/1101] Pull Icon from config --- .../functions/fnc_addHouseActions.sqf | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/addons/interact_menu/functions/fnc_addHouseActions.sqf b/addons/interact_menu/functions/fnc_addHouseActions.sqf index 95037ae21b..9d3bc1bfc6 100644 --- a/addons/interact_menu/functions/fnc_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_addHouseActions.sqf @@ -1,6 +1,7 @@ /* * Author: PabstMirror - * When interact_menu starts rendering (from "interact_keyDown" event) + * Scans for nearby "Static" objects (buildings) and adds the UserActions to them. + * Called when interact_menu starts rendering (from "interact_keyDown" event) * * Arguments: * Interact Menu Type (0 - world, 1 - self) @@ -23,7 +24,7 @@ if (_interactionType != 0) exitWith {}; if ((vehicle ACE_player) != ACE_player) exitWith {}; [{ - private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_houseHelpers", "_displayName", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; + private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_houseHelpers", "_displayName", "_displayNameDefault", "_iconImage", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; PARAMS_2(_args,_pfID); EXPLODE_3_PVT(_args,_setPosition,_addedHelpers,_housesScaned); @@ -61,6 +62,7 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; { _displayName = getText (_x >> "displayName"); + _displayNameDefault = getText (_x >> "displayNameDefault"); _position = getText (_x >> "position"); _condition = getText (_x >> "condition"); _statement = getText (_x >> "statement"); @@ -73,7 +75,26 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; _statement = compile _statement; _condition = compile _condition; - _maxDistance = _maxDistance + 1; //increase range slightly + _maxDistance = _maxDistance + 0.1; //increase range slightly + _iconImage = ""; + + if (_displayNameDefault != "") then { + //something like: ""; + + //find the end [.paa'] + _endIndex = _displayNameDefault find ".paa'"; + if (_endIndex == -1) exitWith {}; + _startIndex = _endIndex - 1; + _endIndex = _endIndex + 4; + //work backwards to find the starting ['] + while {(_startIndex > 0) && {_iconImage == ""}} do { + if ((_displayNameDefault select [_startIndex, 1]) == "'") then { + _startIndex = _startIndex + 1; + _iconImage = _displayNameDefault select [_startIndex, (_endIndex - _startIndex)]; + }; + _startIndex = _startIndex - 1; + }; + }; //Find a helper object, if one exists on the selection position _helperObject = objNull; @@ -82,7 +103,7 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; EXPLODE_3_PVT(_x,_memPoint,_object,_count); if (_memPoint == _position) exitWith { _helperObject = _object; - //make sure actions dont' overlap (although they are usualy mutually exclusive) + //make sure actions don't overlap (although they are usualy mutually exclusive) _actionOffset = [0,0,(_count * 0.1)]; _x set [2, (_count + 1)]; }; @@ -99,7 +120,7 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; TRACE_3("Making New Helper %1",_helperObject,_helperPos,_theHouse); }; - _action = [(configName _x), _displayName, "", _fncStatement, _fncCondition, {}, [_theHouse, _statement, _condition], _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); + _action = [(configName _x), _displayName, _iconImage, _fncStatement, _fncCondition, {}, [_theHouse, _statement, _condition], _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); [_helperObject, 0, [],_action] call EFUNC(interact_menu,addActionToObject); } foreach configproperties [(_configPath >> "UserActions")]; From 85beb72a3a6700a6d0cae67f4b0adcaaf1e169f0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 13 Apr 2015 23:27:03 -0500 Subject: [PATCH 0006/1101] ASL Stuff --- addons/interact_menu/functions/fnc_addHouseActions.sqf | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/interact_menu/functions/fnc_addHouseActions.sqf b/addons/interact_menu/functions/fnc_addHouseActions.sqf index 9d3bc1bfc6..1ed4eddedf 100644 --- a/addons/interact_menu/functions/fnc_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_addHouseActions.sqf @@ -104,7 +104,7 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; if (_memPoint == _position) exitWith { _helperObject = _object; //make sure actions don't overlap (although they are usualy mutually exclusive) - _actionOffset = [0,0,(_count * 0.1)]; + _actionOffset = [0,0,(_count * 0.05)]; _x set [2, (_count + 1)]; }; } forEach _houseHelpers; @@ -113,8 +113,12 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; _helperObject = "Sign_Sphere25cm_F" createVehicleLocal (getpos _theHouse); _houseHelpers pushBack [_position, _helperObject, 1]; _helperPos = _theHouse modelToWorld (_theHouse selectionPosition _position); - //double check ASL/ATL bullshit - _helperObject setPos _helperPos; + //ASL/ATL bullshit: + if (surfaceIsWater _helperPos) then { + _helperObject setPosAslw _helperPos; + } else { + _helperObject setPos _helperPos; + }; _helperObject hideObject true; _addedHelpers pushBack _helperObject; TRACE_3("Making New Helper %1",_helperObject,_helperPos,_theHouse); From 14579fb90ea12a09afcd5759a9649fd435cb2fda Mon Sep 17 00:00:00 2001 From: Nou Date: Tue, 14 Apr 2015 00:41:19 -0700 Subject: [PATCH 0007/1101] Explosive reflection, enabled on all frag rounds. --- addons/frag/CfgAmmo.hpp | 3 + addons/frag/CfgAmmoReflections.hpp | 2523 +++++++++++++++++ addons/frag/XEH_pre_Init.sqf | 4 + addons/frag/functions/fnc_doExplosions.sqf | 26 + addons/frag/functions/fnc_doReflections.sqf | 22 + addons/frag/functions/fnc_findReflections.sqf | 130 + addons/frag/functions/fnc_frago.sqf | 6 +- 7 files changed, 2712 insertions(+), 2 deletions(-) create mode 100644 addons/frag/CfgAmmoReflections.hpp create mode 100644 addons/frag/functions/fnc_doExplosions.sqf create mode 100644 addons/frag/functions/fnc_doReflections.sqf create mode 100644 addons/frag/functions/fnc_findReflections.sqf diff --git a/addons/frag/CfgAmmo.hpp b/addons/frag/CfgAmmo.hpp index 8ad76e6ae8..8d965e8d2e 100644 --- a/addons/frag/CfgAmmo.hpp +++ b/addons/frag/CfgAmmo.hpp @@ -8,6 +8,9 @@ class CfgAmmo { //class ace_arty_105mm_m1_m782_delay: ace_arty_105mm_m1_m782_prox { // ACE_FRAG_SKIP = 1; //}; + + #include "CfgAmmoReflections.hpp" + class Bo_GBU12_LGB; class Nou_GBU12 : Bo_GBU12_LGB { ACE_FRAG_CLASSES[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; diff --git a/addons/frag/CfgAmmoReflections.hpp b/addons/frag/CfgAmmoReflections.hpp new file mode 100644 index 0000000000..8e481a9cd0 --- /dev/null +++ b/addons/frag/CfgAmmoReflections.hpp @@ -0,0 +1,2523 @@ +//CfgAmmoReflections.hpp + +#define ACE_EXPLOSION_REFLECTION(range, hit) class ace_explosion_reflection_##range##_##hit : ace_explosion_reflection_base { indirectHitRange = range; indirectHit = hit; dangerRadiusHit = range*3; suppressionRadiusHit = range*2; }; +class Sh_120mm_HE; +class ace_explosion_reflection_base : Sh_120mm_HE { + CraterWaterEffects = ""; + CraterEffects = ""; + effectsMissile = ""; + ExplosionEffects = ""; + effectFlare = ""; + class HitEffects { + hitWater = ""; + }; + multiSoundHit[] = {}; + explosionTime = 0.0001; + explosive = 1; + soundFakeFall[] = {}; + typicalSpeed = 0; + model = "\A3\Weapons_F\empty.p3d"; + craterShape = "\A3\weapons_f\empty.p3d"; +}; + +ACE_EXPLOSION_REFLECTION(2,10); +ACE_EXPLOSION_REFLECTION(2,20); +ACE_EXPLOSION_REFLECTION(2,30); +ACE_EXPLOSION_REFLECTION(2,40); +ACE_EXPLOSION_REFLECTION(2,50); +ACE_EXPLOSION_REFLECTION(2,60); +ACE_EXPLOSION_REFLECTION(2,70); +ACE_EXPLOSION_REFLECTION(2,80); +ACE_EXPLOSION_REFLECTION(2,90); +ACE_EXPLOSION_REFLECTION(2,100); +ACE_EXPLOSION_REFLECTION(2,110); +ACE_EXPLOSION_REFLECTION(2,120); +ACE_EXPLOSION_REFLECTION(2,130); +ACE_EXPLOSION_REFLECTION(2,140); +ACE_EXPLOSION_REFLECTION(2,150); +ACE_EXPLOSION_REFLECTION(2,160); +ACE_EXPLOSION_REFLECTION(2,170); +ACE_EXPLOSION_REFLECTION(2,180); +ACE_EXPLOSION_REFLECTION(2,190); +ACE_EXPLOSION_REFLECTION(2,200); +ACE_EXPLOSION_REFLECTION(2,210); +ACE_EXPLOSION_REFLECTION(2,220); +ACE_EXPLOSION_REFLECTION(2,230); +ACE_EXPLOSION_REFLECTION(2,240); +ACE_EXPLOSION_REFLECTION(2,250); +ACE_EXPLOSION_REFLECTION(2,260); +ACE_EXPLOSION_REFLECTION(2,270); +ACE_EXPLOSION_REFLECTION(2,280); +ACE_EXPLOSION_REFLECTION(2,290); +ACE_EXPLOSION_REFLECTION(2,300); +ACE_EXPLOSION_REFLECTION(2,310); +ACE_EXPLOSION_REFLECTION(2,320); +ACE_EXPLOSION_REFLECTION(2,330); +ACE_EXPLOSION_REFLECTION(2,340); +ACE_EXPLOSION_REFLECTION(2,350); +ACE_EXPLOSION_REFLECTION(2,360); +ACE_EXPLOSION_REFLECTION(2,370); +ACE_EXPLOSION_REFLECTION(2,380); +ACE_EXPLOSION_REFLECTION(2,390); +ACE_EXPLOSION_REFLECTION(2,400); +ACE_EXPLOSION_REFLECTION(2,410); +ACE_EXPLOSION_REFLECTION(2,420); +ACE_EXPLOSION_REFLECTION(2,430); +ACE_EXPLOSION_REFLECTION(2,440); +ACE_EXPLOSION_REFLECTION(2,450); +ACE_EXPLOSION_REFLECTION(2,460); +ACE_EXPLOSION_REFLECTION(2,470); +ACE_EXPLOSION_REFLECTION(2,480); +ACE_EXPLOSION_REFLECTION(2,490); +ACE_EXPLOSION_REFLECTION(2,500); +ACE_EXPLOSION_REFLECTION(4,10); +ACE_EXPLOSION_REFLECTION(4,20); +ACE_EXPLOSION_REFLECTION(4,30); +ACE_EXPLOSION_REFLECTION(4,40); +ACE_EXPLOSION_REFLECTION(4,50); +ACE_EXPLOSION_REFLECTION(4,60); +ACE_EXPLOSION_REFLECTION(4,70); +ACE_EXPLOSION_REFLECTION(4,80); +ACE_EXPLOSION_REFLECTION(4,90); +ACE_EXPLOSION_REFLECTION(4,100); +ACE_EXPLOSION_REFLECTION(4,110); +ACE_EXPLOSION_REFLECTION(4,120); +ACE_EXPLOSION_REFLECTION(4,130); +ACE_EXPLOSION_REFLECTION(4,140); +ACE_EXPLOSION_REFLECTION(4,150); +ACE_EXPLOSION_REFLECTION(4,160); +ACE_EXPLOSION_REFLECTION(4,170); +ACE_EXPLOSION_REFLECTION(4,180); +ACE_EXPLOSION_REFLECTION(4,190); +ACE_EXPLOSION_REFLECTION(4,200); +ACE_EXPLOSION_REFLECTION(4,210); +ACE_EXPLOSION_REFLECTION(4,220); +ACE_EXPLOSION_REFLECTION(4,230); +ACE_EXPLOSION_REFLECTION(4,240); +ACE_EXPLOSION_REFLECTION(4,250); +ACE_EXPLOSION_REFLECTION(4,260); +ACE_EXPLOSION_REFLECTION(4,270); +ACE_EXPLOSION_REFLECTION(4,280); +ACE_EXPLOSION_REFLECTION(4,290); +ACE_EXPLOSION_REFLECTION(4,300); +ACE_EXPLOSION_REFLECTION(4,310); +ACE_EXPLOSION_REFLECTION(4,320); +ACE_EXPLOSION_REFLECTION(4,330); +ACE_EXPLOSION_REFLECTION(4,340); +ACE_EXPLOSION_REFLECTION(4,350); +ACE_EXPLOSION_REFLECTION(4,360); +ACE_EXPLOSION_REFLECTION(4,370); +ACE_EXPLOSION_REFLECTION(4,380); +ACE_EXPLOSION_REFLECTION(4,390); +ACE_EXPLOSION_REFLECTION(4,400); +ACE_EXPLOSION_REFLECTION(4,410); +ACE_EXPLOSION_REFLECTION(4,420); +ACE_EXPLOSION_REFLECTION(4,430); +ACE_EXPLOSION_REFLECTION(4,440); +ACE_EXPLOSION_REFLECTION(4,450); +ACE_EXPLOSION_REFLECTION(4,460); +ACE_EXPLOSION_REFLECTION(4,470); +ACE_EXPLOSION_REFLECTION(4,480); +ACE_EXPLOSION_REFLECTION(4,490); +ACE_EXPLOSION_REFLECTION(4,500); +ACE_EXPLOSION_REFLECTION(6,10); +ACE_EXPLOSION_REFLECTION(6,20); +ACE_EXPLOSION_REFLECTION(6,30); +ACE_EXPLOSION_REFLECTION(6,40); +ACE_EXPLOSION_REFLECTION(6,50); +ACE_EXPLOSION_REFLECTION(6,60); +ACE_EXPLOSION_REFLECTION(6,70); +ACE_EXPLOSION_REFLECTION(6,80); +ACE_EXPLOSION_REFLECTION(6,90); +ACE_EXPLOSION_REFLECTION(6,100); +ACE_EXPLOSION_REFLECTION(6,110); +ACE_EXPLOSION_REFLECTION(6,120); +ACE_EXPLOSION_REFLECTION(6,130); +ACE_EXPLOSION_REFLECTION(6,140); +ACE_EXPLOSION_REFLECTION(6,150); +ACE_EXPLOSION_REFLECTION(6,160); +ACE_EXPLOSION_REFLECTION(6,170); +ACE_EXPLOSION_REFLECTION(6,180); +ACE_EXPLOSION_REFLECTION(6,190); +ACE_EXPLOSION_REFLECTION(6,200); +ACE_EXPLOSION_REFLECTION(6,210); +ACE_EXPLOSION_REFLECTION(6,220); +ACE_EXPLOSION_REFLECTION(6,230); +ACE_EXPLOSION_REFLECTION(6,240); +ACE_EXPLOSION_REFLECTION(6,250); +ACE_EXPLOSION_REFLECTION(6,260); +ACE_EXPLOSION_REFLECTION(6,270); +ACE_EXPLOSION_REFLECTION(6,280); +ACE_EXPLOSION_REFLECTION(6,290); +ACE_EXPLOSION_REFLECTION(6,300); +ACE_EXPLOSION_REFLECTION(6,310); +ACE_EXPLOSION_REFLECTION(6,320); +ACE_EXPLOSION_REFLECTION(6,330); +ACE_EXPLOSION_REFLECTION(6,340); +ACE_EXPLOSION_REFLECTION(6,350); +ACE_EXPLOSION_REFLECTION(6,360); +ACE_EXPLOSION_REFLECTION(6,370); +ACE_EXPLOSION_REFLECTION(6,380); +ACE_EXPLOSION_REFLECTION(6,390); +ACE_EXPLOSION_REFLECTION(6,400); +ACE_EXPLOSION_REFLECTION(6,410); +ACE_EXPLOSION_REFLECTION(6,420); +ACE_EXPLOSION_REFLECTION(6,430); +ACE_EXPLOSION_REFLECTION(6,440); +ACE_EXPLOSION_REFLECTION(6,450); +ACE_EXPLOSION_REFLECTION(6,460); +ACE_EXPLOSION_REFLECTION(6,470); +ACE_EXPLOSION_REFLECTION(6,480); +ACE_EXPLOSION_REFLECTION(6,490); +ACE_EXPLOSION_REFLECTION(6,500); +ACE_EXPLOSION_REFLECTION(8,10); +ACE_EXPLOSION_REFLECTION(8,20); +ACE_EXPLOSION_REFLECTION(8,30); +ACE_EXPLOSION_REFLECTION(8,40); +ACE_EXPLOSION_REFLECTION(8,50); +ACE_EXPLOSION_REFLECTION(8,60); +ACE_EXPLOSION_REFLECTION(8,70); +ACE_EXPLOSION_REFLECTION(8,80); +ACE_EXPLOSION_REFLECTION(8,90); +ACE_EXPLOSION_REFLECTION(8,100); +ACE_EXPLOSION_REFLECTION(8,110); +ACE_EXPLOSION_REFLECTION(8,120); +ACE_EXPLOSION_REFLECTION(8,130); +ACE_EXPLOSION_REFLECTION(8,140); +ACE_EXPLOSION_REFLECTION(8,150); +ACE_EXPLOSION_REFLECTION(8,160); +ACE_EXPLOSION_REFLECTION(8,170); +ACE_EXPLOSION_REFLECTION(8,180); +ACE_EXPLOSION_REFLECTION(8,190); +ACE_EXPLOSION_REFLECTION(8,200); +ACE_EXPLOSION_REFLECTION(8,210); +ACE_EXPLOSION_REFLECTION(8,220); +ACE_EXPLOSION_REFLECTION(8,230); +ACE_EXPLOSION_REFLECTION(8,240); +ACE_EXPLOSION_REFLECTION(8,250); +ACE_EXPLOSION_REFLECTION(8,260); +ACE_EXPLOSION_REFLECTION(8,270); +ACE_EXPLOSION_REFLECTION(8,280); +ACE_EXPLOSION_REFLECTION(8,290); +ACE_EXPLOSION_REFLECTION(8,300); +ACE_EXPLOSION_REFLECTION(8,310); +ACE_EXPLOSION_REFLECTION(8,320); +ACE_EXPLOSION_REFLECTION(8,330); +ACE_EXPLOSION_REFLECTION(8,340); +ACE_EXPLOSION_REFLECTION(8,350); +ACE_EXPLOSION_REFLECTION(8,360); +ACE_EXPLOSION_REFLECTION(8,370); +ACE_EXPLOSION_REFLECTION(8,380); +ACE_EXPLOSION_REFLECTION(8,390); +ACE_EXPLOSION_REFLECTION(8,400); +ACE_EXPLOSION_REFLECTION(8,410); +ACE_EXPLOSION_REFLECTION(8,420); +ACE_EXPLOSION_REFLECTION(8,430); +ACE_EXPLOSION_REFLECTION(8,440); +ACE_EXPLOSION_REFLECTION(8,450); +ACE_EXPLOSION_REFLECTION(8,460); +ACE_EXPLOSION_REFLECTION(8,470); +ACE_EXPLOSION_REFLECTION(8,480); +ACE_EXPLOSION_REFLECTION(8,490); +ACE_EXPLOSION_REFLECTION(8,500); +ACE_EXPLOSION_REFLECTION(10,10); +ACE_EXPLOSION_REFLECTION(10,20); +ACE_EXPLOSION_REFLECTION(10,30); +ACE_EXPLOSION_REFLECTION(10,40); +ACE_EXPLOSION_REFLECTION(10,50); +ACE_EXPLOSION_REFLECTION(10,60); +ACE_EXPLOSION_REFLECTION(10,70); +ACE_EXPLOSION_REFLECTION(10,80); +ACE_EXPLOSION_REFLECTION(10,90); +ACE_EXPLOSION_REFLECTION(10,100); +ACE_EXPLOSION_REFLECTION(10,110); +ACE_EXPLOSION_REFLECTION(10,120); +ACE_EXPLOSION_REFLECTION(10,130); +ACE_EXPLOSION_REFLECTION(10,140); +ACE_EXPLOSION_REFLECTION(10,150); +ACE_EXPLOSION_REFLECTION(10,160); +ACE_EXPLOSION_REFLECTION(10,170); +ACE_EXPLOSION_REFLECTION(10,180); +ACE_EXPLOSION_REFLECTION(10,190); +ACE_EXPLOSION_REFLECTION(10,200); +ACE_EXPLOSION_REFLECTION(10,210); +ACE_EXPLOSION_REFLECTION(10,220); +ACE_EXPLOSION_REFLECTION(10,230); +ACE_EXPLOSION_REFLECTION(10,240); +ACE_EXPLOSION_REFLECTION(10,250); +ACE_EXPLOSION_REFLECTION(10,260); +ACE_EXPLOSION_REFLECTION(10,270); +ACE_EXPLOSION_REFLECTION(10,280); +ACE_EXPLOSION_REFLECTION(10,290); +ACE_EXPLOSION_REFLECTION(10,300); +ACE_EXPLOSION_REFLECTION(10,310); +ACE_EXPLOSION_REFLECTION(10,320); +ACE_EXPLOSION_REFLECTION(10,330); +ACE_EXPLOSION_REFLECTION(10,340); +ACE_EXPLOSION_REFLECTION(10,350); +ACE_EXPLOSION_REFLECTION(10,360); +ACE_EXPLOSION_REFLECTION(10,370); +ACE_EXPLOSION_REFLECTION(10,380); +ACE_EXPLOSION_REFLECTION(10,390); +ACE_EXPLOSION_REFLECTION(10,400); +ACE_EXPLOSION_REFLECTION(10,410); +ACE_EXPLOSION_REFLECTION(10,420); +ACE_EXPLOSION_REFLECTION(10,430); +ACE_EXPLOSION_REFLECTION(10,440); +ACE_EXPLOSION_REFLECTION(10,450); +ACE_EXPLOSION_REFLECTION(10,460); +ACE_EXPLOSION_REFLECTION(10,470); +ACE_EXPLOSION_REFLECTION(10,480); +ACE_EXPLOSION_REFLECTION(10,490); +ACE_EXPLOSION_REFLECTION(10,500); +ACE_EXPLOSION_REFLECTION(12,10); +ACE_EXPLOSION_REFLECTION(12,20); +ACE_EXPLOSION_REFLECTION(12,30); +ACE_EXPLOSION_REFLECTION(12,40); +ACE_EXPLOSION_REFLECTION(12,50); +ACE_EXPLOSION_REFLECTION(12,60); +ACE_EXPLOSION_REFLECTION(12,70); +ACE_EXPLOSION_REFLECTION(12,80); +ACE_EXPLOSION_REFLECTION(12,90); +ACE_EXPLOSION_REFLECTION(12,100); +ACE_EXPLOSION_REFLECTION(12,110); +ACE_EXPLOSION_REFLECTION(12,120); +ACE_EXPLOSION_REFLECTION(12,130); +ACE_EXPLOSION_REFLECTION(12,140); +ACE_EXPLOSION_REFLECTION(12,150); +ACE_EXPLOSION_REFLECTION(12,160); +ACE_EXPLOSION_REFLECTION(12,170); +ACE_EXPLOSION_REFLECTION(12,180); +ACE_EXPLOSION_REFLECTION(12,190); +ACE_EXPLOSION_REFLECTION(12,200); +ACE_EXPLOSION_REFLECTION(12,210); +ACE_EXPLOSION_REFLECTION(12,220); +ACE_EXPLOSION_REFLECTION(12,230); +ACE_EXPLOSION_REFLECTION(12,240); +ACE_EXPLOSION_REFLECTION(12,250); +ACE_EXPLOSION_REFLECTION(12,260); +ACE_EXPLOSION_REFLECTION(12,270); +ACE_EXPLOSION_REFLECTION(12,280); +ACE_EXPLOSION_REFLECTION(12,290); +ACE_EXPLOSION_REFLECTION(12,300); +ACE_EXPLOSION_REFLECTION(12,310); +ACE_EXPLOSION_REFLECTION(12,320); +ACE_EXPLOSION_REFLECTION(12,330); +ACE_EXPLOSION_REFLECTION(12,340); +ACE_EXPLOSION_REFLECTION(12,350); +ACE_EXPLOSION_REFLECTION(12,360); +ACE_EXPLOSION_REFLECTION(12,370); +ACE_EXPLOSION_REFLECTION(12,380); +ACE_EXPLOSION_REFLECTION(12,390); +ACE_EXPLOSION_REFLECTION(12,400); +ACE_EXPLOSION_REFLECTION(12,410); +ACE_EXPLOSION_REFLECTION(12,420); +ACE_EXPLOSION_REFLECTION(12,430); +ACE_EXPLOSION_REFLECTION(12,440); +ACE_EXPLOSION_REFLECTION(12,450); +ACE_EXPLOSION_REFLECTION(12,460); +ACE_EXPLOSION_REFLECTION(12,470); +ACE_EXPLOSION_REFLECTION(12,480); +ACE_EXPLOSION_REFLECTION(12,490); +ACE_EXPLOSION_REFLECTION(12,500); +ACE_EXPLOSION_REFLECTION(14,10); +ACE_EXPLOSION_REFLECTION(14,20); +ACE_EXPLOSION_REFLECTION(14,30); +ACE_EXPLOSION_REFLECTION(14,40); +ACE_EXPLOSION_REFLECTION(14,50); +ACE_EXPLOSION_REFLECTION(14,60); +ACE_EXPLOSION_REFLECTION(14,70); +ACE_EXPLOSION_REFLECTION(14,80); +ACE_EXPLOSION_REFLECTION(14,90); +ACE_EXPLOSION_REFLECTION(14,100); +ACE_EXPLOSION_REFLECTION(14,110); +ACE_EXPLOSION_REFLECTION(14,120); +ACE_EXPLOSION_REFLECTION(14,130); +ACE_EXPLOSION_REFLECTION(14,140); +ACE_EXPLOSION_REFLECTION(14,150); +ACE_EXPLOSION_REFLECTION(14,160); +ACE_EXPLOSION_REFLECTION(14,170); +ACE_EXPLOSION_REFLECTION(14,180); +ACE_EXPLOSION_REFLECTION(14,190); +ACE_EXPLOSION_REFLECTION(14,200); +ACE_EXPLOSION_REFLECTION(14,210); +ACE_EXPLOSION_REFLECTION(14,220); +ACE_EXPLOSION_REFLECTION(14,230); +ACE_EXPLOSION_REFLECTION(14,240); +ACE_EXPLOSION_REFLECTION(14,250); +ACE_EXPLOSION_REFLECTION(14,260); +ACE_EXPLOSION_REFLECTION(14,270); +ACE_EXPLOSION_REFLECTION(14,280); +ACE_EXPLOSION_REFLECTION(14,290); +ACE_EXPLOSION_REFLECTION(14,300); +ACE_EXPLOSION_REFLECTION(14,310); +ACE_EXPLOSION_REFLECTION(14,320); +ACE_EXPLOSION_REFLECTION(14,330); +ACE_EXPLOSION_REFLECTION(14,340); +ACE_EXPLOSION_REFLECTION(14,350); +ACE_EXPLOSION_REFLECTION(14,360); +ACE_EXPLOSION_REFLECTION(14,370); +ACE_EXPLOSION_REFLECTION(14,380); +ACE_EXPLOSION_REFLECTION(14,390); +ACE_EXPLOSION_REFLECTION(14,400); +ACE_EXPLOSION_REFLECTION(14,410); +ACE_EXPLOSION_REFLECTION(14,420); +ACE_EXPLOSION_REFLECTION(14,430); +ACE_EXPLOSION_REFLECTION(14,440); +ACE_EXPLOSION_REFLECTION(14,450); +ACE_EXPLOSION_REFLECTION(14,460); +ACE_EXPLOSION_REFLECTION(14,470); +ACE_EXPLOSION_REFLECTION(14,480); +ACE_EXPLOSION_REFLECTION(14,490); +ACE_EXPLOSION_REFLECTION(14,500); +ACE_EXPLOSION_REFLECTION(16,10); +ACE_EXPLOSION_REFLECTION(16,20); +ACE_EXPLOSION_REFLECTION(16,30); +ACE_EXPLOSION_REFLECTION(16,40); +ACE_EXPLOSION_REFLECTION(16,50); +ACE_EXPLOSION_REFLECTION(16,60); +ACE_EXPLOSION_REFLECTION(16,70); +ACE_EXPLOSION_REFLECTION(16,80); +ACE_EXPLOSION_REFLECTION(16,90); +ACE_EXPLOSION_REFLECTION(16,100); +ACE_EXPLOSION_REFLECTION(16,110); +ACE_EXPLOSION_REFLECTION(16,120); +ACE_EXPLOSION_REFLECTION(16,130); +ACE_EXPLOSION_REFLECTION(16,140); +ACE_EXPLOSION_REFLECTION(16,150); +ACE_EXPLOSION_REFLECTION(16,160); +ACE_EXPLOSION_REFLECTION(16,170); +ACE_EXPLOSION_REFLECTION(16,180); +ACE_EXPLOSION_REFLECTION(16,190); +ACE_EXPLOSION_REFLECTION(16,200); +ACE_EXPLOSION_REFLECTION(16,210); +ACE_EXPLOSION_REFLECTION(16,220); +ACE_EXPLOSION_REFLECTION(16,230); +ACE_EXPLOSION_REFLECTION(16,240); +ACE_EXPLOSION_REFLECTION(16,250); +ACE_EXPLOSION_REFLECTION(16,260); +ACE_EXPLOSION_REFLECTION(16,270); +ACE_EXPLOSION_REFLECTION(16,280); +ACE_EXPLOSION_REFLECTION(16,290); +ACE_EXPLOSION_REFLECTION(16,300); +ACE_EXPLOSION_REFLECTION(16,310); +ACE_EXPLOSION_REFLECTION(16,320); +ACE_EXPLOSION_REFLECTION(16,330); +ACE_EXPLOSION_REFLECTION(16,340); +ACE_EXPLOSION_REFLECTION(16,350); +ACE_EXPLOSION_REFLECTION(16,360); +ACE_EXPLOSION_REFLECTION(16,370); +ACE_EXPLOSION_REFLECTION(16,380); +ACE_EXPLOSION_REFLECTION(16,390); +ACE_EXPLOSION_REFLECTION(16,400); +ACE_EXPLOSION_REFLECTION(16,410); +ACE_EXPLOSION_REFLECTION(16,420); +ACE_EXPLOSION_REFLECTION(16,430); +ACE_EXPLOSION_REFLECTION(16,440); +ACE_EXPLOSION_REFLECTION(16,450); +ACE_EXPLOSION_REFLECTION(16,460); +ACE_EXPLOSION_REFLECTION(16,470); +ACE_EXPLOSION_REFLECTION(16,480); +ACE_EXPLOSION_REFLECTION(16,490); +ACE_EXPLOSION_REFLECTION(16,500); +ACE_EXPLOSION_REFLECTION(18,10); +ACE_EXPLOSION_REFLECTION(18,20); +ACE_EXPLOSION_REFLECTION(18,30); +ACE_EXPLOSION_REFLECTION(18,40); +ACE_EXPLOSION_REFLECTION(18,50); +ACE_EXPLOSION_REFLECTION(18,60); +ACE_EXPLOSION_REFLECTION(18,70); +ACE_EXPLOSION_REFLECTION(18,80); +ACE_EXPLOSION_REFLECTION(18,90); +ACE_EXPLOSION_REFLECTION(18,100); +ACE_EXPLOSION_REFLECTION(18,110); +ACE_EXPLOSION_REFLECTION(18,120); +ACE_EXPLOSION_REFLECTION(18,130); +ACE_EXPLOSION_REFLECTION(18,140); +ACE_EXPLOSION_REFLECTION(18,150); +ACE_EXPLOSION_REFLECTION(18,160); +ACE_EXPLOSION_REFLECTION(18,170); +ACE_EXPLOSION_REFLECTION(18,180); +ACE_EXPLOSION_REFLECTION(18,190); +ACE_EXPLOSION_REFLECTION(18,200); +ACE_EXPLOSION_REFLECTION(18,210); +ACE_EXPLOSION_REFLECTION(18,220); +ACE_EXPLOSION_REFLECTION(18,230); +ACE_EXPLOSION_REFLECTION(18,240); +ACE_EXPLOSION_REFLECTION(18,250); +ACE_EXPLOSION_REFLECTION(18,260); +ACE_EXPLOSION_REFLECTION(18,270); +ACE_EXPLOSION_REFLECTION(18,280); +ACE_EXPLOSION_REFLECTION(18,290); +ACE_EXPLOSION_REFLECTION(18,300); +ACE_EXPLOSION_REFLECTION(18,310); +ACE_EXPLOSION_REFLECTION(18,320); +ACE_EXPLOSION_REFLECTION(18,330); +ACE_EXPLOSION_REFLECTION(18,340); +ACE_EXPLOSION_REFLECTION(18,350); +ACE_EXPLOSION_REFLECTION(18,360); +ACE_EXPLOSION_REFLECTION(18,370); +ACE_EXPLOSION_REFLECTION(18,380); +ACE_EXPLOSION_REFLECTION(18,390); +ACE_EXPLOSION_REFLECTION(18,400); +ACE_EXPLOSION_REFLECTION(18,410); +ACE_EXPLOSION_REFLECTION(18,420); +ACE_EXPLOSION_REFLECTION(18,430); +ACE_EXPLOSION_REFLECTION(18,440); +ACE_EXPLOSION_REFLECTION(18,450); +ACE_EXPLOSION_REFLECTION(18,460); +ACE_EXPLOSION_REFLECTION(18,470); +ACE_EXPLOSION_REFLECTION(18,480); +ACE_EXPLOSION_REFLECTION(18,490); +ACE_EXPLOSION_REFLECTION(18,500); +ACE_EXPLOSION_REFLECTION(20,10); +ACE_EXPLOSION_REFLECTION(20,20); +ACE_EXPLOSION_REFLECTION(20,30); +ACE_EXPLOSION_REFLECTION(20,40); +ACE_EXPLOSION_REFLECTION(20,50); +ACE_EXPLOSION_REFLECTION(20,60); +ACE_EXPLOSION_REFLECTION(20,70); +ACE_EXPLOSION_REFLECTION(20,80); +ACE_EXPLOSION_REFLECTION(20,90); +ACE_EXPLOSION_REFLECTION(20,100); +ACE_EXPLOSION_REFLECTION(20,110); +ACE_EXPLOSION_REFLECTION(20,120); +ACE_EXPLOSION_REFLECTION(20,130); +ACE_EXPLOSION_REFLECTION(20,140); +ACE_EXPLOSION_REFLECTION(20,150); +ACE_EXPLOSION_REFLECTION(20,160); +ACE_EXPLOSION_REFLECTION(20,170); +ACE_EXPLOSION_REFLECTION(20,180); +ACE_EXPLOSION_REFLECTION(20,190); +ACE_EXPLOSION_REFLECTION(20,200); +ACE_EXPLOSION_REFLECTION(20,210); +ACE_EXPLOSION_REFLECTION(20,220); +ACE_EXPLOSION_REFLECTION(20,230); +ACE_EXPLOSION_REFLECTION(20,240); +ACE_EXPLOSION_REFLECTION(20,250); +ACE_EXPLOSION_REFLECTION(20,260); +ACE_EXPLOSION_REFLECTION(20,270); +ACE_EXPLOSION_REFLECTION(20,280); +ACE_EXPLOSION_REFLECTION(20,290); +ACE_EXPLOSION_REFLECTION(20,300); +ACE_EXPLOSION_REFLECTION(20,310); +ACE_EXPLOSION_REFLECTION(20,320); +ACE_EXPLOSION_REFLECTION(20,330); +ACE_EXPLOSION_REFLECTION(20,340); +ACE_EXPLOSION_REFLECTION(20,350); +ACE_EXPLOSION_REFLECTION(20,360); +ACE_EXPLOSION_REFLECTION(20,370); +ACE_EXPLOSION_REFLECTION(20,380); +ACE_EXPLOSION_REFLECTION(20,390); +ACE_EXPLOSION_REFLECTION(20,400); +ACE_EXPLOSION_REFLECTION(20,410); +ACE_EXPLOSION_REFLECTION(20,420); +ACE_EXPLOSION_REFLECTION(20,430); +ACE_EXPLOSION_REFLECTION(20,440); +ACE_EXPLOSION_REFLECTION(20,450); +ACE_EXPLOSION_REFLECTION(20,460); +ACE_EXPLOSION_REFLECTION(20,470); +ACE_EXPLOSION_REFLECTION(20,480); +ACE_EXPLOSION_REFLECTION(20,490); +ACE_EXPLOSION_REFLECTION(20,500); +ACE_EXPLOSION_REFLECTION(22,10); +ACE_EXPLOSION_REFLECTION(22,20); +ACE_EXPLOSION_REFLECTION(22,30); +ACE_EXPLOSION_REFLECTION(22,40); +ACE_EXPLOSION_REFLECTION(22,50); +ACE_EXPLOSION_REFLECTION(22,60); +ACE_EXPLOSION_REFLECTION(22,70); +ACE_EXPLOSION_REFLECTION(22,80); +ACE_EXPLOSION_REFLECTION(22,90); +ACE_EXPLOSION_REFLECTION(22,100); +ACE_EXPLOSION_REFLECTION(22,110); +ACE_EXPLOSION_REFLECTION(22,120); +ACE_EXPLOSION_REFLECTION(22,130); +ACE_EXPLOSION_REFLECTION(22,140); +ACE_EXPLOSION_REFLECTION(22,150); +ACE_EXPLOSION_REFLECTION(22,160); +ACE_EXPLOSION_REFLECTION(22,170); +ACE_EXPLOSION_REFLECTION(22,180); +ACE_EXPLOSION_REFLECTION(22,190); +ACE_EXPLOSION_REFLECTION(22,200); +ACE_EXPLOSION_REFLECTION(22,210); +ACE_EXPLOSION_REFLECTION(22,220); +ACE_EXPLOSION_REFLECTION(22,230); +ACE_EXPLOSION_REFLECTION(22,240); +ACE_EXPLOSION_REFLECTION(22,250); +ACE_EXPLOSION_REFLECTION(22,260); +ACE_EXPLOSION_REFLECTION(22,270); +ACE_EXPLOSION_REFLECTION(22,280); +ACE_EXPLOSION_REFLECTION(22,290); +ACE_EXPLOSION_REFLECTION(22,300); +ACE_EXPLOSION_REFLECTION(22,310); +ACE_EXPLOSION_REFLECTION(22,320); +ACE_EXPLOSION_REFLECTION(22,330); +ACE_EXPLOSION_REFLECTION(22,340); +ACE_EXPLOSION_REFLECTION(22,350); +ACE_EXPLOSION_REFLECTION(22,360); +ACE_EXPLOSION_REFLECTION(22,370); +ACE_EXPLOSION_REFLECTION(22,380); +ACE_EXPLOSION_REFLECTION(22,390); +ACE_EXPLOSION_REFLECTION(22,400); +ACE_EXPLOSION_REFLECTION(22,410); +ACE_EXPLOSION_REFLECTION(22,420); +ACE_EXPLOSION_REFLECTION(22,430); +ACE_EXPLOSION_REFLECTION(22,440); +ACE_EXPLOSION_REFLECTION(22,450); +ACE_EXPLOSION_REFLECTION(22,460); +ACE_EXPLOSION_REFLECTION(22,470); +ACE_EXPLOSION_REFLECTION(22,480); +ACE_EXPLOSION_REFLECTION(22,490); +ACE_EXPLOSION_REFLECTION(22,500); +ACE_EXPLOSION_REFLECTION(24,10); +ACE_EXPLOSION_REFLECTION(24,20); +ACE_EXPLOSION_REFLECTION(24,30); +ACE_EXPLOSION_REFLECTION(24,40); +ACE_EXPLOSION_REFLECTION(24,50); +ACE_EXPLOSION_REFLECTION(24,60); +ACE_EXPLOSION_REFLECTION(24,70); +ACE_EXPLOSION_REFLECTION(24,80); +ACE_EXPLOSION_REFLECTION(24,90); +ACE_EXPLOSION_REFLECTION(24,100); +ACE_EXPLOSION_REFLECTION(24,110); +ACE_EXPLOSION_REFLECTION(24,120); +ACE_EXPLOSION_REFLECTION(24,130); +ACE_EXPLOSION_REFLECTION(24,140); +ACE_EXPLOSION_REFLECTION(24,150); +ACE_EXPLOSION_REFLECTION(24,160); +ACE_EXPLOSION_REFLECTION(24,170); +ACE_EXPLOSION_REFLECTION(24,180); +ACE_EXPLOSION_REFLECTION(24,190); +ACE_EXPLOSION_REFLECTION(24,200); +ACE_EXPLOSION_REFLECTION(24,210); +ACE_EXPLOSION_REFLECTION(24,220); +ACE_EXPLOSION_REFLECTION(24,230); +ACE_EXPLOSION_REFLECTION(24,240); +ACE_EXPLOSION_REFLECTION(24,250); +ACE_EXPLOSION_REFLECTION(24,260); +ACE_EXPLOSION_REFLECTION(24,270); +ACE_EXPLOSION_REFLECTION(24,280); +ACE_EXPLOSION_REFLECTION(24,290); +ACE_EXPLOSION_REFLECTION(24,300); +ACE_EXPLOSION_REFLECTION(24,310); +ACE_EXPLOSION_REFLECTION(24,320); +ACE_EXPLOSION_REFLECTION(24,330); +ACE_EXPLOSION_REFLECTION(24,340); +ACE_EXPLOSION_REFLECTION(24,350); +ACE_EXPLOSION_REFLECTION(24,360); +ACE_EXPLOSION_REFLECTION(24,370); +ACE_EXPLOSION_REFLECTION(24,380); +ACE_EXPLOSION_REFLECTION(24,390); +ACE_EXPLOSION_REFLECTION(24,400); +ACE_EXPLOSION_REFLECTION(24,410); +ACE_EXPLOSION_REFLECTION(24,420); +ACE_EXPLOSION_REFLECTION(24,430); +ACE_EXPLOSION_REFLECTION(24,440); +ACE_EXPLOSION_REFLECTION(24,450); +ACE_EXPLOSION_REFLECTION(24,460); +ACE_EXPLOSION_REFLECTION(24,470); +ACE_EXPLOSION_REFLECTION(24,480); +ACE_EXPLOSION_REFLECTION(24,490); +ACE_EXPLOSION_REFLECTION(24,500); +ACE_EXPLOSION_REFLECTION(26,10); +ACE_EXPLOSION_REFLECTION(26,20); +ACE_EXPLOSION_REFLECTION(26,30); +ACE_EXPLOSION_REFLECTION(26,40); +ACE_EXPLOSION_REFLECTION(26,50); +ACE_EXPLOSION_REFLECTION(26,60); +ACE_EXPLOSION_REFLECTION(26,70); +ACE_EXPLOSION_REFLECTION(26,80); +ACE_EXPLOSION_REFLECTION(26,90); +ACE_EXPLOSION_REFLECTION(26,100); +ACE_EXPLOSION_REFLECTION(26,110); +ACE_EXPLOSION_REFLECTION(26,120); +ACE_EXPLOSION_REFLECTION(26,130); +ACE_EXPLOSION_REFLECTION(26,140); +ACE_EXPLOSION_REFLECTION(26,150); +ACE_EXPLOSION_REFLECTION(26,160); +ACE_EXPLOSION_REFLECTION(26,170); +ACE_EXPLOSION_REFLECTION(26,180); +ACE_EXPLOSION_REFLECTION(26,190); +ACE_EXPLOSION_REFLECTION(26,200); +ACE_EXPLOSION_REFLECTION(26,210); +ACE_EXPLOSION_REFLECTION(26,220); +ACE_EXPLOSION_REFLECTION(26,230); +ACE_EXPLOSION_REFLECTION(26,240); +ACE_EXPLOSION_REFLECTION(26,250); +ACE_EXPLOSION_REFLECTION(26,260); +ACE_EXPLOSION_REFLECTION(26,270); +ACE_EXPLOSION_REFLECTION(26,280); +ACE_EXPLOSION_REFLECTION(26,290); +ACE_EXPLOSION_REFLECTION(26,300); +ACE_EXPLOSION_REFLECTION(26,310); +ACE_EXPLOSION_REFLECTION(26,320); +ACE_EXPLOSION_REFLECTION(26,330); +ACE_EXPLOSION_REFLECTION(26,340); +ACE_EXPLOSION_REFLECTION(26,350); +ACE_EXPLOSION_REFLECTION(26,360); +ACE_EXPLOSION_REFLECTION(26,370); +ACE_EXPLOSION_REFLECTION(26,380); +ACE_EXPLOSION_REFLECTION(26,390); +ACE_EXPLOSION_REFLECTION(26,400); +ACE_EXPLOSION_REFLECTION(26,410); +ACE_EXPLOSION_REFLECTION(26,420); +ACE_EXPLOSION_REFLECTION(26,430); +ACE_EXPLOSION_REFLECTION(26,440); +ACE_EXPLOSION_REFLECTION(26,450); +ACE_EXPLOSION_REFLECTION(26,460); +ACE_EXPLOSION_REFLECTION(26,470); +ACE_EXPLOSION_REFLECTION(26,480); +ACE_EXPLOSION_REFLECTION(26,490); +ACE_EXPLOSION_REFLECTION(26,500); +ACE_EXPLOSION_REFLECTION(28,10); +ACE_EXPLOSION_REFLECTION(28,20); +ACE_EXPLOSION_REFLECTION(28,30); +ACE_EXPLOSION_REFLECTION(28,40); +ACE_EXPLOSION_REFLECTION(28,50); +ACE_EXPLOSION_REFLECTION(28,60); +ACE_EXPLOSION_REFLECTION(28,70); +ACE_EXPLOSION_REFLECTION(28,80); +ACE_EXPLOSION_REFLECTION(28,90); +ACE_EXPLOSION_REFLECTION(28,100); +ACE_EXPLOSION_REFLECTION(28,110); +ACE_EXPLOSION_REFLECTION(28,120); +ACE_EXPLOSION_REFLECTION(28,130); +ACE_EXPLOSION_REFLECTION(28,140); +ACE_EXPLOSION_REFLECTION(28,150); +ACE_EXPLOSION_REFLECTION(28,160); +ACE_EXPLOSION_REFLECTION(28,170); +ACE_EXPLOSION_REFLECTION(28,180); +ACE_EXPLOSION_REFLECTION(28,190); +ACE_EXPLOSION_REFLECTION(28,200); +ACE_EXPLOSION_REFLECTION(28,210); +ACE_EXPLOSION_REFLECTION(28,220); +ACE_EXPLOSION_REFLECTION(28,230); +ACE_EXPLOSION_REFLECTION(28,240); +ACE_EXPLOSION_REFLECTION(28,250); +ACE_EXPLOSION_REFLECTION(28,260); +ACE_EXPLOSION_REFLECTION(28,270); +ACE_EXPLOSION_REFLECTION(28,280); +ACE_EXPLOSION_REFLECTION(28,290); +ACE_EXPLOSION_REFLECTION(28,300); +ACE_EXPLOSION_REFLECTION(28,310); +ACE_EXPLOSION_REFLECTION(28,320); +ACE_EXPLOSION_REFLECTION(28,330); +ACE_EXPLOSION_REFLECTION(28,340); +ACE_EXPLOSION_REFLECTION(28,350); +ACE_EXPLOSION_REFLECTION(28,360); +ACE_EXPLOSION_REFLECTION(28,370); +ACE_EXPLOSION_REFLECTION(28,380); +ACE_EXPLOSION_REFLECTION(28,390); +ACE_EXPLOSION_REFLECTION(28,400); +ACE_EXPLOSION_REFLECTION(28,410); +ACE_EXPLOSION_REFLECTION(28,420); +ACE_EXPLOSION_REFLECTION(28,430); +ACE_EXPLOSION_REFLECTION(28,440); +ACE_EXPLOSION_REFLECTION(28,450); +ACE_EXPLOSION_REFLECTION(28,460); +ACE_EXPLOSION_REFLECTION(28,470); +ACE_EXPLOSION_REFLECTION(28,480); +ACE_EXPLOSION_REFLECTION(28,490); +ACE_EXPLOSION_REFLECTION(28,500); +ACE_EXPLOSION_REFLECTION(30,10); +ACE_EXPLOSION_REFLECTION(30,20); +ACE_EXPLOSION_REFLECTION(30,30); +ACE_EXPLOSION_REFLECTION(30,40); +ACE_EXPLOSION_REFLECTION(30,50); +ACE_EXPLOSION_REFLECTION(30,60); +ACE_EXPLOSION_REFLECTION(30,70); +ACE_EXPLOSION_REFLECTION(30,80); +ACE_EXPLOSION_REFLECTION(30,90); +ACE_EXPLOSION_REFLECTION(30,100); +ACE_EXPLOSION_REFLECTION(30,110); +ACE_EXPLOSION_REFLECTION(30,120); +ACE_EXPLOSION_REFLECTION(30,130); +ACE_EXPLOSION_REFLECTION(30,140); +ACE_EXPLOSION_REFLECTION(30,150); +ACE_EXPLOSION_REFLECTION(30,160); +ACE_EXPLOSION_REFLECTION(30,170); +ACE_EXPLOSION_REFLECTION(30,180); +ACE_EXPLOSION_REFLECTION(30,190); +ACE_EXPLOSION_REFLECTION(30,200); +ACE_EXPLOSION_REFLECTION(30,210); +ACE_EXPLOSION_REFLECTION(30,220); +ACE_EXPLOSION_REFLECTION(30,230); +ACE_EXPLOSION_REFLECTION(30,240); +ACE_EXPLOSION_REFLECTION(30,250); +ACE_EXPLOSION_REFLECTION(30,260); +ACE_EXPLOSION_REFLECTION(30,270); +ACE_EXPLOSION_REFLECTION(30,280); +ACE_EXPLOSION_REFLECTION(30,290); +ACE_EXPLOSION_REFLECTION(30,300); +ACE_EXPLOSION_REFLECTION(30,310); +ACE_EXPLOSION_REFLECTION(30,320); +ACE_EXPLOSION_REFLECTION(30,330); +ACE_EXPLOSION_REFLECTION(30,340); +ACE_EXPLOSION_REFLECTION(30,350); +ACE_EXPLOSION_REFLECTION(30,360); +ACE_EXPLOSION_REFLECTION(30,370); +ACE_EXPLOSION_REFLECTION(30,380); +ACE_EXPLOSION_REFLECTION(30,390); +ACE_EXPLOSION_REFLECTION(30,400); +ACE_EXPLOSION_REFLECTION(30,410); +ACE_EXPLOSION_REFLECTION(30,420); +ACE_EXPLOSION_REFLECTION(30,430); +ACE_EXPLOSION_REFLECTION(30,440); +ACE_EXPLOSION_REFLECTION(30,450); +ACE_EXPLOSION_REFLECTION(30,460); +ACE_EXPLOSION_REFLECTION(30,470); +ACE_EXPLOSION_REFLECTION(30,480); +ACE_EXPLOSION_REFLECTION(30,490); +ACE_EXPLOSION_REFLECTION(30,500); +ACE_EXPLOSION_REFLECTION(32,10); +ACE_EXPLOSION_REFLECTION(32,20); +ACE_EXPLOSION_REFLECTION(32,30); +ACE_EXPLOSION_REFLECTION(32,40); +ACE_EXPLOSION_REFLECTION(32,50); +ACE_EXPLOSION_REFLECTION(32,60); +ACE_EXPLOSION_REFLECTION(32,70); +ACE_EXPLOSION_REFLECTION(32,80); +ACE_EXPLOSION_REFLECTION(32,90); +ACE_EXPLOSION_REFLECTION(32,100); +ACE_EXPLOSION_REFLECTION(32,110); +ACE_EXPLOSION_REFLECTION(32,120); +ACE_EXPLOSION_REFLECTION(32,130); +ACE_EXPLOSION_REFLECTION(32,140); +ACE_EXPLOSION_REFLECTION(32,150); +ACE_EXPLOSION_REFLECTION(32,160); +ACE_EXPLOSION_REFLECTION(32,170); +ACE_EXPLOSION_REFLECTION(32,180); +ACE_EXPLOSION_REFLECTION(32,190); +ACE_EXPLOSION_REFLECTION(32,200); +ACE_EXPLOSION_REFLECTION(32,210); +ACE_EXPLOSION_REFLECTION(32,220); +ACE_EXPLOSION_REFLECTION(32,230); +ACE_EXPLOSION_REFLECTION(32,240); +ACE_EXPLOSION_REFLECTION(32,250); +ACE_EXPLOSION_REFLECTION(32,260); +ACE_EXPLOSION_REFLECTION(32,270); +ACE_EXPLOSION_REFLECTION(32,280); +ACE_EXPLOSION_REFLECTION(32,290); +ACE_EXPLOSION_REFLECTION(32,300); +ACE_EXPLOSION_REFLECTION(32,310); +ACE_EXPLOSION_REFLECTION(32,320); +ACE_EXPLOSION_REFLECTION(32,330); +ACE_EXPLOSION_REFLECTION(32,340); +ACE_EXPLOSION_REFLECTION(32,350); +ACE_EXPLOSION_REFLECTION(32,360); +ACE_EXPLOSION_REFLECTION(32,370); +ACE_EXPLOSION_REFLECTION(32,380); +ACE_EXPLOSION_REFLECTION(32,390); +ACE_EXPLOSION_REFLECTION(32,400); +ACE_EXPLOSION_REFLECTION(32,410); +ACE_EXPLOSION_REFLECTION(32,420); +ACE_EXPLOSION_REFLECTION(32,430); +ACE_EXPLOSION_REFLECTION(32,440); +ACE_EXPLOSION_REFLECTION(32,450); +ACE_EXPLOSION_REFLECTION(32,460); +ACE_EXPLOSION_REFLECTION(32,470); +ACE_EXPLOSION_REFLECTION(32,480); +ACE_EXPLOSION_REFLECTION(32,490); +ACE_EXPLOSION_REFLECTION(32,500); +ACE_EXPLOSION_REFLECTION(34,10); +ACE_EXPLOSION_REFLECTION(34,20); +ACE_EXPLOSION_REFLECTION(34,30); +ACE_EXPLOSION_REFLECTION(34,40); +ACE_EXPLOSION_REFLECTION(34,50); +ACE_EXPLOSION_REFLECTION(34,60); +ACE_EXPLOSION_REFLECTION(34,70); +ACE_EXPLOSION_REFLECTION(34,80); +ACE_EXPLOSION_REFLECTION(34,90); +ACE_EXPLOSION_REFLECTION(34,100); +ACE_EXPLOSION_REFLECTION(34,110); +ACE_EXPLOSION_REFLECTION(34,120); +ACE_EXPLOSION_REFLECTION(34,130); +ACE_EXPLOSION_REFLECTION(34,140); +ACE_EXPLOSION_REFLECTION(34,150); +ACE_EXPLOSION_REFLECTION(34,160); +ACE_EXPLOSION_REFLECTION(34,170); +ACE_EXPLOSION_REFLECTION(34,180); +ACE_EXPLOSION_REFLECTION(34,190); +ACE_EXPLOSION_REFLECTION(34,200); +ACE_EXPLOSION_REFLECTION(34,210); +ACE_EXPLOSION_REFLECTION(34,220); +ACE_EXPLOSION_REFLECTION(34,230); +ACE_EXPLOSION_REFLECTION(34,240); +ACE_EXPLOSION_REFLECTION(34,250); +ACE_EXPLOSION_REFLECTION(34,260); +ACE_EXPLOSION_REFLECTION(34,270); +ACE_EXPLOSION_REFLECTION(34,280); +ACE_EXPLOSION_REFLECTION(34,290); +ACE_EXPLOSION_REFLECTION(34,300); +ACE_EXPLOSION_REFLECTION(34,310); +ACE_EXPLOSION_REFLECTION(34,320); +ACE_EXPLOSION_REFLECTION(34,330); +ACE_EXPLOSION_REFLECTION(34,340); +ACE_EXPLOSION_REFLECTION(34,350); +ACE_EXPLOSION_REFLECTION(34,360); +ACE_EXPLOSION_REFLECTION(34,370); +ACE_EXPLOSION_REFLECTION(34,380); +ACE_EXPLOSION_REFLECTION(34,390); +ACE_EXPLOSION_REFLECTION(34,400); +ACE_EXPLOSION_REFLECTION(34,410); +ACE_EXPLOSION_REFLECTION(34,420); +ACE_EXPLOSION_REFLECTION(34,430); +ACE_EXPLOSION_REFLECTION(34,440); +ACE_EXPLOSION_REFLECTION(34,450); +ACE_EXPLOSION_REFLECTION(34,460); +ACE_EXPLOSION_REFLECTION(34,470); +ACE_EXPLOSION_REFLECTION(34,480); +ACE_EXPLOSION_REFLECTION(34,490); +ACE_EXPLOSION_REFLECTION(34,500); +ACE_EXPLOSION_REFLECTION(36,10); +ACE_EXPLOSION_REFLECTION(36,20); +ACE_EXPLOSION_REFLECTION(36,30); +ACE_EXPLOSION_REFLECTION(36,40); +ACE_EXPLOSION_REFLECTION(36,50); +ACE_EXPLOSION_REFLECTION(36,60); +ACE_EXPLOSION_REFLECTION(36,70); +ACE_EXPLOSION_REFLECTION(36,80); +ACE_EXPLOSION_REFLECTION(36,90); +ACE_EXPLOSION_REFLECTION(36,100); +ACE_EXPLOSION_REFLECTION(36,110); +ACE_EXPLOSION_REFLECTION(36,120); +ACE_EXPLOSION_REFLECTION(36,130); +ACE_EXPLOSION_REFLECTION(36,140); +ACE_EXPLOSION_REFLECTION(36,150); +ACE_EXPLOSION_REFLECTION(36,160); +ACE_EXPLOSION_REFLECTION(36,170); +ACE_EXPLOSION_REFLECTION(36,180); +ACE_EXPLOSION_REFLECTION(36,190); +ACE_EXPLOSION_REFLECTION(36,200); +ACE_EXPLOSION_REFLECTION(36,210); +ACE_EXPLOSION_REFLECTION(36,220); +ACE_EXPLOSION_REFLECTION(36,230); +ACE_EXPLOSION_REFLECTION(36,240); +ACE_EXPLOSION_REFLECTION(36,250); +ACE_EXPLOSION_REFLECTION(36,260); +ACE_EXPLOSION_REFLECTION(36,270); +ACE_EXPLOSION_REFLECTION(36,280); +ACE_EXPLOSION_REFLECTION(36,290); +ACE_EXPLOSION_REFLECTION(36,300); +ACE_EXPLOSION_REFLECTION(36,310); +ACE_EXPLOSION_REFLECTION(36,320); +ACE_EXPLOSION_REFLECTION(36,330); +ACE_EXPLOSION_REFLECTION(36,340); +ACE_EXPLOSION_REFLECTION(36,350); +ACE_EXPLOSION_REFLECTION(36,360); +ACE_EXPLOSION_REFLECTION(36,370); +ACE_EXPLOSION_REFLECTION(36,380); +ACE_EXPLOSION_REFLECTION(36,390); +ACE_EXPLOSION_REFLECTION(36,400); +ACE_EXPLOSION_REFLECTION(36,410); +ACE_EXPLOSION_REFLECTION(36,420); +ACE_EXPLOSION_REFLECTION(36,430); +ACE_EXPLOSION_REFLECTION(36,440); +ACE_EXPLOSION_REFLECTION(36,450); +ACE_EXPLOSION_REFLECTION(36,460); +ACE_EXPLOSION_REFLECTION(36,470); +ACE_EXPLOSION_REFLECTION(36,480); +ACE_EXPLOSION_REFLECTION(36,490); +ACE_EXPLOSION_REFLECTION(36,500); +ACE_EXPLOSION_REFLECTION(38,10); +ACE_EXPLOSION_REFLECTION(38,20); +ACE_EXPLOSION_REFLECTION(38,30); +ACE_EXPLOSION_REFLECTION(38,40); +ACE_EXPLOSION_REFLECTION(38,50); +ACE_EXPLOSION_REFLECTION(38,60); +ACE_EXPLOSION_REFLECTION(38,70); +ACE_EXPLOSION_REFLECTION(38,80); +ACE_EXPLOSION_REFLECTION(38,90); +ACE_EXPLOSION_REFLECTION(38,100); +ACE_EXPLOSION_REFLECTION(38,110); +ACE_EXPLOSION_REFLECTION(38,120); +ACE_EXPLOSION_REFLECTION(38,130); +ACE_EXPLOSION_REFLECTION(38,140); +ACE_EXPLOSION_REFLECTION(38,150); +ACE_EXPLOSION_REFLECTION(38,160); +ACE_EXPLOSION_REFLECTION(38,170); +ACE_EXPLOSION_REFLECTION(38,180); +ACE_EXPLOSION_REFLECTION(38,190); +ACE_EXPLOSION_REFLECTION(38,200); +ACE_EXPLOSION_REFLECTION(38,210); +ACE_EXPLOSION_REFLECTION(38,220); +ACE_EXPLOSION_REFLECTION(38,230); +ACE_EXPLOSION_REFLECTION(38,240); +ACE_EXPLOSION_REFLECTION(38,250); +ACE_EXPLOSION_REFLECTION(38,260); +ACE_EXPLOSION_REFLECTION(38,270); +ACE_EXPLOSION_REFLECTION(38,280); +ACE_EXPLOSION_REFLECTION(38,290); +ACE_EXPLOSION_REFLECTION(38,300); +ACE_EXPLOSION_REFLECTION(38,310); +ACE_EXPLOSION_REFLECTION(38,320); +ACE_EXPLOSION_REFLECTION(38,330); +ACE_EXPLOSION_REFLECTION(38,340); +ACE_EXPLOSION_REFLECTION(38,350); +ACE_EXPLOSION_REFLECTION(38,360); +ACE_EXPLOSION_REFLECTION(38,370); +ACE_EXPLOSION_REFLECTION(38,380); +ACE_EXPLOSION_REFLECTION(38,390); +ACE_EXPLOSION_REFLECTION(38,400); +ACE_EXPLOSION_REFLECTION(38,410); +ACE_EXPLOSION_REFLECTION(38,420); +ACE_EXPLOSION_REFLECTION(38,430); +ACE_EXPLOSION_REFLECTION(38,440); +ACE_EXPLOSION_REFLECTION(38,450); +ACE_EXPLOSION_REFLECTION(38,460); +ACE_EXPLOSION_REFLECTION(38,470); +ACE_EXPLOSION_REFLECTION(38,480); +ACE_EXPLOSION_REFLECTION(38,490); +ACE_EXPLOSION_REFLECTION(38,500); +ACE_EXPLOSION_REFLECTION(40,10); +ACE_EXPLOSION_REFLECTION(40,20); +ACE_EXPLOSION_REFLECTION(40,30); +ACE_EXPLOSION_REFLECTION(40,40); +ACE_EXPLOSION_REFLECTION(40,50); +ACE_EXPLOSION_REFLECTION(40,60); +ACE_EXPLOSION_REFLECTION(40,70); +ACE_EXPLOSION_REFLECTION(40,80); +ACE_EXPLOSION_REFLECTION(40,90); +ACE_EXPLOSION_REFLECTION(40,100); +ACE_EXPLOSION_REFLECTION(40,110); +ACE_EXPLOSION_REFLECTION(40,120); +ACE_EXPLOSION_REFLECTION(40,130); +ACE_EXPLOSION_REFLECTION(40,140); +ACE_EXPLOSION_REFLECTION(40,150); +ACE_EXPLOSION_REFLECTION(40,160); +ACE_EXPLOSION_REFLECTION(40,170); +ACE_EXPLOSION_REFLECTION(40,180); +ACE_EXPLOSION_REFLECTION(40,190); +ACE_EXPLOSION_REFLECTION(40,200); +ACE_EXPLOSION_REFLECTION(40,210); +ACE_EXPLOSION_REFLECTION(40,220); +ACE_EXPLOSION_REFLECTION(40,230); +ACE_EXPLOSION_REFLECTION(40,240); +ACE_EXPLOSION_REFLECTION(40,250); +ACE_EXPLOSION_REFLECTION(40,260); +ACE_EXPLOSION_REFLECTION(40,270); +ACE_EXPLOSION_REFLECTION(40,280); +ACE_EXPLOSION_REFLECTION(40,290); +ACE_EXPLOSION_REFLECTION(40,300); +ACE_EXPLOSION_REFLECTION(40,310); +ACE_EXPLOSION_REFLECTION(40,320); +ACE_EXPLOSION_REFLECTION(40,330); +ACE_EXPLOSION_REFLECTION(40,340); +ACE_EXPLOSION_REFLECTION(40,350); +ACE_EXPLOSION_REFLECTION(40,360); +ACE_EXPLOSION_REFLECTION(40,370); +ACE_EXPLOSION_REFLECTION(40,380); +ACE_EXPLOSION_REFLECTION(40,390); +ACE_EXPLOSION_REFLECTION(40,400); +ACE_EXPLOSION_REFLECTION(40,410); +ACE_EXPLOSION_REFLECTION(40,420); +ACE_EXPLOSION_REFLECTION(40,430); +ACE_EXPLOSION_REFLECTION(40,440); +ACE_EXPLOSION_REFLECTION(40,450); +ACE_EXPLOSION_REFLECTION(40,460); +ACE_EXPLOSION_REFLECTION(40,470); +ACE_EXPLOSION_REFLECTION(40,480); +ACE_EXPLOSION_REFLECTION(40,490); +ACE_EXPLOSION_REFLECTION(40,500); +ACE_EXPLOSION_REFLECTION(42,10); +ACE_EXPLOSION_REFLECTION(42,20); +ACE_EXPLOSION_REFLECTION(42,30); +ACE_EXPLOSION_REFLECTION(42,40); +ACE_EXPLOSION_REFLECTION(42,50); +ACE_EXPLOSION_REFLECTION(42,60); +ACE_EXPLOSION_REFLECTION(42,70); +ACE_EXPLOSION_REFLECTION(42,80); +ACE_EXPLOSION_REFLECTION(42,90); +ACE_EXPLOSION_REFLECTION(42,100); +ACE_EXPLOSION_REFLECTION(42,110); +ACE_EXPLOSION_REFLECTION(42,120); +ACE_EXPLOSION_REFLECTION(42,130); +ACE_EXPLOSION_REFLECTION(42,140); +ACE_EXPLOSION_REFLECTION(42,150); +ACE_EXPLOSION_REFLECTION(42,160); +ACE_EXPLOSION_REFLECTION(42,170); +ACE_EXPLOSION_REFLECTION(42,180); +ACE_EXPLOSION_REFLECTION(42,190); +ACE_EXPLOSION_REFLECTION(42,200); +ACE_EXPLOSION_REFLECTION(42,210); +ACE_EXPLOSION_REFLECTION(42,220); +ACE_EXPLOSION_REFLECTION(42,230); +ACE_EXPLOSION_REFLECTION(42,240); +ACE_EXPLOSION_REFLECTION(42,250); +ACE_EXPLOSION_REFLECTION(42,260); +ACE_EXPLOSION_REFLECTION(42,270); +ACE_EXPLOSION_REFLECTION(42,280); +ACE_EXPLOSION_REFLECTION(42,290); +ACE_EXPLOSION_REFLECTION(42,300); +ACE_EXPLOSION_REFLECTION(42,310); +ACE_EXPLOSION_REFLECTION(42,320); +ACE_EXPLOSION_REFLECTION(42,330); +ACE_EXPLOSION_REFLECTION(42,340); +ACE_EXPLOSION_REFLECTION(42,350); +ACE_EXPLOSION_REFLECTION(42,360); +ACE_EXPLOSION_REFLECTION(42,370); +ACE_EXPLOSION_REFLECTION(42,380); +ACE_EXPLOSION_REFLECTION(42,390); +ACE_EXPLOSION_REFLECTION(42,400); +ACE_EXPLOSION_REFLECTION(42,410); +ACE_EXPLOSION_REFLECTION(42,420); +ACE_EXPLOSION_REFLECTION(42,430); +ACE_EXPLOSION_REFLECTION(42,440); +ACE_EXPLOSION_REFLECTION(42,450); +ACE_EXPLOSION_REFLECTION(42,460); +ACE_EXPLOSION_REFLECTION(42,470); +ACE_EXPLOSION_REFLECTION(42,480); +ACE_EXPLOSION_REFLECTION(42,490); +ACE_EXPLOSION_REFLECTION(42,500); +ACE_EXPLOSION_REFLECTION(44,10); +ACE_EXPLOSION_REFLECTION(44,20); +ACE_EXPLOSION_REFLECTION(44,30); +ACE_EXPLOSION_REFLECTION(44,40); +ACE_EXPLOSION_REFLECTION(44,50); +ACE_EXPLOSION_REFLECTION(44,60); +ACE_EXPLOSION_REFLECTION(44,70); +ACE_EXPLOSION_REFLECTION(44,80); +ACE_EXPLOSION_REFLECTION(44,90); +ACE_EXPLOSION_REFLECTION(44,100); +ACE_EXPLOSION_REFLECTION(44,110); +ACE_EXPLOSION_REFLECTION(44,120); +ACE_EXPLOSION_REFLECTION(44,130); +ACE_EXPLOSION_REFLECTION(44,140); +ACE_EXPLOSION_REFLECTION(44,150); +ACE_EXPLOSION_REFLECTION(44,160); +ACE_EXPLOSION_REFLECTION(44,170); +ACE_EXPLOSION_REFLECTION(44,180); +ACE_EXPLOSION_REFLECTION(44,190); +ACE_EXPLOSION_REFLECTION(44,200); +ACE_EXPLOSION_REFLECTION(44,210); +ACE_EXPLOSION_REFLECTION(44,220); +ACE_EXPLOSION_REFLECTION(44,230); +ACE_EXPLOSION_REFLECTION(44,240); +ACE_EXPLOSION_REFLECTION(44,250); +ACE_EXPLOSION_REFLECTION(44,260); +ACE_EXPLOSION_REFLECTION(44,270); +ACE_EXPLOSION_REFLECTION(44,280); +ACE_EXPLOSION_REFLECTION(44,290); +ACE_EXPLOSION_REFLECTION(44,300); +ACE_EXPLOSION_REFLECTION(44,310); +ACE_EXPLOSION_REFLECTION(44,320); +ACE_EXPLOSION_REFLECTION(44,330); +ACE_EXPLOSION_REFLECTION(44,340); +ACE_EXPLOSION_REFLECTION(44,350); +ACE_EXPLOSION_REFLECTION(44,360); +ACE_EXPLOSION_REFLECTION(44,370); +ACE_EXPLOSION_REFLECTION(44,380); +ACE_EXPLOSION_REFLECTION(44,390); +ACE_EXPLOSION_REFLECTION(44,400); +ACE_EXPLOSION_REFLECTION(44,410); +ACE_EXPLOSION_REFLECTION(44,420); +ACE_EXPLOSION_REFLECTION(44,430); +ACE_EXPLOSION_REFLECTION(44,440); +ACE_EXPLOSION_REFLECTION(44,450); +ACE_EXPLOSION_REFLECTION(44,460); +ACE_EXPLOSION_REFLECTION(44,470); +ACE_EXPLOSION_REFLECTION(44,480); +ACE_EXPLOSION_REFLECTION(44,490); +ACE_EXPLOSION_REFLECTION(44,500); +ACE_EXPLOSION_REFLECTION(46,10); +ACE_EXPLOSION_REFLECTION(46,20); +ACE_EXPLOSION_REFLECTION(46,30); +ACE_EXPLOSION_REFLECTION(46,40); +ACE_EXPLOSION_REFLECTION(46,50); +ACE_EXPLOSION_REFLECTION(46,60); +ACE_EXPLOSION_REFLECTION(46,70); +ACE_EXPLOSION_REFLECTION(46,80); +ACE_EXPLOSION_REFLECTION(46,90); +ACE_EXPLOSION_REFLECTION(46,100); +ACE_EXPLOSION_REFLECTION(46,110); +ACE_EXPLOSION_REFLECTION(46,120); +ACE_EXPLOSION_REFLECTION(46,130); +ACE_EXPLOSION_REFLECTION(46,140); +ACE_EXPLOSION_REFLECTION(46,150); +ACE_EXPLOSION_REFLECTION(46,160); +ACE_EXPLOSION_REFLECTION(46,170); +ACE_EXPLOSION_REFLECTION(46,180); +ACE_EXPLOSION_REFLECTION(46,190); +ACE_EXPLOSION_REFLECTION(46,200); +ACE_EXPLOSION_REFLECTION(46,210); +ACE_EXPLOSION_REFLECTION(46,220); +ACE_EXPLOSION_REFLECTION(46,230); +ACE_EXPLOSION_REFLECTION(46,240); +ACE_EXPLOSION_REFLECTION(46,250); +ACE_EXPLOSION_REFLECTION(46,260); +ACE_EXPLOSION_REFLECTION(46,270); +ACE_EXPLOSION_REFLECTION(46,280); +ACE_EXPLOSION_REFLECTION(46,290); +ACE_EXPLOSION_REFLECTION(46,300); +ACE_EXPLOSION_REFLECTION(46,310); +ACE_EXPLOSION_REFLECTION(46,320); +ACE_EXPLOSION_REFLECTION(46,330); +ACE_EXPLOSION_REFLECTION(46,340); +ACE_EXPLOSION_REFLECTION(46,350); +ACE_EXPLOSION_REFLECTION(46,360); +ACE_EXPLOSION_REFLECTION(46,370); +ACE_EXPLOSION_REFLECTION(46,380); +ACE_EXPLOSION_REFLECTION(46,390); +ACE_EXPLOSION_REFLECTION(46,400); +ACE_EXPLOSION_REFLECTION(46,410); +ACE_EXPLOSION_REFLECTION(46,420); +ACE_EXPLOSION_REFLECTION(46,430); +ACE_EXPLOSION_REFLECTION(46,440); +ACE_EXPLOSION_REFLECTION(46,450); +ACE_EXPLOSION_REFLECTION(46,460); +ACE_EXPLOSION_REFLECTION(46,470); +ACE_EXPLOSION_REFLECTION(46,480); +ACE_EXPLOSION_REFLECTION(46,490); +ACE_EXPLOSION_REFLECTION(46,500); +ACE_EXPLOSION_REFLECTION(48,10); +ACE_EXPLOSION_REFLECTION(48,20); +ACE_EXPLOSION_REFLECTION(48,30); +ACE_EXPLOSION_REFLECTION(48,40); +ACE_EXPLOSION_REFLECTION(48,50); +ACE_EXPLOSION_REFLECTION(48,60); +ACE_EXPLOSION_REFLECTION(48,70); +ACE_EXPLOSION_REFLECTION(48,80); +ACE_EXPLOSION_REFLECTION(48,90); +ACE_EXPLOSION_REFLECTION(48,100); +ACE_EXPLOSION_REFLECTION(48,110); +ACE_EXPLOSION_REFLECTION(48,120); +ACE_EXPLOSION_REFLECTION(48,130); +ACE_EXPLOSION_REFLECTION(48,140); +ACE_EXPLOSION_REFLECTION(48,150); +ACE_EXPLOSION_REFLECTION(48,160); +ACE_EXPLOSION_REFLECTION(48,170); +ACE_EXPLOSION_REFLECTION(48,180); +ACE_EXPLOSION_REFLECTION(48,190); +ACE_EXPLOSION_REFLECTION(48,200); +ACE_EXPLOSION_REFLECTION(48,210); +ACE_EXPLOSION_REFLECTION(48,220); +ACE_EXPLOSION_REFLECTION(48,230); +ACE_EXPLOSION_REFLECTION(48,240); +ACE_EXPLOSION_REFLECTION(48,250); +ACE_EXPLOSION_REFLECTION(48,260); +ACE_EXPLOSION_REFLECTION(48,270); +ACE_EXPLOSION_REFLECTION(48,280); +ACE_EXPLOSION_REFLECTION(48,290); +ACE_EXPLOSION_REFLECTION(48,300); +ACE_EXPLOSION_REFLECTION(48,310); +ACE_EXPLOSION_REFLECTION(48,320); +ACE_EXPLOSION_REFLECTION(48,330); +ACE_EXPLOSION_REFLECTION(48,340); +ACE_EXPLOSION_REFLECTION(48,350); +ACE_EXPLOSION_REFLECTION(48,360); +ACE_EXPLOSION_REFLECTION(48,370); +ACE_EXPLOSION_REFLECTION(48,380); +ACE_EXPLOSION_REFLECTION(48,390); +ACE_EXPLOSION_REFLECTION(48,400); +ACE_EXPLOSION_REFLECTION(48,410); +ACE_EXPLOSION_REFLECTION(48,420); +ACE_EXPLOSION_REFLECTION(48,430); +ACE_EXPLOSION_REFLECTION(48,440); +ACE_EXPLOSION_REFLECTION(48,450); +ACE_EXPLOSION_REFLECTION(48,460); +ACE_EXPLOSION_REFLECTION(48,470); +ACE_EXPLOSION_REFLECTION(48,480); +ACE_EXPLOSION_REFLECTION(48,490); +ACE_EXPLOSION_REFLECTION(48,500); +ACE_EXPLOSION_REFLECTION(50,10); +ACE_EXPLOSION_REFLECTION(50,20); +ACE_EXPLOSION_REFLECTION(50,30); +ACE_EXPLOSION_REFLECTION(50,40); +ACE_EXPLOSION_REFLECTION(50,50); +ACE_EXPLOSION_REFLECTION(50,60); +ACE_EXPLOSION_REFLECTION(50,70); +ACE_EXPLOSION_REFLECTION(50,80); +ACE_EXPLOSION_REFLECTION(50,90); +ACE_EXPLOSION_REFLECTION(50,100); +ACE_EXPLOSION_REFLECTION(50,110); +ACE_EXPLOSION_REFLECTION(50,120); +ACE_EXPLOSION_REFLECTION(50,130); +ACE_EXPLOSION_REFLECTION(50,140); +ACE_EXPLOSION_REFLECTION(50,150); +ACE_EXPLOSION_REFLECTION(50,160); +ACE_EXPLOSION_REFLECTION(50,170); +ACE_EXPLOSION_REFLECTION(50,180); +ACE_EXPLOSION_REFLECTION(50,190); +ACE_EXPLOSION_REFLECTION(50,200); +ACE_EXPLOSION_REFLECTION(50,210); +ACE_EXPLOSION_REFLECTION(50,220); +ACE_EXPLOSION_REFLECTION(50,230); +ACE_EXPLOSION_REFLECTION(50,240); +ACE_EXPLOSION_REFLECTION(50,250); +ACE_EXPLOSION_REFLECTION(50,260); +ACE_EXPLOSION_REFLECTION(50,270); +ACE_EXPLOSION_REFLECTION(50,280); +ACE_EXPLOSION_REFLECTION(50,290); +ACE_EXPLOSION_REFLECTION(50,300); +ACE_EXPLOSION_REFLECTION(50,310); +ACE_EXPLOSION_REFLECTION(50,320); +ACE_EXPLOSION_REFLECTION(50,330); +ACE_EXPLOSION_REFLECTION(50,340); +ACE_EXPLOSION_REFLECTION(50,350); +ACE_EXPLOSION_REFLECTION(50,360); +ACE_EXPLOSION_REFLECTION(50,370); +ACE_EXPLOSION_REFLECTION(50,380); +ACE_EXPLOSION_REFLECTION(50,390); +ACE_EXPLOSION_REFLECTION(50,400); +ACE_EXPLOSION_REFLECTION(50,410); +ACE_EXPLOSION_REFLECTION(50,420); +ACE_EXPLOSION_REFLECTION(50,430); +ACE_EXPLOSION_REFLECTION(50,440); +ACE_EXPLOSION_REFLECTION(50,450); +ACE_EXPLOSION_REFLECTION(50,460); +ACE_EXPLOSION_REFLECTION(50,470); +ACE_EXPLOSION_REFLECTION(50,480); +ACE_EXPLOSION_REFLECTION(50,490); +ACE_EXPLOSION_REFLECTION(50,500); +ACE_EXPLOSION_REFLECTION(52,10); +ACE_EXPLOSION_REFLECTION(52,20); +ACE_EXPLOSION_REFLECTION(52,30); +ACE_EXPLOSION_REFLECTION(52,40); +ACE_EXPLOSION_REFLECTION(52,50); +ACE_EXPLOSION_REFLECTION(52,60); +ACE_EXPLOSION_REFLECTION(52,70); +ACE_EXPLOSION_REFLECTION(52,80); +ACE_EXPLOSION_REFLECTION(52,90); +ACE_EXPLOSION_REFLECTION(52,100); +ACE_EXPLOSION_REFLECTION(52,110); +ACE_EXPLOSION_REFLECTION(52,120); +ACE_EXPLOSION_REFLECTION(52,130); +ACE_EXPLOSION_REFLECTION(52,140); +ACE_EXPLOSION_REFLECTION(52,150); +ACE_EXPLOSION_REFLECTION(52,160); +ACE_EXPLOSION_REFLECTION(52,170); +ACE_EXPLOSION_REFLECTION(52,180); +ACE_EXPLOSION_REFLECTION(52,190); +ACE_EXPLOSION_REFLECTION(52,200); +ACE_EXPLOSION_REFLECTION(52,210); +ACE_EXPLOSION_REFLECTION(52,220); +ACE_EXPLOSION_REFLECTION(52,230); +ACE_EXPLOSION_REFLECTION(52,240); +ACE_EXPLOSION_REFLECTION(52,250); +ACE_EXPLOSION_REFLECTION(52,260); +ACE_EXPLOSION_REFLECTION(52,270); +ACE_EXPLOSION_REFLECTION(52,280); +ACE_EXPLOSION_REFLECTION(52,290); +ACE_EXPLOSION_REFLECTION(52,300); +ACE_EXPLOSION_REFLECTION(52,310); +ACE_EXPLOSION_REFLECTION(52,320); +ACE_EXPLOSION_REFLECTION(52,330); +ACE_EXPLOSION_REFLECTION(52,340); +ACE_EXPLOSION_REFLECTION(52,350); +ACE_EXPLOSION_REFLECTION(52,360); +ACE_EXPLOSION_REFLECTION(52,370); +ACE_EXPLOSION_REFLECTION(52,380); +ACE_EXPLOSION_REFLECTION(52,390); +ACE_EXPLOSION_REFLECTION(52,400); +ACE_EXPLOSION_REFLECTION(52,410); +ACE_EXPLOSION_REFLECTION(52,420); +ACE_EXPLOSION_REFLECTION(52,430); +ACE_EXPLOSION_REFLECTION(52,440); +ACE_EXPLOSION_REFLECTION(52,450); +ACE_EXPLOSION_REFLECTION(52,460); +ACE_EXPLOSION_REFLECTION(52,470); +ACE_EXPLOSION_REFLECTION(52,480); +ACE_EXPLOSION_REFLECTION(52,490); +ACE_EXPLOSION_REFLECTION(52,500); +ACE_EXPLOSION_REFLECTION(54,10); +ACE_EXPLOSION_REFLECTION(54,20); +ACE_EXPLOSION_REFLECTION(54,30); +ACE_EXPLOSION_REFLECTION(54,40); +ACE_EXPLOSION_REFLECTION(54,50); +ACE_EXPLOSION_REFLECTION(54,60); +ACE_EXPLOSION_REFLECTION(54,70); +ACE_EXPLOSION_REFLECTION(54,80); +ACE_EXPLOSION_REFLECTION(54,90); +ACE_EXPLOSION_REFLECTION(54,100); +ACE_EXPLOSION_REFLECTION(54,110); +ACE_EXPLOSION_REFLECTION(54,120); +ACE_EXPLOSION_REFLECTION(54,130); +ACE_EXPLOSION_REFLECTION(54,140); +ACE_EXPLOSION_REFLECTION(54,150); +ACE_EXPLOSION_REFLECTION(54,160); +ACE_EXPLOSION_REFLECTION(54,170); +ACE_EXPLOSION_REFLECTION(54,180); +ACE_EXPLOSION_REFLECTION(54,190); +ACE_EXPLOSION_REFLECTION(54,200); +ACE_EXPLOSION_REFLECTION(54,210); +ACE_EXPLOSION_REFLECTION(54,220); +ACE_EXPLOSION_REFLECTION(54,230); +ACE_EXPLOSION_REFLECTION(54,240); +ACE_EXPLOSION_REFLECTION(54,250); +ACE_EXPLOSION_REFLECTION(54,260); +ACE_EXPLOSION_REFLECTION(54,270); +ACE_EXPLOSION_REFLECTION(54,280); +ACE_EXPLOSION_REFLECTION(54,290); +ACE_EXPLOSION_REFLECTION(54,300); +ACE_EXPLOSION_REFLECTION(54,310); +ACE_EXPLOSION_REFLECTION(54,320); +ACE_EXPLOSION_REFLECTION(54,330); +ACE_EXPLOSION_REFLECTION(54,340); +ACE_EXPLOSION_REFLECTION(54,350); +ACE_EXPLOSION_REFLECTION(54,360); +ACE_EXPLOSION_REFLECTION(54,370); +ACE_EXPLOSION_REFLECTION(54,380); +ACE_EXPLOSION_REFLECTION(54,390); +ACE_EXPLOSION_REFLECTION(54,400); +ACE_EXPLOSION_REFLECTION(54,410); +ACE_EXPLOSION_REFLECTION(54,420); +ACE_EXPLOSION_REFLECTION(54,430); +ACE_EXPLOSION_REFLECTION(54,440); +ACE_EXPLOSION_REFLECTION(54,450); +ACE_EXPLOSION_REFLECTION(54,460); +ACE_EXPLOSION_REFLECTION(54,470); +ACE_EXPLOSION_REFLECTION(54,480); +ACE_EXPLOSION_REFLECTION(54,490); +ACE_EXPLOSION_REFLECTION(54,500); +ACE_EXPLOSION_REFLECTION(56,10); +ACE_EXPLOSION_REFLECTION(56,20); +ACE_EXPLOSION_REFLECTION(56,30); +ACE_EXPLOSION_REFLECTION(56,40); +ACE_EXPLOSION_REFLECTION(56,50); +ACE_EXPLOSION_REFLECTION(56,60); +ACE_EXPLOSION_REFLECTION(56,70); +ACE_EXPLOSION_REFLECTION(56,80); +ACE_EXPLOSION_REFLECTION(56,90); +ACE_EXPLOSION_REFLECTION(56,100); +ACE_EXPLOSION_REFLECTION(56,110); +ACE_EXPLOSION_REFLECTION(56,120); +ACE_EXPLOSION_REFLECTION(56,130); +ACE_EXPLOSION_REFLECTION(56,140); +ACE_EXPLOSION_REFLECTION(56,150); +ACE_EXPLOSION_REFLECTION(56,160); +ACE_EXPLOSION_REFLECTION(56,170); +ACE_EXPLOSION_REFLECTION(56,180); +ACE_EXPLOSION_REFLECTION(56,190); +ACE_EXPLOSION_REFLECTION(56,200); +ACE_EXPLOSION_REFLECTION(56,210); +ACE_EXPLOSION_REFLECTION(56,220); +ACE_EXPLOSION_REFLECTION(56,230); +ACE_EXPLOSION_REFLECTION(56,240); +ACE_EXPLOSION_REFLECTION(56,250); +ACE_EXPLOSION_REFLECTION(56,260); +ACE_EXPLOSION_REFLECTION(56,270); +ACE_EXPLOSION_REFLECTION(56,280); +ACE_EXPLOSION_REFLECTION(56,290); +ACE_EXPLOSION_REFLECTION(56,300); +ACE_EXPLOSION_REFLECTION(56,310); +ACE_EXPLOSION_REFLECTION(56,320); +ACE_EXPLOSION_REFLECTION(56,330); +ACE_EXPLOSION_REFLECTION(56,340); +ACE_EXPLOSION_REFLECTION(56,350); +ACE_EXPLOSION_REFLECTION(56,360); +ACE_EXPLOSION_REFLECTION(56,370); +ACE_EXPLOSION_REFLECTION(56,380); +ACE_EXPLOSION_REFLECTION(56,390); +ACE_EXPLOSION_REFLECTION(56,400); +ACE_EXPLOSION_REFLECTION(56,410); +ACE_EXPLOSION_REFLECTION(56,420); +ACE_EXPLOSION_REFLECTION(56,430); +ACE_EXPLOSION_REFLECTION(56,440); +ACE_EXPLOSION_REFLECTION(56,450); +ACE_EXPLOSION_REFLECTION(56,460); +ACE_EXPLOSION_REFLECTION(56,470); +ACE_EXPLOSION_REFLECTION(56,480); +ACE_EXPLOSION_REFLECTION(56,490); +ACE_EXPLOSION_REFLECTION(56,500); +ACE_EXPLOSION_REFLECTION(58,10); +ACE_EXPLOSION_REFLECTION(58,20); +ACE_EXPLOSION_REFLECTION(58,30); +ACE_EXPLOSION_REFLECTION(58,40); +ACE_EXPLOSION_REFLECTION(58,50); +ACE_EXPLOSION_REFLECTION(58,60); +ACE_EXPLOSION_REFLECTION(58,70); +ACE_EXPLOSION_REFLECTION(58,80); +ACE_EXPLOSION_REFLECTION(58,90); +ACE_EXPLOSION_REFLECTION(58,100); +ACE_EXPLOSION_REFLECTION(58,110); +ACE_EXPLOSION_REFLECTION(58,120); +ACE_EXPLOSION_REFLECTION(58,130); +ACE_EXPLOSION_REFLECTION(58,140); +ACE_EXPLOSION_REFLECTION(58,150); +ACE_EXPLOSION_REFLECTION(58,160); +ACE_EXPLOSION_REFLECTION(58,170); +ACE_EXPLOSION_REFLECTION(58,180); +ACE_EXPLOSION_REFLECTION(58,190); +ACE_EXPLOSION_REFLECTION(58,200); +ACE_EXPLOSION_REFLECTION(58,210); +ACE_EXPLOSION_REFLECTION(58,220); +ACE_EXPLOSION_REFLECTION(58,230); +ACE_EXPLOSION_REFLECTION(58,240); +ACE_EXPLOSION_REFLECTION(58,250); +ACE_EXPLOSION_REFLECTION(58,260); +ACE_EXPLOSION_REFLECTION(58,270); +ACE_EXPLOSION_REFLECTION(58,280); +ACE_EXPLOSION_REFLECTION(58,290); +ACE_EXPLOSION_REFLECTION(58,300); +ACE_EXPLOSION_REFLECTION(58,310); +ACE_EXPLOSION_REFLECTION(58,320); +ACE_EXPLOSION_REFLECTION(58,330); +ACE_EXPLOSION_REFLECTION(58,340); +ACE_EXPLOSION_REFLECTION(58,350); +ACE_EXPLOSION_REFLECTION(58,360); +ACE_EXPLOSION_REFLECTION(58,370); +ACE_EXPLOSION_REFLECTION(58,380); +ACE_EXPLOSION_REFLECTION(58,390); +ACE_EXPLOSION_REFLECTION(58,400); +ACE_EXPLOSION_REFLECTION(58,410); +ACE_EXPLOSION_REFLECTION(58,420); +ACE_EXPLOSION_REFLECTION(58,430); +ACE_EXPLOSION_REFLECTION(58,440); +ACE_EXPLOSION_REFLECTION(58,450); +ACE_EXPLOSION_REFLECTION(58,460); +ACE_EXPLOSION_REFLECTION(58,470); +ACE_EXPLOSION_REFLECTION(58,480); +ACE_EXPLOSION_REFLECTION(58,490); +ACE_EXPLOSION_REFLECTION(58,500); +ACE_EXPLOSION_REFLECTION(60,10); +ACE_EXPLOSION_REFLECTION(60,20); +ACE_EXPLOSION_REFLECTION(60,30); +ACE_EXPLOSION_REFLECTION(60,40); +ACE_EXPLOSION_REFLECTION(60,50); +ACE_EXPLOSION_REFLECTION(60,60); +ACE_EXPLOSION_REFLECTION(60,70); +ACE_EXPLOSION_REFLECTION(60,80); +ACE_EXPLOSION_REFLECTION(60,90); +ACE_EXPLOSION_REFLECTION(60,100); +ACE_EXPLOSION_REFLECTION(60,110); +ACE_EXPLOSION_REFLECTION(60,120); +ACE_EXPLOSION_REFLECTION(60,130); +ACE_EXPLOSION_REFLECTION(60,140); +ACE_EXPLOSION_REFLECTION(60,150); +ACE_EXPLOSION_REFLECTION(60,160); +ACE_EXPLOSION_REFLECTION(60,170); +ACE_EXPLOSION_REFLECTION(60,180); +ACE_EXPLOSION_REFLECTION(60,190); +ACE_EXPLOSION_REFLECTION(60,200); +ACE_EXPLOSION_REFLECTION(60,210); +ACE_EXPLOSION_REFLECTION(60,220); +ACE_EXPLOSION_REFLECTION(60,230); +ACE_EXPLOSION_REFLECTION(60,240); +ACE_EXPLOSION_REFLECTION(60,250); +ACE_EXPLOSION_REFLECTION(60,260); +ACE_EXPLOSION_REFLECTION(60,270); +ACE_EXPLOSION_REFLECTION(60,280); +ACE_EXPLOSION_REFLECTION(60,290); +ACE_EXPLOSION_REFLECTION(60,300); +ACE_EXPLOSION_REFLECTION(60,310); +ACE_EXPLOSION_REFLECTION(60,320); +ACE_EXPLOSION_REFLECTION(60,330); +ACE_EXPLOSION_REFLECTION(60,340); +ACE_EXPLOSION_REFLECTION(60,350); +ACE_EXPLOSION_REFLECTION(60,360); +ACE_EXPLOSION_REFLECTION(60,370); +ACE_EXPLOSION_REFLECTION(60,380); +ACE_EXPLOSION_REFLECTION(60,390); +ACE_EXPLOSION_REFLECTION(60,400); +ACE_EXPLOSION_REFLECTION(60,410); +ACE_EXPLOSION_REFLECTION(60,420); +ACE_EXPLOSION_REFLECTION(60,430); +ACE_EXPLOSION_REFLECTION(60,440); +ACE_EXPLOSION_REFLECTION(60,450); +ACE_EXPLOSION_REFLECTION(60,460); +ACE_EXPLOSION_REFLECTION(60,470); +ACE_EXPLOSION_REFLECTION(60,480); +ACE_EXPLOSION_REFLECTION(60,490); +ACE_EXPLOSION_REFLECTION(60,500); +ACE_EXPLOSION_REFLECTION(62,10); +ACE_EXPLOSION_REFLECTION(62,20); +ACE_EXPLOSION_REFLECTION(62,30); +ACE_EXPLOSION_REFLECTION(62,40); +ACE_EXPLOSION_REFLECTION(62,50); +ACE_EXPLOSION_REFLECTION(62,60); +ACE_EXPLOSION_REFLECTION(62,70); +ACE_EXPLOSION_REFLECTION(62,80); +ACE_EXPLOSION_REFLECTION(62,90); +ACE_EXPLOSION_REFLECTION(62,100); +ACE_EXPLOSION_REFLECTION(62,110); +ACE_EXPLOSION_REFLECTION(62,120); +ACE_EXPLOSION_REFLECTION(62,130); +ACE_EXPLOSION_REFLECTION(62,140); +ACE_EXPLOSION_REFLECTION(62,150); +ACE_EXPLOSION_REFLECTION(62,160); +ACE_EXPLOSION_REFLECTION(62,170); +ACE_EXPLOSION_REFLECTION(62,180); +ACE_EXPLOSION_REFLECTION(62,190); +ACE_EXPLOSION_REFLECTION(62,200); +ACE_EXPLOSION_REFLECTION(62,210); +ACE_EXPLOSION_REFLECTION(62,220); +ACE_EXPLOSION_REFLECTION(62,230); +ACE_EXPLOSION_REFLECTION(62,240); +ACE_EXPLOSION_REFLECTION(62,250); +ACE_EXPLOSION_REFLECTION(62,260); +ACE_EXPLOSION_REFLECTION(62,270); +ACE_EXPLOSION_REFLECTION(62,280); +ACE_EXPLOSION_REFLECTION(62,290); +ACE_EXPLOSION_REFLECTION(62,300); +ACE_EXPLOSION_REFLECTION(62,310); +ACE_EXPLOSION_REFLECTION(62,320); +ACE_EXPLOSION_REFLECTION(62,330); +ACE_EXPLOSION_REFLECTION(62,340); +ACE_EXPLOSION_REFLECTION(62,350); +ACE_EXPLOSION_REFLECTION(62,360); +ACE_EXPLOSION_REFLECTION(62,370); +ACE_EXPLOSION_REFLECTION(62,380); +ACE_EXPLOSION_REFLECTION(62,390); +ACE_EXPLOSION_REFLECTION(62,400); +ACE_EXPLOSION_REFLECTION(62,410); +ACE_EXPLOSION_REFLECTION(62,420); +ACE_EXPLOSION_REFLECTION(62,430); +ACE_EXPLOSION_REFLECTION(62,440); +ACE_EXPLOSION_REFLECTION(62,450); +ACE_EXPLOSION_REFLECTION(62,460); +ACE_EXPLOSION_REFLECTION(62,470); +ACE_EXPLOSION_REFLECTION(62,480); +ACE_EXPLOSION_REFLECTION(62,490); +ACE_EXPLOSION_REFLECTION(62,500); +ACE_EXPLOSION_REFLECTION(64,10); +ACE_EXPLOSION_REFLECTION(64,20); +ACE_EXPLOSION_REFLECTION(64,30); +ACE_EXPLOSION_REFLECTION(64,40); +ACE_EXPLOSION_REFLECTION(64,50); +ACE_EXPLOSION_REFLECTION(64,60); +ACE_EXPLOSION_REFLECTION(64,70); +ACE_EXPLOSION_REFLECTION(64,80); +ACE_EXPLOSION_REFLECTION(64,90); +ACE_EXPLOSION_REFLECTION(64,100); +ACE_EXPLOSION_REFLECTION(64,110); +ACE_EXPLOSION_REFLECTION(64,120); +ACE_EXPLOSION_REFLECTION(64,130); +ACE_EXPLOSION_REFLECTION(64,140); +ACE_EXPLOSION_REFLECTION(64,150); +ACE_EXPLOSION_REFLECTION(64,160); +ACE_EXPLOSION_REFLECTION(64,170); +ACE_EXPLOSION_REFLECTION(64,180); +ACE_EXPLOSION_REFLECTION(64,190); +ACE_EXPLOSION_REFLECTION(64,200); +ACE_EXPLOSION_REFLECTION(64,210); +ACE_EXPLOSION_REFLECTION(64,220); +ACE_EXPLOSION_REFLECTION(64,230); +ACE_EXPLOSION_REFLECTION(64,240); +ACE_EXPLOSION_REFLECTION(64,250); +ACE_EXPLOSION_REFLECTION(64,260); +ACE_EXPLOSION_REFLECTION(64,270); +ACE_EXPLOSION_REFLECTION(64,280); +ACE_EXPLOSION_REFLECTION(64,290); +ACE_EXPLOSION_REFLECTION(64,300); +ACE_EXPLOSION_REFLECTION(64,310); +ACE_EXPLOSION_REFLECTION(64,320); +ACE_EXPLOSION_REFLECTION(64,330); +ACE_EXPLOSION_REFLECTION(64,340); +ACE_EXPLOSION_REFLECTION(64,350); +ACE_EXPLOSION_REFLECTION(64,360); +ACE_EXPLOSION_REFLECTION(64,370); +ACE_EXPLOSION_REFLECTION(64,380); +ACE_EXPLOSION_REFLECTION(64,390); +ACE_EXPLOSION_REFLECTION(64,400); +ACE_EXPLOSION_REFLECTION(64,410); +ACE_EXPLOSION_REFLECTION(64,420); +ACE_EXPLOSION_REFLECTION(64,430); +ACE_EXPLOSION_REFLECTION(64,440); +ACE_EXPLOSION_REFLECTION(64,450); +ACE_EXPLOSION_REFLECTION(64,460); +ACE_EXPLOSION_REFLECTION(64,470); +ACE_EXPLOSION_REFLECTION(64,480); +ACE_EXPLOSION_REFLECTION(64,490); +ACE_EXPLOSION_REFLECTION(64,500); +ACE_EXPLOSION_REFLECTION(66,10); +ACE_EXPLOSION_REFLECTION(66,20); +ACE_EXPLOSION_REFLECTION(66,30); +ACE_EXPLOSION_REFLECTION(66,40); +ACE_EXPLOSION_REFLECTION(66,50); +ACE_EXPLOSION_REFLECTION(66,60); +ACE_EXPLOSION_REFLECTION(66,70); +ACE_EXPLOSION_REFLECTION(66,80); +ACE_EXPLOSION_REFLECTION(66,90); +ACE_EXPLOSION_REFLECTION(66,100); +ACE_EXPLOSION_REFLECTION(66,110); +ACE_EXPLOSION_REFLECTION(66,120); +ACE_EXPLOSION_REFLECTION(66,130); +ACE_EXPLOSION_REFLECTION(66,140); +ACE_EXPLOSION_REFLECTION(66,150); +ACE_EXPLOSION_REFLECTION(66,160); +ACE_EXPLOSION_REFLECTION(66,170); +ACE_EXPLOSION_REFLECTION(66,180); +ACE_EXPLOSION_REFLECTION(66,190); +ACE_EXPLOSION_REFLECTION(66,200); +ACE_EXPLOSION_REFLECTION(66,210); +ACE_EXPLOSION_REFLECTION(66,220); +ACE_EXPLOSION_REFLECTION(66,230); +ACE_EXPLOSION_REFLECTION(66,240); +ACE_EXPLOSION_REFLECTION(66,250); +ACE_EXPLOSION_REFLECTION(66,260); +ACE_EXPLOSION_REFLECTION(66,270); +ACE_EXPLOSION_REFLECTION(66,280); +ACE_EXPLOSION_REFLECTION(66,290); +ACE_EXPLOSION_REFLECTION(66,300); +ACE_EXPLOSION_REFLECTION(66,310); +ACE_EXPLOSION_REFLECTION(66,320); +ACE_EXPLOSION_REFLECTION(66,330); +ACE_EXPLOSION_REFLECTION(66,340); +ACE_EXPLOSION_REFLECTION(66,350); +ACE_EXPLOSION_REFLECTION(66,360); +ACE_EXPLOSION_REFLECTION(66,370); +ACE_EXPLOSION_REFLECTION(66,380); +ACE_EXPLOSION_REFLECTION(66,390); +ACE_EXPLOSION_REFLECTION(66,400); +ACE_EXPLOSION_REFLECTION(66,410); +ACE_EXPLOSION_REFLECTION(66,420); +ACE_EXPLOSION_REFLECTION(66,430); +ACE_EXPLOSION_REFLECTION(66,440); +ACE_EXPLOSION_REFLECTION(66,450); +ACE_EXPLOSION_REFLECTION(66,460); +ACE_EXPLOSION_REFLECTION(66,470); +ACE_EXPLOSION_REFLECTION(66,480); +ACE_EXPLOSION_REFLECTION(66,490); +ACE_EXPLOSION_REFLECTION(66,500); +ACE_EXPLOSION_REFLECTION(68,10); +ACE_EXPLOSION_REFLECTION(68,20); +ACE_EXPLOSION_REFLECTION(68,30); +ACE_EXPLOSION_REFLECTION(68,40); +ACE_EXPLOSION_REFLECTION(68,50); +ACE_EXPLOSION_REFLECTION(68,60); +ACE_EXPLOSION_REFLECTION(68,70); +ACE_EXPLOSION_REFLECTION(68,80); +ACE_EXPLOSION_REFLECTION(68,90); +ACE_EXPLOSION_REFLECTION(68,100); +ACE_EXPLOSION_REFLECTION(68,110); +ACE_EXPLOSION_REFLECTION(68,120); +ACE_EXPLOSION_REFLECTION(68,130); +ACE_EXPLOSION_REFLECTION(68,140); +ACE_EXPLOSION_REFLECTION(68,150); +ACE_EXPLOSION_REFLECTION(68,160); +ACE_EXPLOSION_REFLECTION(68,170); +ACE_EXPLOSION_REFLECTION(68,180); +ACE_EXPLOSION_REFLECTION(68,190); +ACE_EXPLOSION_REFLECTION(68,200); +ACE_EXPLOSION_REFLECTION(68,210); +ACE_EXPLOSION_REFLECTION(68,220); +ACE_EXPLOSION_REFLECTION(68,230); +ACE_EXPLOSION_REFLECTION(68,240); +ACE_EXPLOSION_REFLECTION(68,250); +ACE_EXPLOSION_REFLECTION(68,260); +ACE_EXPLOSION_REFLECTION(68,270); +ACE_EXPLOSION_REFLECTION(68,280); +ACE_EXPLOSION_REFLECTION(68,290); +ACE_EXPLOSION_REFLECTION(68,300); +ACE_EXPLOSION_REFLECTION(68,310); +ACE_EXPLOSION_REFLECTION(68,320); +ACE_EXPLOSION_REFLECTION(68,330); +ACE_EXPLOSION_REFLECTION(68,340); +ACE_EXPLOSION_REFLECTION(68,350); +ACE_EXPLOSION_REFLECTION(68,360); +ACE_EXPLOSION_REFLECTION(68,370); +ACE_EXPLOSION_REFLECTION(68,380); +ACE_EXPLOSION_REFLECTION(68,390); +ACE_EXPLOSION_REFLECTION(68,400); +ACE_EXPLOSION_REFLECTION(68,410); +ACE_EXPLOSION_REFLECTION(68,420); +ACE_EXPLOSION_REFLECTION(68,430); +ACE_EXPLOSION_REFLECTION(68,440); +ACE_EXPLOSION_REFLECTION(68,450); +ACE_EXPLOSION_REFLECTION(68,460); +ACE_EXPLOSION_REFLECTION(68,470); +ACE_EXPLOSION_REFLECTION(68,480); +ACE_EXPLOSION_REFLECTION(68,490); +ACE_EXPLOSION_REFLECTION(68,500); +ACE_EXPLOSION_REFLECTION(70,10); +ACE_EXPLOSION_REFLECTION(70,20); +ACE_EXPLOSION_REFLECTION(70,30); +ACE_EXPLOSION_REFLECTION(70,40); +ACE_EXPLOSION_REFLECTION(70,50); +ACE_EXPLOSION_REFLECTION(70,60); +ACE_EXPLOSION_REFLECTION(70,70); +ACE_EXPLOSION_REFLECTION(70,80); +ACE_EXPLOSION_REFLECTION(70,90); +ACE_EXPLOSION_REFLECTION(70,100); +ACE_EXPLOSION_REFLECTION(70,110); +ACE_EXPLOSION_REFLECTION(70,120); +ACE_EXPLOSION_REFLECTION(70,130); +ACE_EXPLOSION_REFLECTION(70,140); +ACE_EXPLOSION_REFLECTION(70,150); +ACE_EXPLOSION_REFLECTION(70,160); +ACE_EXPLOSION_REFLECTION(70,170); +ACE_EXPLOSION_REFLECTION(70,180); +ACE_EXPLOSION_REFLECTION(70,190); +ACE_EXPLOSION_REFLECTION(70,200); +ACE_EXPLOSION_REFLECTION(70,210); +ACE_EXPLOSION_REFLECTION(70,220); +ACE_EXPLOSION_REFLECTION(70,230); +ACE_EXPLOSION_REFLECTION(70,240); +ACE_EXPLOSION_REFLECTION(70,250); +ACE_EXPLOSION_REFLECTION(70,260); +ACE_EXPLOSION_REFLECTION(70,270); +ACE_EXPLOSION_REFLECTION(70,280); +ACE_EXPLOSION_REFLECTION(70,290); +ACE_EXPLOSION_REFLECTION(70,300); +ACE_EXPLOSION_REFLECTION(70,310); +ACE_EXPLOSION_REFLECTION(70,320); +ACE_EXPLOSION_REFLECTION(70,330); +ACE_EXPLOSION_REFLECTION(70,340); +ACE_EXPLOSION_REFLECTION(70,350); +ACE_EXPLOSION_REFLECTION(70,360); +ACE_EXPLOSION_REFLECTION(70,370); +ACE_EXPLOSION_REFLECTION(70,380); +ACE_EXPLOSION_REFLECTION(70,390); +ACE_EXPLOSION_REFLECTION(70,400); +ACE_EXPLOSION_REFLECTION(70,410); +ACE_EXPLOSION_REFLECTION(70,420); +ACE_EXPLOSION_REFLECTION(70,430); +ACE_EXPLOSION_REFLECTION(70,440); +ACE_EXPLOSION_REFLECTION(70,450); +ACE_EXPLOSION_REFLECTION(70,460); +ACE_EXPLOSION_REFLECTION(70,470); +ACE_EXPLOSION_REFLECTION(70,480); +ACE_EXPLOSION_REFLECTION(70,490); +ACE_EXPLOSION_REFLECTION(70,500); +ACE_EXPLOSION_REFLECTION(72,10); +ACE_EXPLOSION_REFLECTION(72,20); +ACE_EXPLOSION_REFLECTION(72,30); +ACE_EXPLOSION_REFLECTION(72,40); +ACE_EXPLOSION_REFLECTION(72,50); +ACE_EXPLOSION_REFLECTION(72,60); +ACE_EXPLOSION_REFLECTION(72,70); +ACE_EXPLOSION_REFLECTION(72,80); +ACE_EXPLOSION_REFLECTION(72,90); +ACE_EXPLOSION_REFLECTION(72,100); +ACE_EXPLOSION_REFLECTION(72,110); +ACE_EXPLOSION_REFLECTION(72,120); +ACE_EXPLOSION_REFLECTION(72,130); +ACE_EXPLOSION_REFLECTION(72,140); +ACE_EXPLOSION_REFLECTION(72,150); +ACE_EXPLOSION_REFLECTION(72,160); +ACE_EXPLOSION_REFLECTION(72,170); +ACE_EXPLOSION_REFLECTION(72,180); +ACE_EXPLOSION_REFLECTION(72,190); +ACE_EXPLOSION_REFLECTION(72,200); +ACE_EXPLOSION_REFLECTION(72,210); +ACE_EXPLOSION_REFLECTION(72,220); +ACE_EXPLOSION_REFLECTION(72,230); +ACE_EXPLOSION_REFLECTION(72,240); +ACE_EXPLOSION_REFLECTION(72,250); +ACE_EXPLOSION_REFLECTION(72,260); +ACE_EXPLOSION_REFLECTION(72,270); +ACE_EXPLOSION_REFLECTION(72,280); +ACE_EXPLOSION_REFLECTION(72,290); +ACE_EXPLOSION_REFLECTION(72,300); +ACE_EXPLOSION_REFLECTION(72,310); +ACE_EXPLOSION_REFLECTION(72,320); +ACE_EXPLOSION_REFLECTION(72,330); +ACE_EXPLOSION_REFLECTION(72,340); +ACE_EXPLOSION_REFLECTION(72,350); +ACE_EXPLOSION_REFLECTION(72,360); +ACE_EXPLOSION_REFLECTION(72,370); +ACE_EXPLOSION_REFLECTION(72,380); +ACE_EXPLOSION_REFLECTION(72,390); +ACE_EXPLOSION_REFLECTION(72,400); +ACE_EXPLOSION_REFLECTION(72,410); +ACE_EXPLOSION_REFLECTION(72,420); +ACE_EXPLOSION_REFLECTION(72,430); +ACE_EXPLOSION_REFLECTION(72,440); +ACE_EXPLOSION_REFLECTION(72,450); +ACE_EXPLOSION_REFLECTION(72,460); +ACE_EXPLOSION_REFLECTION(72,470); +ACE_EXPLOSION_REFLECTION(72,480); +ACE_EXPLOSION_REFLECTION(72,490); +ACE_EXPLOSION_REFLECTION(72,500); +ACE_EXPLOSION_REFLECTION(74,10); +ACE_EXPLOSION_REFLECTION(74,20); +ACE_EXPLOSION_REFLECTION(74,30); +ACE_EXPLOSION_REFLECTION(74,40); +ACE_EXPLOSION_REFLECTION(74,50); +ACE_EXPLOSION_REFLECTION(74,60); +ACE_EXPLOSION_REFLECTION(74,70); +ACE_EXPLOSION_REFLECTION(74,80); +ACE_EXPLOSION_REFLECTION(74,90); +ACE_EXPLOSION_REFLECTION(74,100); +ACE_EXPLOSION_REFLECTION(74,110); +ACE_EXPLOSION_REFLECTION(74,120); +ACE_EXPLOSION_REFLECTION(74,130); +ACE_EXPLOSION_REFLECTION(74,140); +ACE_EXPLOSION_REFLECTION(74,150); +ACE_EXPLOSION_REFLECTION(74,160); +ACE_EXPLOSION_REFLECTION(74,170); +ACE_EXPLOSION_REFLECTION(74,180); +ACE_EXPLOSION_REFLECTION(74,190); +ACE_EXPLOSION_REFLECTION(74,200); +ACE_EXPLOSION_REFLECTION(74,210); +ACE_EXPLOSION_REFLECTION(74,220); +ACE_EXPLOSION_REFLECTION(74,230); +ACE_EXPLOSION_REFLECTION(74,240); +ACE_EXPLOSION_REFLECTION(74,250); +ACE_EXPLOSION_REFLECTION(74,260); +ACE_EXPLOSION_REFLECTION(74,270); +ACE_EXPLOSION_REFLECTION(74,280); +ACE_EXPLOSION_REFLECTION(74,290); +ACE_EXPLOSION_REFLECTION(74,300); +ACE_EXPLOSION_REFLECTION(74,310); +ACE_EXPLOSION_REFLECTION(74,320); +ACE_EXPLOSION_REFLECTION(74,330); +ACE_EXPLOSION_REFLECTION(74,340); +ACE_EXPLOSION_REFLECTION(74,350); +ACE_EXPLOSION_REFLECTION(74,360); +ACE_EXPLOSION_REFLECTION(74,370); +ACE_EXPLOSION_REFLECTION(74,380); +ACE_EXPLOSION_REFLECTION(74,390); +ACE_EXPLOSION_REFLECTION(74,400); +ACE_EXPLOSION_REFLECTION(74,410); +ACE_EXPLOSION_REFLECTION(74,420); +ACE_EXPLOSION_REFLECTION(74,430); +ACE_EXPLOSION_REFLECTION(74,440); +ACE_EXPLOSION_REFLECTION(74,450); +ACE_EXPLOSION_REFLECTION(74,460); +ACE_EXPLOSION_REFLECTION(74,470); +ACE_EXPLOSION_REFLECTION(74,480); +ACE_EXPLOSION_REFLECTION(74,490); +ACE_EXPLOSION_REFLECTION(74,500); +ACE_EXPLOSION_REFLECTION(76,10); +ACE_EXPLOSION_REFLECTION(76,20); +ACE_EXPLOSION_REFLECTION(76,30); +ACE_EXPLOSION_REFLECTION(76,40); +ACE_EXPLOSION_REFLECTION(76,50); +ACE_EXPLOSION_REFLECTION(76,60); +ACE_EXPLOSION_REFLECTION(76,70); +ACE_EXPLOSION_REFLECTION(76,80); +ACE_EXPLOSION_REFLECTION(76,90); +ACE_EXPLOSION_REFLECTION(76,100); +ACE_EXPLOSION_REFLECTION(76,110); +ACE_EXPLOSION_REFLECTION(76,120); +ACE_EXPLOSION_REFLECTION(76,130); +ACE_EXPLOSION_REFLECTION(76,140); +ACE_EXPLOSION_REFLECTION(76,150); +ACE_EXPLOSION_REFLECTION(76,160); +ACE_EXPLOSION_REFLECTION(76,170); +ACE_EXPLOSION_REFLECTION(76,180); +ACE_EXPLOSION_REFLECTION(76,190); +ACE_EXPLOSION_REFLECTION(76,200); +ACE_EXPLOSION_REFLECTION(76,210); +ACE_EXPLOSION_REFLECTION(76,220); +ACE_EXPLOSION_REFLECTION(76,230); +ACE_EXPLOSION_REFLECTION(76,240); +ACE_EXPLOSION_REFLECTION(76,250); +ACE_EXPLOSION_REFLECTION(76,260); +ACE_EXPLOSION_REFLECTION(76,270); +ACE_EXPLOSION_REFLECTION(76,280); +ACE_EXPLOSION_REFLECTION(76,290); +ACE_EXPLOSION_REFLECTION(76,300); +ACE_EXPLOSION_REFLECTION(76,310); +ACE_EXPLOSION_REFLECTION(76,320); +ACE_EXPLOSION_REFLECTION(76,330); +ACE_EXPLOSION_REFLECTION(76,340); +ACE_EXPLOSION_REFLECTION(76,350); +ACE_EXPLOSION_REFLECTION(76,360); +ACE_EXPLOSION_REFLECTION(76,370); +ACE_EXPLOSION_REFLECTION(76,380); +ACE_EXPLOSION_REFLECTION(76,390); +ACE_EXPLOSION_REFLECTION(76,400); +ACE_EXPLOSION_REFLECTION(76,410); +ACE_EXPLOSION_REFLECTION(76,420); +ACE_EXPLOSION_REFLECTION(76,430); +ACE_EXPLOSION_REFLECTION(76,440); +ACE_EXPLOSION_REFLECTION(76,450); +ACE_EXPLOSION_REFLECTION(76,460); +ACE_EXPLOSION_REFLECTION(76,470); +ACE_EXPLOSION_REFLECTION(76,480); +ACE_EXPLOSION_REFLECTION(76,490); +ACE_EXPLOSION_REFLECTION(76,500); +ACE_EXPLOSION_REFLECTION(78,10); +ACE_EXPLOSION_REFLECTION(78,20); +ACE_EXPLOSION_REFLECTION(78,30); +ACE_EXPLOSION_REFLECTION(78,40); +ACE_EXPLOSION_REFLECTION(78,50); +ACE_EXPLOSION_REFLECTION(78,60); +ACE_EXPLOSION_REFLECTION(78,70); +ACE_EXPLOSION_REFLECTION(78,80); +ACE_EXPLOSION_REFLECTION(78,90); +ACE_EXPLOSION_REFLECTION(78,100); +ACE_EXPLOSION_REFLECTION(78,110); +ACE_EXPLOSION_REFLECTION(78,120); +ACE_EXPLOSION_REFLECTION(78,130); +ACE_EXPLOSION_REFLECTION(78,140); +ACE_EXPLOSION_REFLECTION(78,150); +ACE_EXPLOSION_REFLECTION(78,160); +ACE_EXPLOSION_REFLECTION(78,170); +ACE_EXPLOSION_REFLECTION(78,180); +ACE_EXPLOSION_REFLECTION(78,190); +ACE_EXPLOSION_REFLECTION(78,200); +ACE_EXPLOSION_REFLECTION(78,210); +ACE_EXPLOSION_REFLECTION(78,220); +ACE_EXPLOSION_REFLECTION(78,230); +ACE_EXPLOSION_REFLECTION(78,240); +ACE_EXPLOSION_REFLECTION(78,250); +ACE_EXPLOSION_REFLECTION(78,260); +ACE_EXPLOSION_REFLECTION(78,270); +ACE_EXPLOSION_REFLECTION(78,280); +ACE_EXPLOSION_REFLECTION(78,290); +ACE_EXPLOSION_REFLECTION(78,300); +ACE_EXPLOSION_REFLECTION(78,310); +ACE_EXPLOSION_REFLECTION(78,320); +ACE_EXPLOSION_REFLECTION(78,330); +ACE_EXPLOSION_REFLECTION(78,340); +ACE_EXPLOSION_REFLECTION(78,350); +ACE_EXPLOSION_REFLECTION(78,360); +ACE_EXPLOSION_REFLECTION(78,370); +ACE_EXPLOSION_REFLECTION(78,380); +ACE_EXPLOSION_REFLECTION(78,390); +ACE_EXPLOSION_REFLECTION(78,400); +ACE_EXPLOSION_REFLECTION(78,410); +ACE_EXPLOSION_REFLECTION(78,420); +ACE_EXPLOSION_REFLECTION(78,430); +ACE_EXPLOSION_REFLECTION(78,440); +ACE_EXPLOSION_REFLECTION(78,450); +ACE_EXPLOSION_REFLECTION(78,460); +ACE_EXPLOSION_REFLECTION(78,470); +ACE_EXPLOSION_REFLECTION(78,480); +ACE_EXPLOSION_REFLECTION(78,490); +ACE_EXPLOSION_REFLECTION(78,500); +ACE_EXPLOSION_REFLECTION(80,10); +ACE_EXPLOSION_REFLECTION(80,20); +ACE_EXPLOSION_REFLECTION(80,30); +ACE_EXPLOSION_REFLECTION(80,40); +ACE_EXPLOSION_REFLECTION(80,50); +ACE_EXPLOSION_REFLECTION(80,60); +ACE_EXPLOSION_REFLECTION(80,70); +ACE_EXPLOSION_REFLECTION(80,80); +ACE_EXPLOSION_REFLECTION(80,90); +ACE_EXPLOSION_REFLECTION(80,100); +ACE_EXPLOSION_REFLECTION(80,110); +ACE_EXPLOSION_REFLECTION(80,120); +ACE_EXPLOSION_REFLECTION(80,130); +ACE_EXPLOSION_REFLECTION(80,140); +ACE_EXPLOSION_REFLECTION(80,150); +ACE_EXPLOSION_REFLECTION(80,160); +ACE_EXPLOSION_REFLECTION(80,170); +ACE_EXPLOSION_REFLECTION(80,180); +ACE_EXPLOSION_REFLECTION(80,190); +ACE_EXPLOSION_REFLECTION(80,200); +ACE_EXPLOSION_REFLECTION(80,210); +ACE_EXPLOSION_REFLECTION(80,220); +ACE_EXPLOSION_REFLECTION(80,230); +ACE_EXPLOSION_REFLECTION(80,240); +ACE_EXPLOSION_REFLECTION(80,250); +ACE_EXPLOSION_REFLECTION(80,260); +ACE_EXPLOSION_REFLECTION(80,270); +ACE_EXPLOSION_REFLECTION(80,280); +ACE_EXPLOSION_REFLECTION(80,290); +ACE_EXPLOSION_REFLECTION(80,300); +ACE_EXPLOSION_REFLECTION(80,310); +ACE_EXPLOSION_REFLECTION(80,320); +ACE_EXPLOSION_REFLECTION(80,330); +ACE_EXPLOSION_REFLECTION(80,340); +ACE_EXPLOSION_REFLECTION(80,350); +ACE_EXPLOSION_REFLECTION(80,360); +ACE_EXPLOSION_REFLECTION(80,370); +ACE_EXPLOSION_REFLECTION(80,380); +ACE_EXPLOSION_REFLECTION(80,390); +ACE_EXPLOSION_REFLECTION(80,400); +ACE_EXPLOSION_REFLECTION(80,410); +ACE_EXPLOSION_REFLECTION(80,420); +ACE_EXPLOSION_REFLECTION(80,430); +ACE_EXPLOSION_REFLECTION(80,440); +ACE_EXPLOSION_REFLECTION(80,450); +ACE_EXPLOSION_REFLECTION(80,460); +ACE_EXPLOSION_REFLECTION(80,470); +ACE_EXPLOSION_REFLECTION(80,480); +ACE_EXPLOSION_REFLECTION(80,490); +ACE_EXPLOSION_REFLECTION(80,500); +ACE_EXPLOSION_REFLECTION(82,10); +ACE_EXPLOSION_REFLECTION(82,20); +ACE_EXPLOSION_REFLECTION(82,30); +ACE_EXPLOSION_REFLECTION(82,40); +ACE_EXPLOSION_REFLECTION(82,50); +ACE_EXPLOSION_REFLECTION(82,60); +ACE_EXPLOSION_REFLECTION(82,70); +ACE_EXPLOSION_REFLECTION(82,80); +ACE_EXPLOSION_REFLECTION(82,90); +ACE_EXPLOSION_REFLECTION(82,100); +ACE_EXPLOSION_REFLECTION(82,110); +ACE_EXPLOSION_REFLECTION(82,120); +ACE_EXPLOSION_REFLECTION(82,130); +ACE_EXPLOSION_REFLECTION(82,140); +ACE_EXPLOSION_REFLECTION(82,150); +ACE_EXPLOSION_REFLECTION(82,160); +ACE_EXPLOSION_REFLECTION(82,170); +ACE_EXPLOSION_REFLECTION(82,180); +ACE_EXPLOSION_REFLECTION(82,190); +ACE_EXPLOSION_REFLECTION(82,200); +ACE_EXPLOSION_REFLECTION(82,210); +ACE_EXPLOSION_REFLECTION(82,220); +ACE_EXPLOSION_REFLECTION(82,230); +ACE_EXPLOSION_REFLECTION(82,240); +ACE_EXPLOSION_REFLECTION(82,250); +ACE_EXPLOSION_REFLECTION(82,260); +ACE_EXPLOSION_REFLECTION(82,270); +ACE_EXPLOSION_REFLECTION(82,280); +ACE_EXPLOSION_REFLECTION(82,290); +ACE_EXPLOSION_REFLECTION(82,300); +ACE_EXPLOSION_REFLECTION(82,310); +ACE_EXPLOSION_REFLECTION(82,320); +ACE_EXPLOSION_REFLECTION(82,330); +ACE_EXPLOSION_REFLECTION(82,340); +ACE_EXPLOSION_REFLECTION(82,350); +ACE_EXPLOSION_REFLECTION(82,360); +ACE_EXPLOSION_REFLECTION(82,370); +ACE_EXPLOSION_REFLECTION(82,380); +ACE_EXPLOSION_REFLECTION(82,390); +ACE_EXPLOSION_REFLECTION(82,400); +ACE_EXPLOSION_REFLECTION(82,410); +ACE_EXPLOSION_REFLECTION(82,420); +ACE_EXPLOSION_REFLECTION(82,430); +ACE_EXPLOSION_REFLECTION(82,440); +ACE_EXPLOSION_REFLECTION(82,450); +ACE_EXPLOSION_REFLECTION(82,460); +ACE_EXPLOSION_REFLECTION(82,470); +ACE_EXPLOSION_REFLECTION(82,480); +ACE_EXPLOSION_REFLECTION(82,490); +ACE_EXPLOSION_REFLECTION(82,500); +ACE_EXPLOSION_REFLECTION(84,10); +ACE_EXPLOSION_REFLECTION(84,20); +ACE_EXPLOSION_REFLECTION(84,30); +ACE_EXPLOSION_REFLECTION(84,40); +ACE_EXPLOSION_REFLECTION(84,50); +ACE_EXPLOSION_REFLECTION(84,60); +ACE_EXPLOSION_REFLECTION(84,70); +ACE_EXPLOSION_REFLECTION(84,80); +ACE_EXPLOSION_REFLECTION(84,90); +ACE_EXPLOSION_REFLECTION(84,100); +ACE_EXPLOSION_REFLECTION(84,110); +ACE_EXPLOSION_REFLECTION(84,120); +ACE_EXPLOSION_REFLECTION(84,130); +ACE_EXPLOSION_REFLECTION(84,140); +ACE_EXPLOSION_REFLECTION(84,150); +ACE_EXPLOSION_REFLECTION(84,160); +ACE_EXPLOSION_REFLECTION(84,170); +ACE_EXPLOSION_REFLECTION(84,180); +ACE_EXPLOSION_REFLECTION(84,190); +ACE_EXPLOSION_REFLECTION(84,200); +ACE_EXPLOSION_REFLECTION(84,210); +ACE_EXPLOSION_REFLECTION(84,220); +ACE_EXPLOSION_REFLECTION(84,230); +ACE_EXPLOSION_REFLECTION(84,240); +ACE_EXPLOSION_REFLECTION(84,250); +ACE_EXPLOSION_REFLECTION(84,260); +ACE_EXPLOSION_REFLECTION(84,270); +ACE_EXPLOSION_REFLECTION(84,280); +ACE_EXPLOSION_REFLECTION(84,290); +ACE_EXPLOSION_REFLECTION(84,300); +ACE_EXPLOSION_REFLECTION(84,310); +ACE_EXPLOSION_REFLECTION(84,320); +ACE_EXPLOSION_REFLECTION(84,330); +ACE_EXPLOSION_REFLECTION(84,340); +ACE_EXPLOSION_REFLECTION(84,350); +ACE_EXPLOSION_REFLECTION(84,360); +ACE_EXPLOSION_REFLECTION(84,370); +ACE_EXPLOSION_REFLECTION(84,380); +ACE_EXPLOSION_REFLECTION(84,390); +ACE_EXPLOSION_REFLECTION(84,400); +ACE_EXPLOSION_REFLECTION(84,410); +ACE_EXPLOSION_REFLECTION(84,420); +ACE_EXPLOSION_REFLECTION(84,430); +ACE_EXPLOSION_REFLECTION(84,440); +ACE_EXPLOSION_REFLECTION(84,450); +ACE_EXPLOSION_REFLECTION(84,460); +ACE_EXPLOSION_REFLECTION(84,470); +ACE_EXPLOSION_REFLECTION(84,480); +ACE_EXPLOSION_REFLECTION(84,490); +ACE_EXPLOSION_REFLECTION(84,500); +ACE_EXPLOSION_REFLECTION(86,10); +ACE_EXPLOSION_REFLECTION(86,20); +ACE_EXPLOSION_REFLECTION(86,30); +ACE_EXPLOSION_REFLECTION(86,40); +ACE_EXPLOSION_REFLECTION(86,50); +ACE_EXPLOSION_REFLECTION(86,60); +ACE_EXPLOSION_REFLECTION(86,70); +ACE_EXPLOSION_REFLECTION(86,80); +ACE_EXPLOSION_REFLECTION(86,90); +ACE_EXPLOSION_REFLECTION(86,100); +ACE_EXPLOSION_REFLECTION(86,110); +ACE_EXPLOSION_REFLECTION(86,120); +ACE_EXPLOSION_REFLECTION(86,130); +ACE_EXPLOSION_REFLECTION(86,140); +ACE_EXPLOSION_REFLECTION(86,150); +ACE_EXPLOSION_REFLECTION(86,160); +ACE_EXPLOSION_REFLECTION(86,170); +ACE_EXPLOSION_REFLECTION(86,180); +ACE_EXPLOSION_REFLECTION(86,190); +ACE_EXPLOSION_REFLECTION(86,200); +ACE_EXPLOSION_REFLECTION(86,210); +ACE_EXPLOSION_REFLECTION(86,220); +ACE_EXPLOSION_REFLECTION(86,230); +ACE_EXPLOSION_REFLECTION(86,240); +ACE_EXPLOSION_REFLECTION(86,250); +ACE_EXPLOSION_REFLECTION(86,260); +ACE_EXPLOSION_REFLECTION(86,270); +ACE_EXPLOSION_REFLECTION(86,280); +ACE_EXPLOSION_REFLECTION(86,290); +ACE_EXPLOSION_REFLECTION(86,300); +ACE_EXPLOSION_REFLECTION(86,310); +ACE_EXPLOSION_REFLECTION(86,320); +ACE_EXPLOSION_REFLECTION(86,330); +ACE_EXPLOSION_REFLECTION(86,340); +ACE_EXPLOSION_REFLECTION(86,350); +ACE_EXPLOSION_REFLECTION(86,360); +ACE_EXPLOSION_REFLECTION(86,370); +ACE_EXPLOSION_REFLECTION(86,380); +ACE_EXPLOSION_REFLECTION(86,390); +ACE_EXPLOSION_REFLECTION(86,400); +ACE_EXPLOSION_REFLECTION(86,410); +ACE_EXPLOSION_REFLECTION(86,420); +ACE_EXPLOSION_REFLECTION(86,430); +ACE_EXPLOSION_REFLECTION(86,440); +ACE_EXPLOSION_REFLECTION(86,450); +ACE_EXPLOSION_REFLECTION(86,460); +ACE_EXPLOSION_REFLECTION(86,470); +ACE_EXPLOSION_REFLECTION(86,480); +ACE_EXPLOSION_REFLECTION(86,490); +ACE_EXPLOSION_REFLECTION(86,500); +ACE_EXPLOSION_REFLECTION(88,10); +ACE_EXPLOSION_REFLECTION(88,20); +ACE_EXPLOSION_REFLECTION(88,30); +ACE_EXPLOSION_REFLECTION(88,40); +ACE_EXPLOSION_REFLECTION(88,50); +ACE_EXPLOSION_REFLECTION(88,60); +ACE_EXPLOSION_REFLECTION(88,70); +ACE_EXPLOSION_REFLECTION(88,80); +ACE_EXPLOSION_REFLECTION(88,90); +ACE_EXPLOSION_REFLECTION(88,100); +ACE_EXPLOSION_REFLECTION(88,110); +ACE_EXPLOSION_REFLECTION(88,120); +ACE_EXPLOSION_REFLECTION(88,130); +ACE_EXPLOSION_REFLECTION(88,140); +ACE_EXPLOSION_REFLECTION(88,150); +ACE_EXPLOSION_REFLECTION(88,160); +ACE_EXPLOSION_REFLECTION(88,170); +ACE_EXPLOSION_REFLECTION(88,180); +ACE_EXPLOSION_REFLECTION(88,190); +ACE_EXPLOSION_REFLECTION(88,200); +ACE_EXPLOSION_REFLECTION(88,210); +ACE_EXPLOSION_REFLECTION(88,220); +ACE_EXPLOSION_REFLECTION(88,230); +ACE_EXPLOSION_REFLECTION(88,240); +ACE_EXPLOSION_REFLECTION(88,250); +ACE_EXPLOSION_REFLECTION(88,260); +ACE_EXPLOSION_REFLECTION(88,270); +ACE_EXPLOSION_REFLECTION(88,280); +ACE_EXPLOSION_REFLECTION(88,290); +ACE_EXPLOSION_REFLECTION(88,300); +ACE_EXPLOSION_REFLECTION(88,310); +ACE_EXPLOSION_REFLECTION(88,320); +ACE_EXPLOSION_REFLECTION(88,330); +ACE_EXPLOSION_REFLECTION(88,340); +ACE_EXPLOSION_REFLECTION(88,350); +ACE_EXPLOSION_REFLECTION(88,360); +ACE_EXPLOSION_REFLECTION(88,370); +ACE_EXPLOSION_REFLECTION(88,380); +ACE_EXPLOSION_REFLECTION(88,390); +ACE_EXPLOSION_REFLECTION(88,400); +ACE_EXPLOSION_REFLECTION(88,410); +ACE_EXPLOSION_REFLECTION(88,420); +ACE_EXPLOSION_REFLECTION(88,430); +ACE_EXPLOSION_REFLECTION(88,440); +ACE_EXPLOSION_REFLECTION(88,450); +ACE_EXPLOSION_REFLECTION(88,460); +ACE_EXPLOSION_REFLECTION(88,470); +ACE_EXPLOSION_REFLECTION(88,480); +ACE_EXPLOSION_REFLECTION(88,490); +ACE_EXPLOSION_REFLECTION(88,500); +ACE_EXPLOSION_REFLECTION(90,10); +ACE_EXPLOSION_REFLECTION(90,20); +ACE_EXPLOSION_REFLECTION(90,30); +ACE_EXPLOSION_REFLECTION(90,40); +ACE_EXPLOSION_REFLECTION(90,50); +ACE_EXPLOSION_REFLECTION(90,60); +ACE_EXPLOSION_REFLECTION(90,70); +ACE_EXPLOSION_REFLECTION(90,80); +ACE_EXPLOSION_REFLECTION(90,90); +ACE_EXPLOSION_REFLECTION(90,100); +ACE_EXPLOSION_REFLECTION(90,110); +ACE_EXPLOSION_REFLECTION(90,120); +ACE_EXPLOSION_REFLECTION(90,130); +ACE_EXPLOSION_REFLECTION(90,140); +ACE_EXPLOSION_REFLECTION(90,150); +ACE_EXPLOSION_REFLECTION(90,160); +ACE_EXPLOSION_REFLECTION(90,170); +ACE_EXPLOSION_REFLECTION(90,180); +ACE_EXPLOSION_REFLECTION(90,190); +ACE_EXPLOSION_REFLECTION(90,200); +ACE_EXPLOSION_REFLECTION(90,210); +ACE_EXPLOSION_REFLECTION(90,220); +ACE_EXPLOSION_REFLECTION(90,230); +ACE_EXPLOSION_REFLECTION(90,240); +ACE_EXPLOSION_REFLECTION(90,250); +ACE_EXPLOSION_REFLECTION(90,260); +ACE_EXPLOSION_REFLECTION(90,270); +ACE_EXPLOSION_REFLECTION(90,280); +ACE_EXPLOSION_REFLECTION(90,290); +ACE_EXPLOSION_REFLECTION(90,300); +ACE_EXPLOSION_REFLECTION(90,310); +ACE_EXPLOSION_REFLECTION(90,320); +ACE_EXPLOSION_REFLECTION(90,330); +ACE_EXPLOSION_REFLECTION(90,340); +ACE_EXPLOSION_REFLECTION(90,350); +ACE_EXPLOSION_REFLECTION(90,360); +ACE_EXPLOSION_REFLECTION(90,370); +ACE_EXPLOSION_REFLECTION(90,380); +ACE_EXPLOSION_REFLECTION(90,390); +ACE_EXPLOSION_REFLECTION(90,400); +ACE_EXPLOSION_REFLECTION(90,410); +ACE_EXPLOSION_REFLECTION(90,420); +ACE_EXPLOSION_REFLECTION(90,430); +ACE_EXPLOSION_REFLECTION(90,440); +ACE_EXPLOSION_REFLECTION(90,450); +ACE_EXPLOSION_REFLECTION(90,460); +ACE_EXPLOSION_REFLECTION(90,470); +ACE_EXPLOSION_REFLECTION(90,480); +ACE_EXPLOSION_REFLECTION(90,490); +ACE_EXPLOSION_REFLECTION(90,500); +ACE_EXPLOSION_REFLECTION(92,10); +ACE_EXPLOSION_REFLECTION(92,20); +ACE_EXPLOSION_REFLECTION(92,30); +ACE_EXPLOSION_REFLECTION(92,40); +ACE_EXPLOSION_REFLECTION(92,50); +ACE_EXPLOSION_REFLECTION(92,60); +ACE_EXPLOSION_REFLECTION(92,70); +ACE_EXPLOSION_REFLECTION(92,80); +ACE_EXPLOSION_REFLECTION(92,90); +ACE_EXPLOSION_REFLECTION(92,100); +ACE_EXPLOSION_REFLECTION(92,110); +ACE_EXPLOSION_REFLECTION(92,120); +ACE_EXPLOSION_REFLECTION(92,130); +ACE_EXPLOSION_REFLECTION(92,140); +ACE_EXPLOSION_REFLECTION(92,150); +ACE_EXPLOSION_REFLECTION(92,160); +ACE_EXPLOSION_REFLECTION(92,170); +ACE_EXPLOSION_REFLECTION(92,180); +ACE_EXPLOSION_REFLECTION(92,190); +ACE_EXPLOSION_REFLECTION(92,200); +ACE_EXPLOSION_REFLECTION(92,210); +ACE_EXPLOSION_REFLECTION(92,220); +ACE_EXPLOSION_REFLECTION(92,230); +ACE_EXPLOSION_REFLECTION(92,240); +ACE_EXPLOSION_REFLECTION(92,250); +ACE_EXPLOSION_REFLECTION(92,260); +ACE_EXPLOSION_REFLECTION(92,270); +ACE_EXPLOSION_REFLECTION(92,280); +ACE_EXPLOSION_REFLECTION(92,290); +ACE_EXPLOSION_REFLECTION(92,300); +ACE_EXPLOSION_REFLECTION(92,310); +ACE_EXPLOSION_REFLECTION(92,320); +ACE_EXPLOSION_REFLECTION(92,330); +ACE_EXPLOSION_REFLECTION(92,340); +ACE_EXPLOSION_REFLECTION(92,350); +ACE_EXPLOSION_REFLECTION(92,360); +ACE_EXPLOSION_REFLECTION(92,370); +ACE_EXPLOSION_REFLECTION(92,380); +ACE_EXPLOSION_REFLECTION(92,390); +ACE_EXPLOSION_REFLECTION(92,400); +ACE_EXPLOSION_REFLECTION(92,410); +ACE_EXPLOSION_REFLECTION(92,420); +ACE_EXPLOSION_REFLECTION(92,430); +ACE_EXPLOSION_REFLECTION(92,440); +ACE_EXPLOSION_REFLECTION(92,450); +ACE_EXPLOSION_REFLECTION(92,460); +ACE_EXPLOSION_REFLECTION(92,470); +ACE_EXPLOSION_REFLECTION(92,480); +ACE_EXPLOSION_REFLECTION(92,490); +ACE_EXPLOSION_REFLECTION(92,500); +ACE_EXPLOSION_REFLECTION(94,10); +ACE_EXPLOSION_REFLECTION(94,20); +ACE_EXPLOSION_REFLECTION(94,30); +ACE_EXPLOSION_REFLECTION(94,40); +ACE_EXPLOSION_REFLECTION(94,50); +ACE_EXPLOSION_REFLECTION(94,60); +ACE_EXPLOSION_REFLECTION(94,70); +ACE_EXPLOSION_REFLECTION(94,80); +ACE_EXPLOSION_REFLECTION(94,90); +ACE_EXPLOSION_REFLECTION(94,100); +ACE_EXPLOSION_REFLECTION(94,110); +ACE_EXPLOSION_REFLECTION(94,120); +ACE_EXPLOSION_REFLECTION(94,130); +ACE_EXPLOSION_REFLECTION(94,140); +ACE_EXPLOSION_REFLECTION(94,150); +ACE_EXPLOSION_REFLECTION(94,160); +ACE_EXPLOSION_REFLECTION(94,170); +ACE_EXPLOSION_REFLECTION(94,180); +ACE_EXPLOSION_REFLECTION(94,190); +ACE_EXPLOSION_REFLECTION(94,200); +ACE_EXPLOSION_REFLECTION(94,210); +ACE_EXPLOSION_REFLECTION(94,220); +ACE_EXPLOSION_REFLECTION(94,230); +ACE_EXPLOSION_REFLECTION(94,240); +ACE_EXPLOSION_REFLECTION(94,250); +ACE_EXPLOSION_REFLECTION(94,260); +ACE_EXPLOSION_REFLECTION(94,270); +ACE_EXPLOSION_REFLECTION(94,280); +ACE_EXPLOSION_REFLECTION(94,290); +ACE_EXPLOSION_REFLECTION(94,300); +ACE_EXPLOSION_REFLECTION(94,310); +ACE_EXPLOSION_REFLECTION(94,320); +ACE_EXPLOSION_REFLECTION(94,330); +ACE_EXPLOSION_REFLECTION(94,340); +ACE_EXPLOSION_REFLECTION(94,350); +ACE_EXPLOSION_REFLECTION(94,360); +ACE_EXPLOSION_REFLECTION(94,370); +ACE_EXPLOSION_REFLECTION(94,380); +ACE_EXPLOSION_REFLECTION(94,390); +ACE_EXPLOSION_REFLECTION(94,400); +ACE_EXPLOSION_REFLECTION(94,410); +ACE_EXPLOSION_REFLECTION(94,420); +ACE_EXPLOSION_REFLECTION(94,430); +ACE_EXPLOSION_REFLECTION(94,440); +ACE_EXPLOSION_REFLECTION(94,450); +ACE_EXPLOSION_REFLECTION(94,460); +ACE_EXPLOSION_REFLECTION(94,470); +ACE_EXPLOSION_REFLECTION(94,480); +ACE_EXPLOSION_REFLECTION(94,490); +ACE_EXPLOSION_REFLECTION(94,500); +ACE_EXPLOSION_REFLECTION(96,10); +ACE_EXPLOSION_REFLECTION(96,20); +ACE_EXPLOSION_REFLECTION(96,30); +ACE_EXPLOSION_REFLECTION(96,40); +ACE_EXPLOSION_REFLECTION(96,50); +ACE_EXPLOSION_REFLECTION(96,60); +ACE_EXPLOSION_REFLECTION(96,70); +ACE_EXPLOSION_REFLECTION(96,80); +ACE_EXPLOSION_REFLECTION(96,90); +ACE_EXPLOSION_REFLECTION(96,100); +ACE_EXPLOSION_REFLECTION(96,110); +ACE_EXPLOSION_REFLECTION(96,120); +ACE_EXPLOSION_REFLECTION(96,130); +ACE_EXPLOSION_REFLECTION(96,140); +ACE_EXPLOSION_REFLECTION(96,150); +ACE_EXPLOSION_REFLECTION(96,160); +ACE_EXPLOSION_REFLECTION(96,170); +ACE_EXPLOSION_REFLECTION(96,180); +ACE_EXPLOSION_REFLECTION(96,190); +ACE_EXPLOSION_REFLECTION(96,200); +ACE_EXPLOSION_REFLECTION(96,210); +ACE_EXPLOSION_REFLECTION(96,220); +ACE_EXPLOSION_REFLECTION(96,230); +ACE_EXPLOSION_REFLECTION(96,240); +ACE_EXPLOSION_REFLECTION(96,250); +ACE_EXPLOSION_REFLECTION(96,260); +ACE_EXPLOSION_REFLECTION(96,270); +ACE_EXPLOSION_REFLECTION(96,280); +ACE_EXPLOSION_REFLECTION(96,290); +ACE_EXPLOSION_REFLECTION(96,300); +ACE_EXPLOSION_REFLECTION(96,310); +ACE_EXPLOSION_REFLECTION(96,320); +ACE_EXPLOSION_REFLECTION(96,330); +ACE_EXPLOSION_REFLECTION(96,340); +ACE_EXPLOSION_REFLECTION(96,350); +ACE_EXPLOSION_REFLECTION(96,360); +ACE_EXPLOSION_REFLECTION(96,370); +ACE_EXPLOSION_REFLECTION(96,380); +ACE_EXPLOSION_REFLECTION(96,390); +ACE_EXPLOSION_REFLECTION(96,400); +ACE_EXPLOSION_REFLECTION(96,410); +ACE_EXPLOSION_REFLECTION(96,420); +ACE_EXPLOSION_REFLECTION(96,430); +ACE_EXPLOSION_REFLECTION(96,440); +ACE_EXPLOSION_REFLECTION(96,450); +ACE_EXPLOSION_REFLECTION(96,460); +ACE_EXPLOSION_REFLECTION(96,470); +ACE_EXPLOSION_REFLECTION(96,480); +ACE_EXPLOSION_REFLECTION(96,490); +ACE_EXPLOSION_REFLECTION(96,500); +ACE_EXPLOSION_REFLECTION(98,10); +ACE_EXPLOSION_REFLECTION(98,20); +ACE_EXPLOSION_REFLECTION(98,30); +ACE_EXPLOSION_REFLECTION(98,40); +ACE_EXPLOSION_REFLECTION(98,50); +ACE_EXPLOSION_REFLECTION(98,60); +ACE_EXPLOSION_REFLECTION(98,70); +ACE_EXPLOSION_REFLECTION(98,80); +ACE_EXPLOSION_REFLECTION(98,90); +ACE_EXPLOSION_REFLECTION(98,100); +ACE_EXPLOSION_REFLECTION(98,110); +ACE_EXPLOSION_REFLECTION(98,120); +ACE_EXPLOSION_REFLECTION(98,130); +ACE_EXPLOSION_REFLECTION(98,140); +ACE_EXPLOSION_REFLECTION(98,150); +ACE_EXPLOSION_REFLECTION(98,160); +ACE_EXPLOSION_REFLECTION(98,170); +ACE_EXPLOSION_REFLECTION(98,180); +ACE_EXPLOSION_REFLECTION(98,190); +ACE_EXPLOSION_REFLECTION(98,200); +ACE_EXPLOSION_REFLECTION(98,210); +ACE_EXPLOSION_REFLECTION(98,220); +ACE_EXPLOSION_REFLECTION(98,230); +ACE_EXPLOSION_REFLECTION(98,240); +ACE_EXPLOSION_REFLECTION(98,250); +ACE_EXPLOSION_REFLECTION(98,260); +ACE_EXPLOSION_REFLECTION(98,270); +ACE_EXPLOSION_REFLECTION(98,280); +ACE_EXPLOSION_REFLECTION(98,290); +ACE_EXPLOSION_REFLECTION(98,300); +ACE_EXPLOSION_REFLECTION(98,310); +ACE_EXPLOSION_REFLECTION(98,320); +ACE_EXPLOSION_REFLECTION(98,330); +ACE_EXPLOSION_REFLECTION(98,340); +ACE_EXPLOSION_REFLECTION(98,350); +ACE_EXPLOSION_REFLECTION(98,360); +ACE_EXPLOSION_REFLECTION(98,370); +ACE_EXPLOSION_REFLECTION(98,380); +ACE_EXPLOSION_REFLECTION(98,390); +ACE_EXPLOSION_REFLECTION(98,400); +ACE_EXPLOSION_REFLECTION(98,410); +ACE_EXPLOSION_REFLECTION(98,420); +ACE_EXPLOSION_REFLECTION(98,430); +ACE_EXPLOSION_REFLECTION(98,440); +ACE_EXPLOSION_REFLECTION(98,450); +ACE_EXPLOSION_REFLECTION(98,460); +ACE_EXPLOSION_REFLECTION(98,470); +ACE_EXPLOSION_REFLECTION(98,480); +ACE_EXPLOSION_REFLECTION(98,490); +ACE_EXPLOSION_REFLECTION(98,500); +ACE_EXPLOSION_REFLECTION(100,10); +ACE_EXPLOSION_REFLECTION(100,20); +ACE_EXPLOSION_REFLECTION(100,30); +ACE_EXPLOSION_REFLECTION(100,40); +ACE_EXPLOSION_REFLECTION(100,50); +ACE_EXPLOSION_REFLECTION(100,60); +ACE_EXPLOSION_REFLECTION(100,70); +ACE_EXPLOSION_REFLECTION(100,80); +ACE_EXPLOSION_REFLECTION(100,90); +ACE_EXPLOSION_REFLECTION(100,100); +ACE_EXPLOSION_REFLECTION(100,110); +ACE_EXPLOSION_REFLECTION(100,120); +ACE_EXPLOSION_REFLECTION(100,130); +ACE_EXPLOSION_REFLECTION(100,140); +ACE_EXPLOSION_REFLECTION(100,150); +ACE_EXPLOSION_REFLECTION(100,160); +ACE_EXPLOSION_REFLECTION(100,170); +ACE_EXPLOSION_REFLECTION(100,180); +ACE_EXPLOSION_REFLECTION(100,190); +ACE_EXPLOSION_REFLECTION(100,200); +ACE_EXPLOSION_REFLECTION(100,210); +ACE_EXPLOSION_REFLECTION(100,220); +ACE_EXPLOSION_REFLECTION(100,230); +ACE_EXPLOSION_REFLECTION(100,240); +ACE_EXPLOSION_REFLECTION(100,250); +ACE_EXPLOSION_REFLECTION(100,260); +ACE_EXPLOSION_REFLECTION(100,270); +ACE_EXPLOSION_REFLECTION(100,280); +ACE_EXPLOSION_REFLECTION(100,290); +ACE_EXPLOSION_REFLECTION(100,300); +ACE_EXPLOSION_REFLECTION(100,310); +ACE_EXPLOSION_REFLECTION(100,320); +ACE_EXPLOSION_REFLECTION(100,330); +ACE_EXPLOSION_REFLECTION(100,340); +ACE_EXPLOSION_REFLECTION(100,350); +ACE_EXPLOSION_REFLECTION(100,360); +ACE_EXPLOSION_REFLECTION(100,370); +ACE_EXPLOSION_REFLECTION(100,380); +ACE_EXPLOSION_REFLECTION(100,390); +ACE_EXPLOSION_REFLECTION(100,400); +ACE_EXPLOSION_REFLECTION(100,410); +ACE_EXPLOSION_REFLECTION(100,420); +ACE_EXPLOSION_REFLECTION(100,430); +ACE_EXPLOSION_REFLECTION(100,440); +ACE_EXPLOSION_REFLECTION(100,450); +ACE_EXPLOSION_REFLECTION(100,460); +ACE_EXPLOSION_REFLECTION(100,470); +ACE_EXPLOSION_REFLECTION(100,480); +ACE_EXPLOSION_REFLECTION(100,490); +ACE_EXPLOSION_REFLECTION(100,500); + diff --git a/addons/frag/XEH_pre_Init.sqf b/addons/frag/XEH_pre_Init.sqf index 5b3aa36b18..4ec70bbc3d 100644 --- a/addons/frag/XEH_pre_Init.sqf +++ b/addons/frag/XEH_pre_Init.sqf @@ -9,6 +9,10 @@ PREP(trackFragRound); PREP(spallTrack); PREP(doSpall); PREP(vectorDiffFast); +PREP(findReflections); +PREP(doExplosions); +PREP(doReflections); + GVAR(trackedObjects) = []; GVAR(blackList) = []; diff --git a/addons/frag/functions/fnc_doExplosions.sqf b/addons/frag/functions/fnc_doExplosions.sqf new file mode 100644 index 0000000000..f2c20c2f1e --- /dev/null +++ b/addons/frag/functions/fnc_doExplosions.sqf @@ -0,0 +1,26 @@ +//fnc_doExplosions.sqf +#include "script_component.hpp" + +private ["_params", "_explosions", "_index", "_i", "_exp", "_refExp", "_bpos", "_hit", "_distance", "_indirectHitRange", "_depth"]; +_params = _this select 0; +_explosions = _params select 0; +_index = _params select 1; +for "_i" from _index to ((_index+1) min (count _explosions)) do { + _exp = _explosions select _i; + _refExp = _exp select 0; + _bpos = _exp select 1; + _hit = _exp select 2; + _distance = _exp select 3; + _indirectHitRange = _exp select 4; + _depth = _exp select 5; + _refExp createVehicle (ASLtoATL _bpos); + // if(_hit >= 150 && _distance > _indirectHitRange) then { + // [_bpos, _refExp, _depth] call FUNC(doReflections); + // }; +}; +_index = _index + 1; +if(_index >= (count _explosions)) then { + [(_this select 1)] call cba_fnc_removePerFrameHandler; +} else { + _params set[1, _index]; +}; diff --git a/addons/frag/functions/fnc_doReflections.sqf b/addons/frag/functions/fnc_doReflections.sqf new file mode 100644 index 0000000000..844ccb4c9b --- /dev/null +++ b/addons/frag/functions/fnc_doReflections.sqf @@ -0,0 +1,22 @@ +//fnc_doReflections.sqf +#include "script_component.hpp" + +private ["_pos", "_ammo", "_depth", "_hit", "_range", "_hitFactor", "_indirectHitRange", "_indirectHit", "_testParams"]; + +_pos = _this select 0; +_ammo = _this select 1; +_depth = 1; +if(count _this > 2) then { + _depth = _this select 2; +}; +// TEST_ICONS pushBack [_pos, format["EXP!", _hit, _range, _hitFactor]]; +if(_depth <= 2) then { + _indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHitRange"); + _indirectHit = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHit"); + + + + + _testParams = [_pos, [_indirectHitRange, _indirectHit], [], [], -4, _depth, 0]; + [DFUNC(findReflections), 0.005, _testParams] call cba_fnc_addPerFrameHandler; +}; diff --git a/addons/frag/functions/fnc_findReflections.sqf b/addons/frag/functions/fnc_findReflections.sqf new file mode 100644 index 0000000000..75c4ee2ae6 --- /dev/null +++ b/addons/frag/functions/fnc_findReflections.sqf @@ -0,0 +1,130 @@ +//fnc_findReflections.sqf +#include "script_component.hpp" + +private ["_split", "_radi", "_params", "_pos", "_explosiveInfo", "_los", "_nlos", "_zIndex", "_depth", "_indirectHitRange", + "_indirectHit", "_distanceCount", "_lastPos", "_test", "_vec", "_testPos", "_buckets", "_excludes", "_bucketIndex", "_bucketPos", + "_bucketList", "_c", "_index", "_blist", "_avgX", "_avgY", "_avgZ", "_bpos", "_distance", "_hitFactor", "_hit", "_range", "_refExp", + "_rand", "_i", "_x", "_res", "_forEachIndex", "_explosions", "_can", "_dirvec"]; + + +_params = _this select 0; +_pos = _params select 0; +_explosiveInfo = _params select 1; +_los = _params select 2; +_nlos = _params select 3; +_zIndex = _params select 4; +_depth = _params select 5; +_rand = _params select 6; + +_split = 15; +_radi = (360/_split*_depth); + +// player sideChat format["p: %1", _explosiveInfo]; +_indirectHitRange = _explosiveInfo select 0; +_indirectHit = _explosiveInfo select 1; +_distanceCount = (floor _indirectHitRange*4) min 100; + +if(_zIndex < 5) then { + _lastPos = _pos; + _zAng = _zIndex*20+2; + if(_zAng > 80) then { + _radi = 1; + _zAng = 90; + }; + for "_i" from 0 to _radi do { + _test = true; + _vec = [1, ((_i*_split)+_rand) mod 360, _zAng] call cba_fnc_polar2vect; + for "_x" from 1 to _distanceCount do { + _testPos = _pos vectorAdd (_vec vectorMultiply _x); + // drop ["\a3\data_f\Cl_basic","","Billboard",1,15,ASLtoATL _testPos,[0,0,0],1,1.275,1.0,0.0,[1],[[1,0,0,1]],[0],0.0,2.0,"","",""]; + _res = lineIntersectsWith [_pos, _testPos]; + if(count _res > 0) exitWith { + _test = false; + _nlos pushBack _lastPos; + // { + // _x addEventHandler ["HandleDamage", { diag_log text format["this: %1", _this]; }]; + // } forEach _res; + // drop ["\a3\data_f\Cl_basic","","Billboard",1,15,ASLtoATL _testPos,[0,0,0],1,1.275,1.0,0.0,[1],[[1,0,0,1]],[0],0.0,2.0,"","",""]; + // TEST_PAIRS pushBack [_pos, _lastPos, [1,0,0,1]]; + + }; + // if(terrainIntersectASL [_pos, _testPos]) exitWith {}; + _lastPos = _testPos; + }; + }; + _params set[4, _zIndex+1]; +} else { + _depth = _depth + 1; + _buckets = []; + _excludes = []; + _bucketIndex = 0; + _bucketPos = nil; + _bucketList = nil; + _c = 0; + while { count(_nlos) != count(_excludes) && _c < (count _nlos) } do { + scopeName "mainSearch"; + { + if(!(_forEachIndex in _excludes)) then { + _index = _buckets pushBack [_x, [_x]]; + _excludes pushBack _forEachIndex; + _bucketPos = _x; + _bucketList = (_buckets select _index) select 1; + breakTo "mainSearch"; + }; + } forEach _nlos; + { + if(!(_forEachIndex in _excludes)) then { + _testPos = _x; + if(_testPos vectorDistanceSqr _bucketPos <= 30) then { + _bucketList pushBack _x; + _excludes pushBack _forEachIndex; + }; + }; + } forEach _nlos; + _c = _c + 1; + }; + + // player sideChat format["c: %1", count _buckets]; + _explosions = []; + { + _blist = _x select 1; + _avgX = 0; + _avgY = 0; + _avgZ = 0; + + { + _avgX = _avgX + (_x select 0); + _avgY = _avgY + (_x select 1); + _avgZ = _avgZ + (_x select 2); + } forEach _blist; + _c = count _blist; + _bpos = [_avgX/_c, _avgY/_c, _avgZ/_c]; + + _distance = _pos vectorDistance _bpos; + _hitFactor = 1-(((_distance/(_indirectHitRange*4)) min 1) max 0); + // _hitFactor = 1/(_distance^2); + _hit = _indirectHit*_hitFactor; + _hit = (floor (_hit/4)) min 500; + _hit = _hit - (_hit%10); + _range = (floor (_indirectHitRange-(_distance/4))) min 100; + _range = _range - (_range%2); + + if(_hit >= 10 && _range > 0) then { + // TEST_ICONS pushBack [_bpos, format["h: %1, r: %2, hf: %3 d: %4 ihr: %5", _hit, _range, _hitFactor, _distance, _indirectHitRange*4]]; + // TEST_PAIRS pushBack [_pos, _bpos, [1,0,0,1]]; + _refExp = format["ace_explosion_reflection_%1_%2", _range, _hit]; + // _refExp createVehicle (ASLtoATL _bpos); + // drop ["\a3\data_f\Cl_basic","","Billboard",1,15,ASLtoATL _bpos,[0,0,0],1,1.275,1.0,0.0,[1],[[1,0,0,1]],[0],0.0,2.0,"","",""]; + + _explosions pushBack [_refExp, _bpos, _hit, _distance, _indirectHitRange/4, _depth]; + + }; + if(count _explosions > (_radi*2)/_depth) exitWith {}; + } forEach _buckets; + // _can = "Land_Bricks_V4_F" createVehicle (ASLtoATL _pos); + // _dirvec = _pos vectorFromTo ((ATLtoASL (player modelToWorldVisual (player selectionPosition "Spine3")))); + // _dirvec = _dirvec vectorMultiply 100; + // _can setVelocity _dirvec; + [DFUNC(doExplosions), 0, [_explosions, 0]] call cba_fnc_addPerFrameHandler; + [(_this select 1)] call cba_fnc_removePerFrameHandler; +}; diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index 1b737dc70d..8c97baa209 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -111,8 +111,9 @@ _fragArcs set[360, 0]; player sideChat format["_fragRange: %1", _fragRange]; player sideChat format["_objects: %1", _objects]; #endif -_doRandom = false; +_doRandom = true; if(_isArmed && (count _objects) > 0) then { + [_lastPos, _shellType] call FUNC(doReflections); { //if(random(1) > 0.5) then { _target = _x; @@ -189,7 +190,7 @@ if(_isArmed && (count _objects) > 0) then { if(_fragCount > MAX_FRAG_COUNT) exitWith {}; } forEach _objects; if(_fragCount > MAX_FRAG_COUNT) exitWith {}; - _randomCount = (ceil((MAX_FRAG_COUNT-_fragCount)*0.1)) max 0; + _randomCount = ((ceil((MAX_FRAG_COUNT-_fragCount)*0.1)) max 0)+20; _sectorSize = 360 / (_randomCount max 1); // _doRandom = false; if(_doRandom) then { @@ -222,6 +223,7 @@ if(_isArmed && (count _objects) > 0) then { _fragCount = _fragCount + 1; }; }; + }; // #ifdef DEBUG_MODE_FULL // player sideChat format["total frags: %1", GVAR(TOTALFRAGS)]; From 114d66af7e375fc248c92bb769ebb22e3a2b5e86 Mon Sep 17 00:00:00 2001 From: Nou Date: Tue, 14 Apr 2015 13:00:57 -0700 Subject: [PATCH 0008/1101] Do it every frame, no need for delay. --- addons/frag/functions/fnc_doReflections.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/frag/functions/fnc_doReflections.sqf b/addons/frag/functions/fnc_doReflections.sqf index 844ccb4c9b..911203dc5f 100644 --- a/addons/frag/functions/fnc_doReflections.sqf +++ b/addons/frag/functions/fnc_doReflections.sqf @@ -18,5 +18,5 @@ if(_depth <= 2) then { _testParams = [_pos, [_indirectHitRange, _indirectHit], [], [], -4, _depth, 0]; - [DFUNC(findReflections), 0.005, _testParams] call cba_fnc_addPerFrameHandler; + [DFUNC(findReflections), 0, _testParams] call cba_fnc_addPerFrameHandler; }; From 15ac5ec7b8ad71dff640c0164c7453c068472605 Mon Sep 17 00:00:00 2001 From: Nou Date: Tue, 14 Apr 2015 16:33:47 -0700 Subject: [PATCH 0009/1101] Two explosions processed per-frame. --- addons/frag/functions/fnc_doExplosions.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/frag/functions/fnc_doExplosions.sqf b/addons/frag/functions/fnc_doExplosions.sqf index f2c20c2f1e..749c4bd2ec 100644 --- a/addons/frag/functions/fnc_doExplosions.sqf +++ b/addons/frag/functions/fnc_doExplosions.sqf @@ -5,7 +5,7 @@ private ["_params", "_explosions", "_index", "_i", "_exp", "_refExp", "_bpos", " _params = _this select 0; _explosions = _params select 0; _index = _params select 1; -for "_i" from _index to ((_index+1) min (count _explosions)) do { +for "_i" from _index to ((_index+2) min (count _explosions)) do { _exp = _explosions select _i; _refExp = _exp select 0; _bpos = _exp select 1; @@ -18,7 +18,7 @@ for "_i" from _index to ((_index+1) min (count _explosions)) do { // [_bpos, _refExp, _depth] call FUNC(doReflections); // }; }; -_index = _index + 1; +_index = _index + 2; if(_index >= (count _explosions)) then { [(_this select 1)] call cba_fnc_removePerFrameHandler; } else { From 1f13d229a8385b0d0ea6dde62bccb64a1300b774 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 15 Apr 2015 00:13:23 -0500 Subject: [PATCH 0010/1101] Stagger creating actions over time --- .../functions/fnc_addHouseActions.sqf | 206 ++++++++++-------- 1 file changed, 110 insertions(+), 96 deletions(-) diff --git a/addons/interact_menu/functions/fnc_addHouseActions.sqf b/addons/interact_menu/functions/fnc_addHouseActions.sqf index 1ed4eddedf..1e454ba258 100644 --- a/addons/interact_menu/functions/fnc_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_addHouseActions.sqf @@ -24,9 +24,9 @@ if (_interactionType != 0) exitWith {}; if ((vehicle ACE_player) != ACE_player) exitWith {}; [{ - private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_houseHelpers", "_displayName", "_displayNameDefault", "_iconImage", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; + private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_displayName", "_displayNameDefault", "_iconImage", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; PARAMS_2(_args,_pfID); - EXPLODE_3_PVT(_args,_setPosition,_addedHelpers,_housesScaned); + EXPLODE_4_PVT(_args,_setPosition,_addedHelpers,_housesScaned,_houseBeingScaned); if (!EGVAR(interact_menu,keyDown)) then { {deleteVehicle _x;} forEach _addedHelpers; @@ -38,102 +38,116 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; //If player moved >5 meters from last pos, then rescan if (((getPosASL ace_player) distance _setPosition) < 5) exitWith {}; - _fncStatement = { - PARAMS_3(_target,_player,_variable); - EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); - this = _theHouse; //this feels dirty - call _statement; - }; - _fncCondition = { - PARAMS_3(_target,_player,_variable); - EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); - this = _theHouse; //this feels dirty - call _condition; - }; - - { - _theHouse = _x; - if (!(_theHouse in _housesScaned)) then { - _housesScaned pushBack _x; - if ((typeOf _theHouse) != "") then { - _configPath = (configFile >> "CfgVehicles" >> (typeOf _theHouse)); - if (isClass (_configPath >> "UserActions")) then { - _houseHelpers = []; - - { - _displayName = getText (_x >> "displayName"); - _displayNameDefault = getText (_x >> "displayNameDefault"); - _position = getText (_x >> "position"); - _condition = getText (_x >> "condition"); - _statement = getText (_x >> "statement"); - _maxDistance = getNumber (_x >> "radius"); - - if (_displayName == "") then {_displayName = (configName _x);}; - if (_position == "") then {ERROR("Bad Position");}; - if (_condition == "") then {_condition = "true";}; - if (_statement == "") then {ERROR("No Statement");}; - - _statement = compile _statement; - _condition = compile _condition; - _maxDistance = _maxDistance + 0.1; //increase range slightly - _iconImage = ""; - - if (_displayNameDefault != "") then { - //something like: ""; - - //find the end [.paa'] - _endIndex = _displayNameDefault find ".paa'"; - if (_endIndex == -1) exitWith {}; - _startIndex = _endIndex - 1; - _endIndex = _endIndex + 4; - //work backwards to find the starting ['] - while {(_startIndex > 0) && {_iconImage == ""}} do { - if ((_displayNameDefault select [_startIndex, 1]) == "'") then { - _startIndex = _startIndex + 1; - _iconImage = _displayNameDefault select [_startIndex, (_endIndex - _startIndex)]; - }; - _startIndex = _startIndex - 1; - }; - }; - - //Find a helper object, if one exists on the selection position - _helperObject = objNull; - _actionOffset = [0,0,0]; - { - EXPLODE_3_PVT(_x,_memPoint,_object,_count); - if (_memPoint == _position) exitWith { - _helperObject = _object; - //make sure actions don't overlap (although they are usualy mutually exclusive) - _actionOffset = [0,0,(_count * 0.05)]; - _x set [2, (_count + 1)]; - }; - } forEach _houseHelpers; - - if (isNull _helperObject) then { - _helperObject = "Sign_Sphere25cm_F" createVehicleLocal (getpos _theHouse); - _houseHelpers pushBack [_position, _helperObject, 1]; - _helperPos = _theHouse modelToWorld (_theHouse selectionPosition _position); - //ASL/ATL bullshit: - if (surfaceIsWater _helperPos) then { - _helperObject setPosAslw _helperPos; - } else { - _helperObject setPos _helperPos; - }; - _helperObject hideObject true; - _addedHelpers pushBack _helperObject; - TRACE_3("Making New Helper %1",_helperObject,_helperPos,_theHouse); - }; - - _action = [(configName _x), _displayName, _iconImage, _fncStatement, _fncCondition, {}, [_theHouse, _statement, _condition], _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); - [_helperObject, 0, [],_action] call EFUNC(interact_menu,addActionToObject); - - } foreach configproperties [(_configPath >> "UserActions")]; + // systemChat str _houseBeingScaned; + + if (_houseBeingScaned isEqualTo []) then { + _houseWasScaned = false; + { + _theHouse = _x; + if (!(_theHouse in _housesScaned)) exitWith { + _houseWasScaned = true; + _housesScaned pushBack _x; + if ((typeOf _theHouse) != "") then { + _configPath = (configFile >> "CfgVehicles" >> (typeOf _theHouse)); + if (isClass (_configPath >> "UserActions")) then { + _args set [3, [_theHouse, 0, []]]; + }; }; }; + // Need to scan fairly far, because houses are big. You can be 25m from center of building but right next to a door. + } forEach nearestObjects [ace_player, ["Static"], 30]; + if (!_houseWasScaned) then { + _args set [0, (getPosASL ace_player)]; }; - //Need to scan fairly far, because houses are big. You can be 25m from center of building but right next to a door. - } forEach nearestObjects [ace_player, ["Static"], 30]; + } else { + EXPLODE_3_PVT(_houseBeingScaned,_theHouse,_index,_houseHelpers); + _configPath = configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "UserActions"; + if (_index < ((count _configPath) - 1)) then { + _actionPath = _configPath select _index; - _args set [0, (getPosASL ace_player)]; + _fncStatement = { + PARAMS_3(_target,_player,_variable); + EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); + this = _theHouse; //this feels dirty + call _statement; + }; + _fncCondition = { + PARAMS_3(_target,_player,_variable); + EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); + this = _theHouse; //this feels dirty + call _condition; + }; + + _displayName = getText (_actionPath >> "displayName"); + _displayNameDefault = getText (_actionPath >> "displayNameDefault"); + _position = getText (_actionPath >> "position"); + _condition = getText (_actionPath >> "condition"); + _statement = getText (_actionPath >> "statement"); + _maxDistance = getNumber (_actionPath >> "radius"); + + if (_displayName == "") then {_displayName = (configName _x);}; + if (_position == "") then {ERROR("Bad Position");}; + if (_condition == "") then {_condition = "true";}; + if (_statement == "") then {ERROR("No Statement");}; + + _statement = compile _statement; + _condition = compile _condition; + _maxDistance = _maxDistance + 0.1; //increase range slightly + _iconImage = ""; + + if (_displayNameDefault != "") then { + //something like: ""; + //find the end [.paa'] + _endIndex = _displayNameDefault find ".paa'"; + if (_endIndex == -1) exitWith {}; + _startIndex = _endIndex - 1; + _endIndex = _endIndex + 4; + //work backwards to find the starting ['] + while {(_startIndex > 0) && {_iconImage == ""}} do { + if ((_displayNameDefault select [_startIndex, 1]) == "'") then { + _startIndex = _startIndex + 1; + _iconImage = _displayNameDefault select [_startIndex, (_endIndex - _startIndex)]; + }; + _startIndex = _startIndex - 1; + }; + }; + + //Find a helper object, if one exists on the selection position + _helperObject = objNull; + _actionOffset = [0,0,0]; + { + EXPLODE_3_PVT(_x,_memPoint,_object,_count); + if (_memPoint == _position) exitWith { + _helperObject = _object; + //make sure actions don't overlap (although they are usualy mutually exclusive) + _actionOffset = [0,0,(_count * 0.05)]; + _x set [2, (_count + 1)]; + }; + } forEach _houseHelpers; + + if (isNull _helperObject) then { + _helperObject = "Sign_Sphere25cm_F" createVehicleLocal (getpos _theHouse); + _houseHelpers pushBack [_position, _helperObject, 1]; + _helperPos = _theHouse modelToWorld (_theHouse selectionPosition _position); + //ASL/ATL bullshit: + if (surfaceIsWater _helperPos) then { + _helperObject setPosAslw _helperPos; + } else { + _helperObject setPos _helperPos; + }; + _helperObject hideObject true; + _addedHelpers pushBack _helperObject; + TRACE_3("Making New Helper %1",_helperObject,_helperPos,_theHouse); + }; + + _action = [(configName _actionPath), _displayName, _iconImage, _fncStatement, _fncCondition, {}, [_theHouse, _statement, _condition], _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); + [_helperObject, 0, [],_action] call EFUNC(interact_menu,addActionToObject); + + _index = _index + 1; + _args set [3, [_theHouse, _index, _houseHelpers]]; + } else { + _args set [3, []]; + }; + }; }; -}, 0.1, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], []]] call CBA_fnc_addPerFrameHandler; +}, 0, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], [], []]] call CBA_fnc_addPerFrameHandler; From 3ad668605a503dbd7db4eea1e9e371eed0f5f671 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 1 May 2015 16:02:34 +0200 Subject: [PATCH 0011/1101] Fix for last fcs change --- addons/fcs/functions/fnc_keyUp.sqf | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 433053178b..4dd6f6c7d6 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -82,6 +82,11 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "timeToLive"); _simulationStep = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "simulationStep"); + _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> (_vehicle currentWeaponTurret _turret) >> "initSpeed"); + if (_initSpeedCoef < 0) then { + _initSpeed = _initSpeed * -_initSpeedCoef; + }; + if (_simulationStep != 0) then { private ["_posX", "_velocityX", "_velocityY", "_timeToTarget"]; @@ -148,7 +153,12 @@ _FCSElevation = []; _maxElev = getNumber (_turretConfig >> "maxElev"); _initSpeed = getNumber (configFile >> "CfgMagazines" >> _x >> "initSpeed"); _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); - + + _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> (_vehicle currentWeaponTurret _turret) >> "initSpeed"); + if (_initSpeedCoef < 0) then { + _initSpeed = _initSpeed * -_initSpeedCoef; + }; + _offset = "ace_fcs" callExtension format ["%1,%2,%3,%4", _initSpeed, _airFriction, _angleTarget, _distance]; _offset = parseNumber _offset; From 800ccc07f39ff9ce00cc580194eed73e3b5133ef Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 1 May 2015 16:24:16 +0200 Subject: [PATCH 0012/1101] Removed duplicate code --- addons/fcs/functions/fnc_keyUp.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 4dd6f6c7d6..44eb4e2e5f 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -31,9 +31,9 @@ if (_distance == 0) then { ] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; -private ["_weaponDirection", "_angleTarget"]; - -_weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); // @todo doesn't work for sub turrets +private ["_weapon", "_weaponDirection", "_angleTarget"]; +_weapon = _vehicle currentWeaponTurret _turret; +_weaponDirection = _vehicle weaponDirection _weapon; // @todo doesn't work for sub turrets if (_turret isEqualTo ([_vehicle] call EFUNC(common,getTurretCommander))) then { _weaponDirection = eyeDirection _vehicle; @@ -82,7 +82,7 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "timeToLive"); _simulationStep = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "simulationStep"); - _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> (_vehicle currentWeaponTurret _turret) >> "initSpeed"); + _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> _weapon >> "initSpeed"); if (_initSpeedCoef < 0) then { _initSpeed = _initSpeed * -_initSpeedCoef; }; @@ -154,7 +154,7 @@ _FCSElevation = []; _initSpeed = getNumber (configFile >> "CfgMagazines" >> _x >> "initSpeed"); _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); - _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> (_vehicle currentWeaponTurret _turret) >> "initSpeed"); + _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> _weapon >> "initSpeed"); if (_initSpeedCoef < 0) then { _initSpeed = _initSpeed * -_initSpeedCoef; }; From 6dc28f026f620ec503e6358317d97a7aa0facdda Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 1 May 2015 17:15:49 +0200 Subject: [PATCH 0013/1101] Added missing private --- addons/fcs/functions/fnc_firedEH.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index e8f58298d3..43f6d25ef9 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -12,7 +12,7 @@ #include "script_component.hpp" -private ["_vehicle", "_weapon", "_ammo", "_magazine", "_projectile","_velocityCorrection"]; +private ["_vehicle", "_weapon", "_ammo", "_magazine", "_projectile", "_velocityCorrection", "_sumVelocity"]; _vehicle = _this select 0; _weapon = _this select 1; From 5dcb45bd33fbf44b4e5608bc7874ac2c53345fdf Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 1 May 2015 17:39:38 +0200 Subject: [PATCH 0014/1101] Finds the corresponding weapon class for each magazine type. --- addons/fcs/functions/fnc_keyUp.sqf | 37 +++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 44eb4e2e5f..afd2143970 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -12,7 +12,7 @@ #include "script_component.hpp" -private ["_vehicle", "_turret", "_turretConfig", "_distance", "_magazines", "_showHint", "_playSound"]; +private ["_vehicle", "_turret", "_turretConfig", "_distance", "_weapons", "_magazines", "_showHint", "_playSound"]; _vehicle = _this select 0; _turret = _this select 1; @@ -21,6 +21,7 @@ _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call E _distance = call FUNC(getRange); +_weapons = _vehicle weaponsTurret _turret; _magazines = _vehicle magazinesTurret _turret; if (_distance == 0) then { @@ -72,7 +73,7 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { ((_posTarget select 2) - (GVAR(position) select 2)) / (time - GVAR(time)) ]; - private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep"]; + private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef"]; // estimate time to target _magazineType = _vehicle currentMagazineTurret _turret; @@ -143,26 +144,40 @@ _FCSMagazines = []; _FCSElevation = []; { - private "_ammoType"; - - _ammoType = getText (configFile >> "CfgMagazines" >> _x >> "ammo"); + private ["_magazine", "_ammoType"]; + _magazine = _x; + _ammoType = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo"); if !(getText (configFile >> "CfgAmmo" >> _ammoType >> "simulation") == "shotMissile") then { private ["_maxElev", "_initSpeed", "_airFriction", "_offset"]; _maxElev = getNumber (_turretConfig >> "maxElev"); - _initSpeed = getNumber (configFile >> "CfgMagazines" >> _x >> "initSpeed"); + _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed"); _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); - _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> _weapon >> "initSpeed"); - if (_initSpeedCoef < 0) then { - _initSpeed = _initSpeed * -_initSpeedCoef; - }; + { + private ["_weapon", "_muzzles", "_weaponMagazines", "_muzzleMagazines"]; + _weapon = _x; + _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles"); + _weaponMagazines = getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines"); + { + if (_x != "this") then { + _muzzleMagazines = getArray (configFile >> "CfgWeapons" >> _weapon >> _x >> "magazines"); + _weaponMagazines append _muzzleMagazines; + }; + } forEach _muzzles; + if (_magazine in _weaponMagazines) exitWith { + _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> _weapon >> "initSpeed"); + if (_initSpeedCoef < 0) then { + _initSpeed = _initSpeed * -_initSpeedCoef; + }; + }; + } forEach _weapons; _offset = "ace_fcs" callExtension format ["%1,%2,%3,%4", _initSpeed, _airFriction, _angleTarget, _distance]; _offset = parseNumber _offset; - _FCSMagazines = _FCSMagazines + [_x]; + _FCSMagazines = _FCSMagazines + [_magazine]; _FCSElevation = _FCSElevation + [_offset]; }; } forEach _magazines; From a42dec676009153a8c5237ba5fb62f7559b32271 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 1 May 2015 17:40:30 +0200 Subject: [PATCH 0015/1101] Added more missing privates --- addons/fcs/functions/fnc_keyUp.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index afd2143970..1bebd6c919 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -56,7 +56,7 @@ if (!(isNil QGVAR(backgroundCalculation)) and {!(scriptDone GVAR(backgroundCalcu terminate GVAR(backgroundCalculation); }; -private "_movingAzimuth"; +private ["_movingAzimuth", "_posTarget", "_velocityTarget"]; // MOVING TARGETS _movingAzimuth = 0; @@ -73,7 +73,7 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { ((_posTarget select 2) - (GVAR(position) select 2)) / (time - GVAR(time)) ]; - private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef"]; + private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef", "_velocityMagnitude"]; // estimate time to target _magazineType = _vehicle currentMagazineTurret _turret; From aa21962f8b58e2cf268fc7423e4b10688adf2382 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 1 May 2015 18:55:44 +0200 Subject: [PATCH 0016/1101] Allowed positive weapon initSpeed values --- addons/fcs/functions/fnc_firedEH.sqf | 10 ++-------- addons/fcs/functions/fnc_keyUp.sqf | 6 ++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index 43f6d25ef9..31fe38335d 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -12,7 +12,7 @@ #include "script_component.hpp" -private ["_vehicle", "_weapon", "_ammo", "_magazine", "_projectile", "_velocityCorrection", "_sumVelocity"]; +private ["_vehicle", "_weapon", "_ammo", "_magazine", "_projectile", "_sumVelocity"]; _vehicle = _this select 0; _weapon = _this select 1; @@ -43,14 +43,8 @@ _offset = 0; }; } forEach _FCSMagazines; -// Correct velocity for weapons that have initVelocity -_velocityCorrection = if (getNumber(configFile >> "CfgWeapons" >> _weapon >> "initSpeed") > 0) then { - (vectorMagnitude velocity _projectile) - getNumber(configFile >> "CfgMagazines" >> _magazine >> "initSpeed") -} else { - 0 -}; -[_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, -_velocityCorrection] call EFUNC(common,changeProjectileDirection); +[_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, 0] call EFUNC(common,changeProjectileDirection); // Remove the platform velocity if( (vectorMagnitude velocity _vehicle) > 2) then { diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 1bebd6c919..a7bf8defe5 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -87,6 +87,9 @@ if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { if (_initSpeedCoef < 0) then { _initSpeed = _initSpeed * -_initSpeedCoef; }; + if (_initSpeedCoef > 0) then { + _initSpeed = _initSpeedCoef; + }; if (_simulationStep != 0) then { private ["_posX", "_velocityX", "_velocityY", "_timeToTarget"]; @@ -171,6 +174,9 @@ _FCSElevation = []; if (_initSpeedCoef < 0) then { _initSpeed = _initSpeed * -_initSpeedCoef; }; + if (_initSpeedCoef > 0) then { + _initSpeed = _initSpeedCoef; + }; }; } forEach _weapons; From 675b76f569b1d2bd0dd74f8919fc6526af6ad249 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 1 May 2015 18:12:24 -0500 Subject: [PATCH 0017/1101] Privates - Interaction --- addons/interaction/XEH_postInit.sqf | 1 + addons/interaction/functions/fnc_MoveDown.sqf | 2 ++ addons/interaction/functions/fnc_addPassengerActions.sqf | 2 +- addons/interaction/functions/fnc_addPassengersActions.sqf | 3 ++- addons/interaction/functions/fnc_applyButtons.sqf | 2 +- addons/interaction/functions/fnc_getDoorAnimations.sqf | 2 +- addons/interaction/functions/fnc_moduleInteraction.sqf | 2 ++ addons/interaction/functions/fnc_openDoor.sqf | 1 + addons/interaction/functions/fnc_openSelectMenu.sqf | 2 ++ addons/interaction/functions/fnc_push.sqf | 3 +-- addons/interaction/functions/fnc_removeTag.sqf | 1 + addons/interaction/functions/fnc_showMouseHint.sqf | 2 +- addons/interaction/functions/fnc_updateTooltipPosition.sqf | 2 ++ 13 files changed, 18 insertions(+), 7 deletions(-) diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 6417043df2..e828c60912 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -15,6 +15,7 @@ if (!hasInterface) exitWith {}; GVAR(isOpeningDoor) = false; // restore global fire teams for JIP +private ["_team"]; { _team = _x getVariable [QGVAR(assignedFireTeam), ""]; if (_team != "") then {_x assignTeam _team}; diff --git a/addons/interaction/functions/fnc_MoveDown.sqf b/addons/interaction/functions/fnc_MoveDown.sqf index eac30e4008..9c916aacbe 100644 --- a/addons/interaction/functions/fnc_MoveDown.sqf +++ b/addons/interaction/functions/fnc_MoveDown.sqf @@ -16,6 +16,8 @@ */ #include "script_component.hpp" +private["_action", "_color", "_count", "_ctrl", "_current", "_dlgInteractionDialog", "_i", "_index", "_infoText", "_player", "_target", "_top", "_vehicle"]; + #define CLAMP(x,low,high) (if(x > high)then{high}else{if(x < low)then{low}else{x}}) if (isNil QGVAR(MainButton)) exitWith{}; if (isNil QGVAR(Buttons)) exitWith{}; diff --git a/addons/interaction/functions/fnc_addPassengerActions.sqf b/addons/interaction/functions/fnc_addPassengerActions.sqf index 82e3b3b4fb..ae58fe195e 100644 --- a/addons/interaction/functions/fnc_addPassengerActions.sqf +++ b/addons/interaction/functions/fnc_addPassengerActions.sqf @@ -16,7 +16,7 @@ EXPLODE_3_PVT(_this,_vehicle,_player,_parameters); -private ["_unit","_actions"]; +private ["_unit", "_actions", "_actionTrees", "_varName"]; _unit = _parameters select 0; _varName = format [QEGVAR(interact_menu,Act_%1), typeOf _unit]; diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf index c446be3737..5a7c5a4eb1 100644 --- a/addons/interaction/functions/fnc_addPassengersActions.sqf +++ b/addons/interaction/functions/fnc_addPassengersActions.sqf @@ -20,8 +20,9 @@ private ["_actions"]; _actions = []; { + private ["_unit"]; _unit = _x; - if (_x != _player) then { + if (_unit != _player) then { _actions pushBack [ [ diff --git a/addons/interaction/functions/fnc_applyButtons.sqf b/addons/interaction/functions/fnc_applyButtons.sqf index be35b34877..e87cfc5e9c 100644 --- a/addons/interaction/functions/fnc_applyButtons.sqf +++ b/addons/interaction/functions/fnc_applyButtons.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" -private ["_object", "_actions", "_dlgInteractionDialog", "_ctrlInteractionDialog", "_index", "_ctrlInteractionDialogIcon"]; +private ["_object", "_actions", "_dlgInteractionDialog", "_ctrlInteractionDialog", "_index", "_ctrlInteractionDialogIcon", "_a", "_action", "_count"]; _object = GVAR(Target); _actions = GVAR(Buttons); diff --git a/addons/interaction/functions/fnc_getDoorAnimations.sqf b/addons/interaction/functions/fnc_getDoorAnimations.sqf index ca59ec177c..cd3bc85c50 100644 --- a/addons/interaction/functions/fnc_getDoorAnimations.sqf +++ b/addons/interaction/functions/fnc_getDoorAnimations.sqf @@ -1,7 +1,7 @@ // by commy2 #include "script_component.hpp" -private ["_house", "_door", "_animations", "_lockedVariable"]; +private ["_house", "_door", "_animations", "_lockedVariable", "_index"]; _house = _this select 0; _door = _this select 1; diff --git a/addons/interaction/functions/fnc_moduleInteraction.sqf b/addons/interaction/functions/fnc_moduleInteraction.sqf index 37b7bacba5..6cc70185ec 100644 --- a/addons/interaction/functions/fnc_moduleInteraction.sqf +++ b/addons/interaction/functions/fnc_moduleInteraction.sqf @@ -11,6 +11,8 @@ */ #include "script_component.hpp" +private["_activated", "_logic"]; + _logic = _this select 0; _activated = _this select 2; diff --git a/addons/interaction/functions/fnc_openDoor.sqf b/addons/interaction/functions/fnc_openDoor.sqf index e175e752cb..25b0cc7cab 100644 --- a/addons/interaction/functions/fnc_openDoor.sqf +++ b/addons/interaction/functions/fnc_openDoor.sqf @@ -26,6 +26,7 @@ GVAR(isOpeningDoor) = true; playSound "ACE_Sound_Click"; [_house, _animations] spawn { + private ["_house", "_animations", "_phase", "_position", "_time", "_usedMouseWheel"]; _house = _this select 0; _animations = _this select 1; diff --git a/addons/interaction/functions/fnc_openSelectMenu.sqf b/addons/interaction/functions/fnc_openSelectMenu.sqf index de5459f88c..dad9c424d2 100644 --- a/addons/interaction/functions/fnc_openSelectMenu.sqf +++ b/addons/interaction/functions/fnc_openSelectMenu.sqf @@ -23,6 +23,8 @@ */ #include "script_component.hpp" +private["_action", "_count", "_customActions", "_i"]; + if (!(profileNamespace getVariable [QGVAR(FlowMenu), false])) then { GVAR(SelectAccept) = _this select 1; GVAR(SelectCancel) = _this select 2; diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf index f52a9d40de..defefba079 100644 --- a/addons/interaction/functions/fnc_push.sqf +++ b/addons/interaction/functions/fnc_push.sqf @@ -12,8 +12,7 @@ */ #include "script_component.hpp" -_boat = _this select 0; -_velocity = _this select 1; +PARAMS_2(_boat,_velocity); if !(local _boat) exitWith { [_this, QUOTE(FUNC(push)), _boat] call EFUNC(common,execRemoteFnc); diff --git a/addons/interaction/functions/fnc_removeTag.sqf b/addons/interaction/functions/fnc_removeTag.sqf index 0894520149..552b030dc5 100644 --- a/addons/interaction/functions/fnc_removeTag.sqf +++ b/addons/interaction/functions/fnc_removeTag.sqf @@ -2,6 +2,7 @@ #include "script_component.hpp" 0 spawn { + private["_index", "_name"]; waitUntil {player getVariable ["ACE_Name", ""] != ""}; _name = player getVariable ["ACE_Name", ""]; diff --git a/addons/interaction/functions/fnc_showMouseHint.sqf b/addons/interaction/functions/fnc_showMouseHint.sqf index 5cb96a0eae..0cf8104901 100644 --- a/addons/interaction/functions/fnc_showMouseHint.sqf +++ b/addons/interaction/functions/fnc_showMouseHint.sqf @@ -20,7 +20,7 @@ #define GUI_GRID_W (0.025) #define GUI_GRID_H (0.04) -private ["_leftClick", "_rightClick", "_scroll"]; +private ["_leftClick", "_rightClick", "_scroll", "_display"]; _leftClick = _this select 0; _rightClick = _this select 1; _scroll = ""; diff --git a/addons/interaction/functions/fnc_updateTooltipPosition.sqf b/addons/interaction/functions/fnc_updateTooltipPosition.sqf index 27148c5aa3..4433d7ecc3 100644 --- a/addons/interaction/functions/fnc_updateTooltipPosition.sqf +++ b/addons/interaction/functions/fnc_updateTooltipPosition.sqf @@ -1,6 +1,8 @@ // by commy2 #include "script_component.hpp" +private["_ctrl"]; + disableSerialization; _ctrl = ctrlParent (_this select 0) displayCtrl 40; From 8b53d5de332d33e05149c96af459bee91e6692cc Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 2 May 2015 01:18:42 -0300 Subject: [PATCH 0018/1101] Replace dialog by display --- addons/interact_menu/CursorMenus.hpp | 45 ++----------------- addons/interact_menu/XEH_preInit.sqf | 15 +++++++ .../interact_menu/functions/fnc_keyDown.sqf | 35 ++++++++------- addons/interact_menu/functions/fnc_keyUp.sqf | 2 +- .../functions/fnc_renderIcon.sqf | 4 ++ .../functions/fnc_renderSelector.sqf | 4 ++ 6 files changed, 46 insertions(+), 59 deletions(-) diff --git a/addons/interact_menu/CursorMenus.hpp b/addons/interact_menu/CursorMenus.hpp index d13813b92e..16ced412ec 100644 --- a/addons/interact_menu/CursorMenus.hpp +++ b/addons/interact_menu/CursorMenus.hpp @@ -1,47 +1,8 @@ class GVAR(cursorMenu) { idd = 91919; - movingEnable = false; + access = 0; + movingEnable = 0; + enableSimulation = 1; onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgCursorMenu)),_this select 0)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(cursorMenuOpened)),true)]); onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(cursorMenuOpened)),false)]); - objects[] = {}; - /*class controlsBackground { - class Background { - idc = 91920; - moving = 0; - font = "TahomaB"; - text = ""; - sizeEx = 0; - lineSpacing = 0; - access = 0; - type = 0; - style = 0; - size = 1; - colorBackground[] = {0, 0, 0, 0.5}; - colorText[] = {0, 0, 0, 0}; - x = "safezoneX"; - y = "safezoneY"; - w = "safezoneW"; - h = "safezoneH"; - }; - };*/ - class controls { - class Canvas { - idc = 91921; - moving = 0; - font = "TahomaB"; - text = ""; - sizeEx = 0; - lineSpacing = 0; - access = 0; - type = 0; - style = 0; - size = 1; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0, 0, 0, 0}; - x = "safezoneX"; - y = "safezoneY"; - w = "safezoneW"; - h = "safezoneH"; - }; - }; }; diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 7e86646b79..3d67dab6a9 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -25,6 +25,21 @@ PREP(renderSelector); PREP(setupTextColors); PREP(splitPath); +// Event handlers for all interact menu controls +DFUNC(handleMouseMovement) = { + if (GVAR(cursorKeepCentered)) then { + GVAR(cursorPos) = GVAR(cursorPos) vectorAdd [_this select 1, _this select 2, 0] vectorDiff [0.5, 0.5, 0]; + setMousePosition [0.5, 0.5]; + } else { + GVAR(cursorPos) = [_this select 1, _this select 2, 0]; + }; +}; +DFUNC(handleMouseButtonDown) = { + if !(GVAR(actionOnKeyRelease)) then { + [GVAR(openedMenuType),true] call FUNC(keyUp); + }; +}; + GVAR(keyDown) = false; GVAR(keyDownSelfAction) = false; GVAR(keyDownTime) = 0; diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index d4e460c10f..5976b99223 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -37,27 +37,30 @@ GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) || {(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}} || {(_menuType == 0) && GVAR(AlwaysUseCursorInteraction)}; +// Delete existing controls in case there's any left +GVAR(iconCount) = 0; +for "_i" from 0 to (count GVAR(iconCtrls))-1 do { + ctrlDelete (GVAR(iconCtrls) select _i); + GVAR(ParsedTextCached) set [_i, ""]; +}; +GVAR(iconCtrls) resize GVAR(iconCount); + if (GVAR(useCursorMenu)) then { - createDialog QGVAR(cursorMenu); + (findDisplay 46) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";// + (finddisplay 91919) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}]; + (finddisplay 91919) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; // The dialog sets: // uiNamespace getVariable QGVAR(dlgCursorMenu); // uiNamespace getVariable QGVAR(cursorMenuOpened); - ctrlEnable [91921, true]; GVAR(cursorPos) = [0.5,0.5,0]; - ((finddisplay 91919) displayctrl 91921) ctrlAddEventHandler ["MouseMoving", { - if (GVAR(cursorKeepCentered)) then { - GVAR(cursorPos) = GVAR(cursorPos) vectorAdd [_this select 1, _this select 2, 0] vectorDiff [0.5, 0.5, 0]; - setMousePosition [0.5, 0.5]; - } else { - GVAR(cursorPos) = [_this select 1, _this select 2, 0]; - }; - }]; - // handles LMB in cursor mode when action on keyrelease is disabled - ((finddisplay 91919) displayctrl 91921) ctrlAddEventHandler ["MouseButtonDown", { - if !(GVAR(actionOnKeyRelease)) then { - [GVAR(openedMenuType),true] call FUNC(keyUp); - }; - }]; + + _ctrl = (findDisplay 91919) ctrlCreate ["RscStructuredText", 9922]; + _ctrl ctrlSetPosition [safeZoneX, safeZoneY, safeZoneW, safeZoneH]; + _ctrl ctrlCommit 0; + + // handles Mouse moving and LMB in cursor mode when action on keyrelease is disabled + ((finddisplay 91919) displayctrl 9922) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)]; + ((finddisplay 91919) displayctrl 9922) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)]; setMousePosition [0.5, 0.5]; }; diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 7b24497802..6f1d00276f 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -19,7 +19,7 @@ _calledByClicking = _this select 1; if (GVAR(openedMenuType) < 0) exitWith {true}; if (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then { - closeDialog 0; + (findDisplay 91919) closeDisplay 2; }; if(GVAR(actionSelected)) then { diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 180b5a3c36..44a280a52e 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -23,6 +23,10 @@ PARAMS_4(_text,_icon,_sPos,_textSettings); if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { _displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); + if (GVAR(useCursorMenu)) then { + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)]; + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)]; + }; }; _ctrl = GVAR(iconCtrls) select GVAR(iconCount); diff --git a/addons/interact_menu/functions/fnc_renderSelector.sqf b/addons/interact_menu/functions/fnc_renderSelector.sqf index 7ac9559297..96a495c715 100644 --- a/addons/interact_menu/functions/fnc_renderSelector.sqf +++ b/addons/interact_menu/functions/fnc_renderSelector.sqf @@ -20,6 +20,10 @@ private ["_displayNum", "_ctrl", "_pos"]; if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { _displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); + if (GVAR(useCursorMenu)) then { + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)]; + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)]; + }; }; _ctrl = GVAR(iconCtrls) select GVAR(iconCount); From fae10aa7319258750ba4b972cc4ea43fc1010b57 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 2 May 2015 01:33:28 -0300 Subject: [PATCH 0019/1101] Replace dialog by display. --- addons/interact_menu/CursorMenus.hpp | 45 ++----------------- addons/interact_menu/XEH_preInit.sqf | 15 +++++++ .../interact_menu/functions/fnc_keyDown.sqf | 35 ++++++++------- addons/interact_menu/functions/fnc_keyUp.sqf | 2 +- .../functions/fnc_renderIcon.sqf | 4 ++ .../functions/fnc_renderSelector.sqf | 4 ++ 6 files changed, 46 insertions(+), 59 deletions(-) diff --git a/addons/interact_menu/CursorMenus.hpp b/addons/interact_menu/CursorMenus.hpp index d13813b92e..16ced412ec 100644 --- a/addons/interact_menu/CursorMenus.hpp +++ b/addons/interact_menu/CursorMenus.hpp @@ -1,47 +1,8 @@ class GVAR(cursorMenu) { idd = 91919; - movingEnable = false; + access = 0; + movingEnable = 0; + enableSimulation = 1; onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgCursorMenu)),_this select 0)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(cursorMenuOpened)),true)]); onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(cursorMenuOpened)),false)]); - objects[] = {}; - /*class controlsBackground { - class Background { - idc = 91920; - moving = 0; - font = "TahomaB"; - text = ""; - sizeEx = 0; - lineSpacing = 0; - access = 0; - type = 0; - style = 0; - size = 1; - colorBackground[] = {0, 0, 0, 0.5}; - colorText[] = {0, 0, 0, 0}; - x = "safezoneX"; - y = "safezoneY"; - w = "safezoneW"; - h = "safezoneH"; - }; - };*/ - class controls { - class Canvas { - idc = 91921; - moving = 0; - font = "TahomaB"; - text = ""; - sizeEx = 0; - lineSpacing = 0; - access = 0; - type = 0; - style = 0; - size = 1; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {0, 0, 0, 0}; - x = "safezoneX"; - y = "safezoneY"; - w = "safezoneW"; - h = "safezoneH"; - }; - }; }; diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 7e86646b79..3d67dab6a9 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -25,6 +25,21 @@ PREP(renderSelector); PREP(setupTextColors); PREP(splitPath); +// Event handlers for all interact menu controls +DFUNC(handleMouseMovement) = { + if (GVAR(cursorKeepCentered)) then { + GVAR(cursorPos) = GVAR(cursorPos) vectorAdd [_this select 1, _this select 2, 0] vectorDiff [0.5, 0.5, 0]; + setMousePosition [0.5, 0.5]; + } else { + GVAR(cursorPos) = [_this select 1, _this select 2, 0]; + }; +}; +DFUNC(handleMouseButtonDown) = { + if !(GVAR(actionOnKeyRelease)) then { + [GVAR(openedMenuType),true] call FUNC(keyUp); + }; +}; + GVAR(keyDown) = false; GVAR(keyDownSelfAction) = false; GVAR(keyDownTime) = 0; diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index d4e460c10f..5976b99223 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -37,27 +37,30 @@ GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) || {(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}} || {(_menuType == 0) && GVAR(AlwaysUseCursorInteraction)}; +// Delete existing controls in case there's any left +GVAR(iconCount) = 0; +for "_i" from 0 to (count GVAR(iconCtrls))-1 do { + ctrlDelete (GVAR(iconCtrls) select _i); + GVAR(ParsedTextCached) set [_i, ""]; +}; +GVAR(iconCtrls) resize GVAR(iconCount); + if (GVAR(useCursorMenu)) then { - createDialog QGVAR(cursorMenu); + (findDisplay 46) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";// + (finddisplay 91919) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}]; + (finddisplay 91919) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; // The dialog sets: // uiNamespace getVariable QGVAR(dlgCursorMenu); // uiNamespace getVariable QGVAR(cursorMenuOpened); - ctrlEnable [91921, true]; GVAR(cursorPos) = [0.5,0.5,0]; - ((finddisplay 91919) displayctrl 91921) ctrlAddEventHandler ["MouseMoving", { - if (GVAR(cursorKeepCentered)) then { - GVAR(cursorPos) = GVAR(cursorPos) vectorAdd [_this select 1, _this select 2, 0] vectorDiff [0.5, 0.5, 0]; - setMousePosition [0.5, 0.5]; - } else { - GVAR(cursorPos) = [_this select 1, _this select 2, 0]; - }; - }]; - // handles LMB in cursor mode when action on keyrelease is disabled - ((finddisplay 91919) displayctrl 91921) ctrlAddEventHandler ["MouseButtonDown", { - if !(GVAR(actionOnKeyRelease)) then { - [GVAR(openedMenuType),true] call FUNC(keyUp); - }; - }]; + + _ctrl = (findDisplay 91919) ctrlCreate ["RscStructuredText", 9922]; + _ctrl ctrlSetPosition [safeZoneX, safeZoneY, safeZoneW, safeZoneH]; + _ctrl ctrlCommit 0; + + // handles Mouse moving and LMB in cursor mode when action on keyrelease is disabled + ((finddisplay 91919) displayctrl 9922) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)]; + ((finddisplay 91919) displayctrl 9922) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)]; setMousePosition [0.5, 0.5]; }; diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 7b24497802..6f1d00276f 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -19,7 +19,7 @@ _calledByClicking = _this select 1; if (GVAR(openedMenuType) < 0) exitWith {true}; if (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then { - closeDialog 0; + (findDisplay 91919) closeDisplay 2; }; if(GVAR(actionSelected)) then { diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 180b5a3c36..44a280a52e 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -23,6 +23,10 @@ PARAMS_4(_text,_icon,_sPos,_textSettings); if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { _displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); + if (GVAR(useCursorMenu)) then { + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)]; + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)]; + }; }; _ctrl = GVAR(iconCtrls) select GVAR(iconCount); diff --git a/addons/interact_menu/functions/fnc_renderSelector.sqf b/addons/interact_menu/functions/fnc_renderSelector.sqf index 7ac9559297..96a495c715 100644 --- a/addons/interact_menu/functions/fnc_renderSelector.sqf +++ b/addons/interact_menu/functions/fnc_renderSelector.sqf @@ -20,6 +20,10 @@ private ["_displayNum", "_ctrl", "_pos"]; if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { _displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); + if (GVAR(useCursorMenu)) then { + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseMoving", DFUNC(handleMouseMovement)]; + ((finddisplay _displayNum) displayctrl (54021+GVAR(iconCount))) ctrlAddEventHandler ["MouseButtonDown", DFUNC(handleMouseButtonDown)]; + }; }; _ctrl = GVAR(iconCtrls) select GVAR(iconCount); From d2fdeb5e96d02b98614e5bce5c25ef6646739fa2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 2 May 2015 00:13:09 -0500 Subject: [PATCH 0020/1101] Allow Skipping LOS Check (Because of doors) --- addons/interact_menu/functions/fnc_compileMenu.sqf | 2 +- addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf | 2 +- addons/interact_menu/functions/fnc_createAction.sqf | 2 +- addons/interact_menu/functions/fnc_renderBaseMenu.sqf | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 7b995375b7..5b136a0298 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -83,7 +83,7 @@ _recurseFnc = { [], _position, _distance, - [_showDisabled,_enableInside,_canCollapse,_runOnHover], + [_showDisabled,_enableInside,_canCollapse,_runOnHover, false], _modifierFunction ], _children diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index e767c3525d..0f8b6302e9 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -67,7 +67,7 @@ _recurseFnc = { {}, [0,0,0], 10, //distace - [_showDisabled,_enableInside,_canCollapse,_runOnHover], + [_showDisabled,_enableInside,_canCollapse,_runOnHover, true], _modifierFunction ], _children diff --git a/addons/interact_menu/functions/fnc_createAction.sqf b/addons/interact_menu/functions/fnc_createAction.sqf index b26cb186f3..6845683044 100644 --- a/addons/interact_menu/functions/fnc_createAction.sqf +++ b/addons/interact_menu/functions/fnc_createAction.sqf @@ -68,7 +68,7 @@ _distance = if (count _this > 8) then { _params = if (count _this > 9) then { _this select 9 } else { - [false,false,false,false] + [false,false,false,false,false] }; _modifierFunction = if (count _this > 10) then { diff --git a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf index 4daa4a5c90..cfc969bd8a 100644 --- a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf @@ -44,7 +44,7 @@ if (GVAR(openedMenuType) == 0 && vehicle ACE_player == ACE_player && if (_actualDistance > _distance) exitWith {true}; - if (_actualDistance > 1.0) exitWith { + if ((_actualDistance > 1.0) && {!((_actionData select 9) select 4)}) exitWith { // If distance to action is greater than 1.0 m, check LOS _line = [_headPos call EFUNC(common,positionToASL), _pos call EFUNC(common,positionToASL), _object, ACE_player]; lineIntersects _line From 1735047e3c851a4bc5fc05d9cca6acc5ea0aa7cd Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 2 May 2015 14:37:58 -0300 Subject: [PATCH 0021/1101] Make closer action points oclude farther ones. Improves the clutter of the interact menu when interating with a person from the side. Close #738 --- addons/interact_menu/XEH_preInit.sqf | 1 + .../functions/fnc_renderActionPoints.sqf | 36 +++++++++++++++++-- .../functions/fnc_renderBaseMenu.sqf | 8 +++-- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 3d67dab6a9..ee0ffe9504 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -66,6 +66,7 @@ GVAR(expandedTime) = diag_tickTime; GVAR(iconCtrls) = []; GVAR(iconCount) = 0; +GVAR(collectedActionPoints) = []; GVAR(foundActions) = []; GVAR(lastTimeSearchedActions) = -1000; diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index 8e6cb7d390..c12cbe8c16 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -17,13 +17,13 @@ GVAR(currentOptions) = []; private ["_player","_numInteractObjects","_numInteractions","_actionsVarName","_classActions","_target","_player","_action","_cameraPos","_cameraDir", "_lambda", "_nearestObjects", "_pos"]; _player = ACE_player; +_cameraPos = (positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL); +_cameraDir = ((positionCameraToWorld [0, 0, 1]) call EFUNC(common,positionToASL)) vectorDiff _cameraPos; + _fnc_renderNearbyActions = { // Render all nearby interaction menus #define MAXINTERACTOBJECTS 3 - _cameraPos = (positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL); - _cameraDir = ((positionCameraToWorld [0, 0, 1]) call EFUNC(common,positionToASL)) vectorDiff _cameraPos; - GVAR(foundActions) = []; GVAR(lastTimeSearchedActions) = diag_tickTime; @@ -114,6 +114,8 @@ _fnc_renderSelfActions = { }; +GVAR(collectedActionPoints) resize 0; + // Render nearby actions, unit self actions or vehicle self actions as appropiate if (GVAR(openedMenuType) == 0) then { @@ -132,3 +134,31 @@ if (GVAR(openedMenuType) == 0) then { } else { ACE_player call _fnc_renderSelfActions; }; + +if (count GVAR(collectedActionPoints) > 1) then { + // Do the oclusion pass + + // Order action points according to z + // @todo: after 1.43 is released switch BIS_fnc_sortBy with sort + GVAR(collectedActionPoints) = [GVAR(collectedActionPoints),[],{_x select 0},"ASCEND"] call BIS_fnc_sortBy; + //GVAR(collectedActionPoints) sort true; + + private ["_i","_j","_delta"]; + for [{_i = count GVAR(collectedActionPoints) - 1}, {_i > 0}, {_i = _i - 1}] do { + for [{_j = _i - 1}, {_j >= 0}, {_j = _j - 1}] do { + // Check if action point _i is ocluded by _j + _delta = vectorNormalized ((GVAR(collectedActionPoints) select _i select 1) vectorDiff (GVAR(collectedActionPoints) select _j select 1)); + + // If _i is inside a cone with 20º half angle with origin on _j + if (_delta select 2 > 0.94) exitWith { + GVAR(collectedActionPoints) deleteAt _i; + }; + }; + }; +}; + +// Render the non-ocluded points +{ + EXPLODE_3_PVT(_x,_z,_sPos,_activeActionTree); + [[], _activeActionTree, _sPos, [180,360]] call FUNC(renderMenu); +} forEach GVAR(collectedActionPoints); diff --git a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf index 4daa4a5c90..913a361941 100644 --- a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf @@ -93,11 +93,13 @@ _fnc_print = { // Check if there's something left for rendering if (count _activeActionTree == 0) exitWith {false}; -//EXPLODE_2_PVT(_activeActionTree,_actionData,_actionChildren); - BEGIN_COUNTER(fnc_renderMenus); -[[], _activeActionTree, _sPos, [180,360]] call FUNC(renderMenu); +// IGNORE_PRIVATE_WARNING(_cameraPos,_cameraDir); +_sPos pushBack (((_pos call EFUNC(common,positionToASL)) vectorDiff _cameraPos) vectorDotProduct _cameraDir); + +// Add action point for oclusion and rendering +GVAR(collectedActionPoints) pushBack [_sPos select 2, _sPos, _activeActionTree]; END_COUNTER(fnc_renderMenus); From e6c333bff4baeda7664be651d089d787829813e9 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 2 May 2015 14:54:57 -0300 Subject: [PATCH 0022/1101] Fix oclusion when self-interacting --- addons/interact_menu/functions/fnc_renderBaseMenu.sqf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf index 913a361941..36685a72eb 100644 --- a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf @@ -96,7 +96,11 @@ if (count _activeActionTree == 0) exitWith {false}; BEGIN_COUNTER(fnc_renderMenus); // IGNORE_PRIVATE_WARNING(_cameraPos,_cameraDir); -_sPos pushBack (((_pos call EFUNC(common,positionToASL)) vectorDiff _cameraPos) vectorDotProduct _cameraDir); +if (count _pos > 2) then { + _sPos pushBack (((_pos call EFUNC(common,positionToASL)) vectorDiff _cameraPos) vectorDotProduct _cameraDir); +} else { + _sPos pushBack 0; +}; // Add action point for oclusion and rendering GVAR(collectedActionPoints) pushBack [_sPos select 2, _sPos, _activeActionTree]; From 0fd783082dfdc11922f88ba0432ea828d5ac1533 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 2 May 2015 22:53:23 +0200 Subject: [PATCH 0023/1101] don't close menu when no action is selected --- addons/interact_menu/functions/fnc_handlePlayerChanged.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interact_menu/functions/fnc_handlePlayerChanged.sqf b/addons/interact_menu/functions/fnc_handlePlayerChanged.sqf index cff8bb1048..cb21d218db 100644 --- a/addons/interact_menu/functions/fnc_handlePlayerChanged.sqf +++ b/addons/interact_menu/functions/fnc_handlePlayerChanged.sqf @@ -16,7 +16,7 @@ EXPLODE_2_PVT(_this,_newUnit,_oldUnit); // add to new unit private "_ehid"; _ehid = [_newUnit, "DefaultAction", {GVAR(openedMenuType) >= 0}, { - if !(GVAR(actionOnKeyRelease)) then { + if (!GVAR(actionOnKeyRelease) && GVAR(actionSelected)) then { [GVAR(openedMenuType),true] call FUNC(keyUp); }; }] call EFUNC(common,addActionEventHandler); From f44aaee7c79cf8e44ce36f4f6ee4a7a7265d54fc Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 2 May 2015 23:02:40 +0200 Subject: [PATCH 0024/1101] also in cursor mode --- addons/interact_menu/functions/fnc_keyDown.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index d4e460c10f..464466ae3a 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -54,7 +54,7 @@ if (GVAR(useCursorMenu)) then { }]; // handles LMB in cursor mode when action on keyrelease is disabled ((finddisplay 91919) displayctrl 91921) ctrlAddEventHandler ["MouseButtonDown", { - if !(GVAR(actionOnKeyRelease)) then { + if (!GVAR(actionOnKeyRelease) && GVAR(actionSelected)) then { [GVAR(openedMenuType),true] call FUNC(keyUp); }; }]; From d4225e03d2e642379129c0e4354cf4b9578eae3e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 2 May 2015 23:13:35 -0500 Subject: [PATCH 0025/1101] Split into functions (for future caching) --- addons/interact_menu/XEH_clientInit.sqf | 2 +- addons/interact_menu/XEH_preInit.sqf | 7 +- .../functions/fnc_addHouseActions.sqf | 153 ------------------ .../fnc_userActions_addHouseActions.sqf | 101 ++++++++++++ .../fnc_userActions_getHouseActions.sqf | 90 +++++++++++ 5 files changed, 198 insertions(+), 155 deletions(-) delete mode 100644 addons/interact_menu/functions/fnc_addHouseActions.sqf create mode 100644 addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf create mode 100644 addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 8639483537..d59c6e912f 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -18,7 +18,7 @@ GVAR(ParsedTextCached) = []; addMissionEventHandler ["Draw3D", DFUNC(render)]; //Add Actions to Houses: -["interactMenuOpened", {_this call FUNC(addHouseActions)}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {_this call FUNC(userActions_addHouseActions)}] call EFUNC(common,addEventHandler); // This spawn is probably worth keeping, as pfh don't work natively on the briefing screen and IDK how reliable the hack we implemented for them is. // The thread dies as soon as the mission start, so it's not really compiting for scheduler space. diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 937904b471..9f12774567 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -4,7 +4,6 @@ ADDON = false; PREP(addActionToClass); PREP(addActionToObject); -PREP(addHouseActions); PREP(compileMenu); PREP(compileMenuSelfAction); PREP(collectActiveActionTree); @@ -26,6 +25,12 @@ PREP(renderSelector); PREP(setupTextColors); PREP(splitPath); + +PREP(userActions_addHouseActions); +PREP(userActions_getHouseActions); + + + GVAR(keyDown) = false; GVAR(keyDownSelfAction) = false; GVAR(keyDownTime) = 0; diff --git a/addons/interact_menu/functions/fnc_addHouseActions.sqf b/addons/interact_menu/functions/fnc_addHouseActions.sqf deleted file mode 100644 index 1e454ba258..0000000000 --- a/addons/interact_menu/functions/fnc_addHouseActions.sqf +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Author: PabstMirror - * Scans for nearby "Static" objects (buildings) and adds the UserActions to them. - * Called when interact_menu starts rendering (from "interact_keyDown" event) - * - * Arguments: - * Interact Menu Type (0 - world, 1 - self) - * - * Return Value: - * Nothing - * - * Example: - * [0] call ace_interact_menu_fnc_addHouseActions - * - * Public: Yes - */ -#include "script_component.hpp" - -PARAMS_1(_interactionType); - -//Ignore self-interaction menu: -if (_interactionType != 0) exitWith {}; -//Ignore when mounted: -if ((vehicle ACE_player) != ACE_player) exitWith {}; - -[{ - private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_displayName", "_displayNameDefault", "_iconImage", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; - PARAMS_2(_args,_pfID); - EXPLODE_4_PVT(_args,_setPosition,_addedHelpers,_housesScaned,_houseBeingScaned); - - if (!EGVAR(interact_menu,keyDown)) then { - {deleteVehicle _x;} forEach _addedHelpers; - [_pfID] call CBA_fnc_removePerFrameHandler; - } else { - // 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) exitWith {}; - - // systemChat str _houseBeingScaned; - - if (_houseBeingScaned isEqualTo []) then { - _houseWasScaned = false; - { - _theHouse = _x; - if (!(_theHouse in _housesScaned)) exitWith { - _houseWasScaned = true; - _housesScaned pushBack _x; - if ((typeOf _theHouse) != "") then { - _configPath = (configFile >> "CfgVehicles" >> (typeOf _theHouse)); - if (isClass (_configPath >> "UserActions")) then { - _args set [3, [_theHouse, 0, []]]; - }; - }; - }; - // Need to scan fairly far, because houses are big. You can be 25m from center of building but right next to a door. - } forEach nearestObjects [ace_player, ["Static"], 30]; - if (!_houseWasScaned) then { - _args set [0, (getPosASL ace_player)]; - }; - } else { - EXPLODE_3_PVT(_houseBeingScaned,_theHouse,_index,_houseHelpers); - _configPath = configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "UserActions"; - if (_index < ((count _configPath) - 1)) then { - _actionPath = _configPath select _index; - - _fncStatement = { - PARAMS_3(_target,_player,_variable); - EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); - this = _theHouse; //this feels dirty - call _statement; - }; - _fncCondition = { - PARAMS_3(_target,_player,_variable); - EXPLODE_3_PVT(_variable,_theHouse,_statement,_condition); - this = _theHouse; //this feels dirty - call _condition; - }; - - _displayName = getText (_actionPath >> "displayName"); - _displayNameDefault = getText (_actionPath >> "displayNameDefault"); - _position = getText (_actionPath >> "position"); - _condition = getText (_actionPath >> "condition"); - _statement = getText (_actionPath >> "statement"); - _maxDistance = getNumber (_actionPath >> "radius"); - - if (_displayName == "") then {_displayName = (configName _x);}; - if (_position == "") then {ERROR("Bad Position");}; - if (_condition == "") then {_condition = "true";}; - if (_statement == "") then {ERROR("No Statement");}; - - _statement = compile _statement; - _condition = compile _condition; - _maxDistance = _maxDistance + 0.1; //increase range slightly - _iconImage = ""; - - if (_displayNameDefault != "") then { - //something like: ""; - //find the end [.paa'] - _endIndex = _displayNameDefault find ".paa'"; - if (_endIndex == -1) exitWith {}; - _startIndex = _endIndex - 1; - _endIndex = _endIndex + 4; - //work backwards to find the starting ['] - while {(_startIndex > 0) && {_iconImage == ""}} do { - if ((_displayNameDefault select [_startIndex, 1]) == "'") then { - _startIndex = _startIndex + 1; - _iconImage = _displayNameDefault select [_startIndex, (_endIndex - _startIndex)]; - }; - _startIndex = _startIndex - 1; - }; - }; - - //Find a helper object, if one exists on the selection position - _helperObject = objNull; - _actionOffset = [0,0,0]; - { - EXPLODE_3_PVT(_x,_memPoint,_object,_count); - if (_memPoint == _position) exitWith { - _helperObject = _object; - //make sure actions don't overlap (although they are usualy mutually exclusive) - _actionOffset = [0,0,(_count * 0.05)]; - _x set [2, (_count + 1)]; - }; - } forEach _houseHelpers; - - if (isNull _helperObject) then { - _helperObject = "Sign_Sphere25cm_F" createVehicleLocal (getpos _theHouse); - _houseHelpers pushBack [_position, _helperObject, 1]; - _helperPos = _theHouse modelToWorld (_theHouse selectionPosition _position); - //ASL/ATL bullshit: - if (surfaceIsWater _helperPos) then { - _helperObject setPosAslw _helperPos; - } else { - _helperObject setPos _helperPos; - }; - _helperObject hideObject true; - _addedHelpers pushBack _helperObject; - TRACE_3("Making New Helper %1",_helperObject,_helperPos,_theHouse); - }; - - _action = [(configName _actionPath), _displayName, _iconImage, _fncStatement, _fncCondition, {}, [_theHouse, _statement, _condition], _actionOffset, _maxDistance] call EFUNC(interact_menu,createAction); - [_helperObject, 0, [],_action] call EFUNC(interact_menu,addActionToObject); - - _index = _index + 1; - _args set [3, [_theHouse, _index, _houseHelpers]]; - } else { - _args set [3, []]; - }; - }; - }; -}, 0, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], [], []]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf new file mode 100644 index 0000000000..c53c5caa34 --- /dev/null +++ b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf @@ -0,0 +1,101 @@ +/* + * Author: PabstMirror + * Scans for nearby "Static" objects (buildings) and adds the UserActions to them. + * Called when interact_menu starts rendering (from "interact_keyDown" event) + * + * Arguments: + * 0: Interact Menu Type (0 - world, 1 - self) + * + * Return Value: + * Nothing + * + * Example: + * [0] call ace_interact_menu_fnc_addHouseActions + * + * Public: Yes + */ +#include "script_component.hpp" + +PARAMS_1(_interactionType); + +//Ignore self-interaction menu: +if (_interactionType != 0) exitWith {}; +//Ignore when mounted: +if ((vehicle ACE_player) != ACE_player) exitWith {}; + +systemChat format ["starting %1", diag_tickTime]; + +[{ + private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_displayName", "_displayNameDefault", "_iconImage", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; + PARAMS_2(_args,_pfID); + EXPLODE_4_PVT(_args,_setPosition,_addedHelpers,_housesScaned,_houseBeingScaned); + + if (!EGVAR(interact_menu,keyDown)) then { + {deleteVehicle _x;} forEach _addedHelpers; + [_pfID] call CBA_fnc_removePerFrameHandler; + } else { + // 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) exitWith {}; + + //Make the common case fast (looking at a door): + if ((!isNull cursorTarget) && {cursorTarget isKindOf "Static"} && {!(cursorTarget in _housesScaned)}) then { + _houseBeingScaned = cursorTarget; + _housesScaned pushBack _houseBeingScaned; + }; + + if (isNull _houseBeingScaned) then { + _houseWasScaned = false; + _nearBuidlings = nearestObjects [ace_player, ["Static"], 30]; + { + _theHouse = _x; + if (!(_theHouse in _housesScaned)) exitWith { + _houseWasScaned = true; + _housesScaned pushBack _x; + if ((typeOf _theHouse) != "") then { + _configPath = (configFile >> "CfgVehicles" >> (typeOf _theHouse)); + if (isClass (_configPath >> "UserActions")) then { + _args set [3, _theHouse]; + }; + }; + }; + // Need to scan fairly far, because houses are big. You can be 25m from center of building but right next to a door. + } forEach _nearBuidlings; + + //If we finished scanning everything, update position + if (!_houseWasScaned) then { + systemChat format ["Pos Updated (stable): %1", diag_tickTime]; + _args set [0, (getPosASL ace_player)]; + }; + } else { + _actionSet = [(typeOf _houseBeingScaned)] call FUNC(userActions_getHouseActions); + EXPLODE_2_PVT(_actionSet,_memPoints,_memPointsActions); + + // systemChat format ["Add Actions for [%1] (%2)", _houseBeingScaned, (count _memPoints)]; + { + _helperObject = "Sign_Sphere25cm_F" createVehicleLocal (getpos _houseBeingScaned); + _addedHelpers pushBack _helperObject; + + _helperObject setVariable [QGVAR(building), _houseBeingScaned]; + + //ASL/ATL bullshit (note: attachTo doesn't work on buildings) + _helperPos = _houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x); + if (surfaceIsWater _helperPos) then { + _helperObject setPosAslw _helperPos; + } else { + _helperObject setPos _helperPos; + }; + _helperObject hideObject true; + TRACE_3("Making New Helper",_helperObject,_x,_houseBeingScaned); + { + [_helperObject, 0, [], _x] call EFUNC(interact_menu,addActionToObject); + } forEach (_memPointsActions select _forEachIndex); + + } forEach _memPoints; + + _args set [3, objNull]; + }; + }; +}, 0, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], [], objNull]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf new file mode 100644 index 0000000000..4b9977d590 --- /dev/null +++ b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf @@ -0,0 +1,90 @@ +/* + * Author: PabstMirror + * Scans for nearby "Static" objects (buildings) and adds the UserActions to them. + * Called when interact_menu starts rendering (from "interact_keyDown" event) + * + * Arguments: + * 0: Building Classname + * + * Return Value: + * [[Array of MemPoints], [Array Of Actions]] + * + * Public: Yes + */ + #include "script_component.hpp" + + +PARAMS_1(_typeOfBuilding); + +_memPoints = []; +_memPointsActions = []; + +_configPath = configFile >> "CfgVehicles" >> _typeOfBuilding >> "UserActions"; + +_fncStatement = { + PARAMS_3(_target,_player,_variable); + EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition); + this = _target getVariable [QGVAR(building), objNull]; + call _actionStatement; +}; +_fncCondition = { + PARAMS_3(_target,_player,_variable); + EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition); + this = _target getVariable [QGVAR(building), objNull]; + call _actionCondition; +}; + +for "_index" from 0 to ((count _configPath) - 1) do { + _actionPath = _configPath select _index; + + _actionDisplayName = getText (_actionPath >> "displayName"); + _actionDisplayNameDefault = getText (_actionPath >> "displayNameDefault"); + _actionPosition = getText (_actionPath >> "position"); + _actionCondition = getText (_actionPath >> "condition"); + _actionStatement = getText (_actionPath >> "statement"); + _actionMaxDistance = getNumber (_actionPath >> "radius"); + + if (_actionDisplayName == "") then {_actionDisplayName = (configName _x);}; + if (_actionPosition == "") then {ERROR("Bad Position");}; + if (_actionCondition == "") then {_actionCondition = "true";}; + if (_actionStatement == "") then {ERROR("No Statement");}; + + _actionStatement = compile _actionStatement; + _actionCondition = compile _actionCondition; + _actionMaxDistance = _actionMaxDistance + 0.5; //increase range slightly + _iconImage = ""; + + //todo: extension? (~75% of time doing this string shit!) + if (_actionDisplayNameDefault != "") then { + //something like: ""; + //find the end [.paa'] + _endIndex = _actionDisplayNameDefault find ".paa'"; + if (_endIndex == -1) exitWith {}; + _startIndex = _endIndex - 1; + _endIndex = _endIndex + 4; + //work backwards to find the starting ['] + while {(_startIndex > 0) && {_iconImage == ""}} do { + if ((_actionDisplayNameDefault select [_startIndex, 1]) == "'") then { + _startIndex = _startIndex + 1; + _iconImage = _actionDisplayNameDefault select [_startIndex, (_endIndex - _startIndex)]; + }; + _startIndex = _startIndex - 1; + }; + }; + + _memPointIndex = _memPoints find _actionPosition; + _actionOffset = [0,0,0]; + if (_memPointIndex == -1) then { + _memPointIndex = count _memPoints; + _memPoints pushBack _actionPosition; + _memPointsActions pushBack []; + } else { + _actionOffset set [2, 0.05 * (count (_memPointsActions select _memPointIndex))]; + }; + + _action = [(configName _actionPath), _actionDisplayName, _iconImage, _fncStatement, _fncCondition, {}, [_actionStatement, _actionCondition], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); + (_memPointsActions select _memPointIndex) pushBack _action; + +}; + +[_memPoints, _memPointsActions] From 5147f9f584d7400b07f6a71aa39ecdb4dcfcd25e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 3 May 2015 00:33:20 -0500 Subject: [PATCH 0026/1101] Ladder Actions --- .../fnc_userActions_addHouseActions.sqf | 14 ++-- .../fnc_userActions_getHouseActions.sqf | 77 +++++++++++++++---- 2 files changed, 71 insertions(+), 20 deletions(-) diff --git a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf index c53c5caa34..363e71e8d1 100644 --- a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf @@ -40,12 +40,14 @@ systemChat format ["starting %1", diag_tickTime]; //If player moved >5 meters from last pos, then rescan if (((getPosASL ace_player) distance _setPosition) < 5) exitWith {}; - //Make the common case fast (looking at a door): + //Make the common case fast (looking at a door): if ((!isNull cursorTarget) && {cursorTarget isKindOf "Static"} && {!(cursorTarget in _housesScaned)}) then { - _houseBeingScaned = cursorTarget; _housesScaned pushBack _houseBeingScaned; + if ((isClass (_configPath >> "UserActions")) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "ladders"))) > 0}) then { + _houseBeingScaned = cursorTarget; + }; }; - + if (isNull _houseBeingScaned) then { _houseWasScaned = false; _nearBuidlings = nearestObjects [ace_player, ["Static"], 30]; @@ -56,7 +58,7 @@ systemChat format ["starting %1", diag_tickTime]; _housesScaned pushBack _x; if ((typeOf _theHouse) != "") then { _configPath = (configFile >> "CfgVehicles" >> (typeOf _theHouse)); - if (isClass (_configPath >> "UserActions")) then { + if ((isClass (_configPath >> "UserActions")) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "ladders"))) > 0}) then { _args set [3, _theHouse]; }; }; @@ -85,9 +87,9 @@ systemChat format ["starting %1", diag_tickTime]; if (surfaceIsWater _helperPos) then { _helperObject setPosAslw _helperPos; } else { - _helperObject setPos _helperPos; + _helperObject setPosAtl _helperPos; }; - _helperObject hideObject true; + // _helperObject hideObject true; TRACE_3("Making New Helper",_helperObject,_x,_houseBeingScaned); { [_helperObject, 0, [], _x] call EFUNC(interact_menu,addActionToObject); diff --git a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf index 4b9977d590..093d50751f 100644 --- a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf @@ -11,7 +11,7 @@ * * Public: Yes */ - #include "script_component.hpp" +#include "script_component.hpp" PARAMS_1(_typeOfBuilding); @@ -19,21 +19,35 @@ PARAMS_1(_typeOfBuilding); _memPoints = []; _memPointsActions = []; -_configPath = configFile >> "CfgVehicles" >> _typeOfBuilding >> "UserActions"; +//Get the offset for a memory point: +_fnc_getMemPointOffset = { + PARAMS_1(_memoryPoint); + _memPointIndex = _memPoints find _memoryPoint; + _actionOffset = [0,0,0]; + if (_memPointIndex == -1) then { + _memPoints pushBack _memoryPoint; + _memPointsActions pushBack []; + } else { + _actionOffset set [2, 0.05 * (count (_memPointsActions select _memPointIndex))]; + }; + _actionOffset +}; -_fncStatement = { +// Add UserActions for the building: +_fnc_userAction_Statement = { PARAMS_3(_target,_player,_variable); EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition); this = _target getVariable [QGVAR(building), objNull]; call _actionStatement; }; -_fncCondition = { +_fnc_userAction_Condition = { PARAMS_3(_target,_player,_variable); EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition); this = _target getVariable [QGVAR(building), objNull]; call _actionCondition; }; +_configPath = configFile >> "CfgVehicles" >> _typeOfBuilding >> "UserActions"; for "_index" from 0 to ((count _configPath) - 1) do { _actionPath = _configPath select _index; @@ -72,19 +86,54 @@ for "_index" from 0 to ((count _configPath) - 1) do { }; }; + _actionOffset = [_actionPosition] call _fnc_getMemPointOffset; _memPointIndex = _memPoints find _actionPosition; - _actionOffset = [0,0,0]; - if (_memPointIndex == -1) then { - _memPointIndex = count _memPoints; - _memPoints pushBack _actionPosition; - _memPointsActions pushBack []; - } else { - _actionOffset set [2, 0.05 * (count (_memPointsActions select _memPointIndex))]; - }; - _action = [(configName _actionPath), _actionDisplayName, _iconImage, _fncStatement, _fncCondition, {}, [_actionStatement, _actionCondition], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); + _action = [(configName _actionPath), _actionDisplayName, _iconImage, _fnc_userAction_Statement, _fnc_userAction_Condition, {}, [_actionStatement, _actionCondition], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); (_memPointsActions select _memPointIndex) pushBack _action; - }; +// Add Ladder Actions for the building: +_fnc_ladder_ladderUp = { + PARAMS_3(_target,_player,_variable); + EXPLODE_1_PVT(_variable,_ladderIndex); + _building = _target getVariable [QGVAR(building), objNull]; + ACE_player action ["LadderUp", _building, _ladderIndex, 0]; +}; +_fnc_ladder_ladderDown = { + PARAMS_3(_target,_player,_variable); + EXPLODE_1_PVT(_variable,_ladderIndex); + _building = _target getVariable [QGVAR(building), objNull]; + ACE_player action ["LadderUp", _building, (_variable select 0), 1]; +}; + +_ladders = getArray (configFile >> "CfgVehicles" >> _typeOfBuilding >> "ladders"); +{ + + + EXPLODE_2_PVT(_x,_ladderBottomMemPoint,_ladderTopMemPoint); + + _actionMaxDistance = 2; + + _actionDisplayName = "Climb Ladder Up"; + _iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderup_ca.paa"; + //Ladder Up Action: + _actionOffset = [_ladderBottomMemPoint] call _fnc_getMemPointOffset; + _actionOffset = _actionOffset vectorAdd [0,0,1]; + _memPointIndex = _memPoints find _ladderBottomMemPoint; + _action = [format ["LadderUp_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderUp, {true}, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); + (_memPointsActions select _memPointIndex) pushBack _action; + + _actionDisplayName = "Climb Ladder Down"; + _iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderdown_ca.paa"; + //Ladder Down Action: + _actionOffset = [_ladderTopMemPoint] call _fnc_getMemPointOffset; + _actionOffset = _actionOffset vectorAdd [0,0,1]; + _memPointIndex = _memPoints find _ladderTopMemPoint; + _action = [format ["LadderDown_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderDown, {true}, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); + (_memPointsActions select _memPointIndex) pushBack _action; + +} forEach _ladders; + + [_memPoints, _memPointsActions] From 5c556647abd03a6318fcd354f5ed3f36d4e0acad Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 3 May 2015 02:06:49 -0500 Subject: [PATCH 0027/1101] Some Cleanup --- .../fnc_userActions_addHouseActions.sqf | 22 +++++++--------- .../fnc_userActions_getHouseActions.sqf | 26 ++++++++++--------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf index 363e71e8d1..f02f333cb5 100644 --- a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf @@ -26,7 +26,7 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; systemChat format ["starting %1", diag_tickTime]; [{ - private ["_fncStatement", "_player", "_fncCondition", "_variable", "_theHouse", "_statement", "_condition", "_configPath", "_displayName", "_displayNameDefault", "_iconImage", "_position", "_maxDistance", "_helperObject", "_actionOffset", "_memPoint", "_object", "_count", "_helperPos", "_action"]; + private["_helperObject", "_helperPos", "_houseWasScaned", "_nearBuidlings", "_theHouse"]; PARAMS_2(_args,_pfID); EXPLODE_4_PVT(_args,_setPosition,_addedHelpers,_housesScaned,_houseBeingScaned); @@ -40,10 +40,10 @@ systemChat format ["starting %1", diag_tickTime]; //If player moved >5 meters from last pos, then rescan if (((getPosASL ace_player) distance _setPosition) < 5) exitWith {}; - //Make the common case fast (looking at a door): + //Make the common case fast (cursorTarget is looking at a door): if ((!isNull cursorTarget) && {cursorTarget isKindOf "Static"} && {!(cursorTarget in _housesScaned)}) then { - _housesScaned pushBack _houseBeingScaned; - if ((isClass (_configPath >> "UserActions")) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "ladders"))) > 0}) then { + _housesScaned pushBack cursorTarget; + if (((count (configFile >> "CfgVehicles" >> (typeOf cursorTarget) >> "UserActions")) > 0) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf cursorTarget) >> "ladders"))) > 0}) then { _houseBeingScaned = cursorTarget; }; }; @@ -57,8 +57,7 @@ systemChat format ["starting %1", diag_tickTime]; _houseWasScaned = true; _housesScaned pushBack _x; if ((typeOf _theHouse) != "") then { - _configPath = (configFile >> "CfgVehicles" >> (typeOf _theHouse)); - if ((isClass (_configPath >> "UserActions")) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "ladders"))) > 0}) then { + if (((count (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "UserActions")) > 0) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "ladders"))) > 0}) then { _args set [3, _theHouse]; }; }; @@ -68,7 +67,7 @@ systemChat format ["starting %1", diag_tickTime]; //If we finished scanning everything, update position if (!_houseWasScaned) then { - systemChat format ["Pos Updated (stable): %1", diag_tickTime]; + systemChat format ["Pos Updated (stable): %1 [count %2]", diag_tickTime, (count _addedHelpers)]; _args set [0, (getPosASL ace_player)]; }; } else { @@ -84,12 +83,9 @@ systemChat format ["starting %1", diag_tickTime]; //ASL/ATL bullshit (note: attachTo doesn't work on buildings) _helperPos = _houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x); - if (surfaceIsWater _helperPos) then { - _helperObject setPosAslw _helperPos; - } else { - _helperObject setPosAtl _helperPos; - }; - // _helperObject hideObject true; + _helperObject setPosASL (_helperPos call EFUNC(common,positionToASL)); + + _helperObject hideObject true; TRACE_3("Making New Helper",_helperObject,_x,_houseBeingScaned); { [_helperObject, 0, [], _x] call EFUNC(interact_menu,addActionToObject); diff --git a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf index 093d50751f..2915b15e50 100644 --- a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf @@ -1,7 +1,6 @@ /* * Author: PabstMirror - * Scans for nearby "Static" objects (buildings) and adds the UserActions to them. - * Called when interact_menu starts rendering (from "interact_keyDown" event) + * Scans the buidling type for UserActions and Ladder mount points. * * Arguments: * 0: Building Classname @@ -13,9 +12,10 @@ */ #include "script_component.hpp" - PARAMS_1(_typeOfBuilding); +private["_action", "_actionDisplayName", "_actionDisplayNameDefault", "_actionMaxDistance", "_actionOffset", "_actionPath", "_actionPosition", "_building", "_configPath", "_endIndex", "_iconImage", "_index", "_ladders", "_memPointIndex", "_memPoints", "_memPointsActions", "_startIndex"]; + _memPoints = []; _memPointsActions = []; @@ -98,39 +98,41 @@ _fnc_ladder_ladderUp = { PARAMS_3(_target,_player,_variable); EXPLODE_1_PVT(_variable,_ladderIndex); _building = _target getVariable [QGVAR(building), objNull]; - ACE_player action ["LadderUp", _building, _ladderIndex, 0]; + _player action ["LadderUp", _building, _ladderIndex, 0]; }; _fnc_ladder_ladderDown = { PARAMS_3(_target,_player,_variable); EXPLODE_1_PVT(_variable,_ladderIndex); _building = _target getVariable [QGVAR(building), objNull]; - ACE_player action ["LadderUp", _building, (_variable select 0), 1]; + _player action ["LadderUp", _building, (_variable select 0), 1]; +}; + +_fnc_ladder_conditional = { //Don't show actions if on a ladder + ((getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _player) >> "onLadder")) == 0) }; _ladders = getArray (configFile >> "CfgVehicles" >> _typeOfBuilding >> "ladders"); { - - EXPLODE_2_PVT(_x,_ladderBottomMemPoint,_ladderTopMemPoint); _actionMaxDistance = 2; - _actionDisplayName = "Climb Ladder Up"; + _actionDisplayName = localize "str_action_ladderup"; _iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderup_ca.paa"; //Ladder Up Action: _actionOffset = [_ladderBottomMemPoint] call _fnc_getMemPointOffset; _actionOffset = _actionOffset vectorAdd [0,0,1]; _memPointIndex = _memPoints find _ladderBottomMemPoint; - _action = [format ["LadderUp_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderUp, {true}, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); + _action = [format ["LadderUp_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderUp, _fnc_ladder_conditional, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); (_memPointsActions select _memPointIndex) pushBack _action; - _actionDisplayName = "Climb Ladder Down"; + _actionDisplayName = localize "str_action_ladderdown"; _iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderdown_ca.paa"; //Ladder Down Action: _actionOffset = [_ladderTopMemPoint] call _fnc_getMemPointOffset; - _actionOffset = _actionOffset vectorAdd [0,0,1]; + _actionOffset = _actionOffset vectorAdd [0,0,0.25]; _memPointIndex = _memPoints find _ladderTopMemPoint; - _action = [format ["LadderDown_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderDown, {true}, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); + _action = [format ["LadderDown_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderDown, _fnc_ladder_conditional, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); (_memPointsActions select _memPointIndex) pushBack _action; } forEach _ladders; From 1f5e47b7c193741a6eb92c68821ce566e69547bf Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 3 May 2015 07:21:27 -0700 Subject: [PATCH 0028/1101] PyFormat.Info love --- tools/make.py | 86 +++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/tools/make.py b/tools/make.py index 462d44b536..c6e0c2b26c 100644 --- a/tools/make.py +++ b/tools/make.py @@ -280,7 +280,7 @@ def color(color): def print_error(msg): color("red") - print ("ERROR: " + msg) + print ("ERROR: {}".format(msg)) color("reset") def print_green(msg): @@ -311,12 +311,12 @@ def copy_important_files(source_dir,destination_dir): #copy importantFiles try: - print_blue("\nSearching for important files in " + source_dir) - print("Source_dir: " + source_dir) - print("Destination_dir: " + destination_dir) + print_blue("\nSearching for important files in {}".format(source_dir)) + print("Source_dir: {}".format(source_dir)) + print("Destination_dir: {}".format(destination_dir)) for file in importantFiles: - print_green("Copying file => " + os.path.join(source_dir,file)) + print_green("Copying file => {}".format(os.path.join(source_dir,file))) shutil.copyfile(os.path.join(source_dir,file),os.path.join(destination_dir,file)) except: print_error("COPYING IMPORTANT FILES.") @@ -325,14 +325,14 @@ def copy_important_files(source_dir,destination_dir): #copy all extension dlls try: os.chdir(os.path.join(source_dir)) - print_blue("\nSearching for DLLs in " + os.getcwd()) + print_blue("\nSearching for DLLs in {}".format(os.getcwd())) filenames = glob.glob("*.dll") if not filenames: print ("Empty SET") for dll in filenames: - print_green("Copying dll => " + os.path.join(source_dir,dll)) + print_green("Copying dll => {}".format(os.path.join(source_dir,dll))) if os.path.isfile(dll): shutil.copyfile(os.path.join(source_dir,dll),os.path.join(destination_dir,dll)) except: @@ -353,17 +353,17 @@ def copy_optionals_for_building(mod,pbos): files = glob.glob(os.path.join(release_dir, "@ace","optionals","*.pbo")) for file in files: file_name = os.path.basename(file) - #print ("Adding the following file: " + file_name) + #print ("Adding the following file: {}".format(file_name)) pbos.append(file_name) pbo_path = os.path.join(release_dir, "@ace","optionals",file_name) sigFile_name = file_name +"."+ key_name + ".bisign" sig_path = os.path.join(release_dir, "@ace","optionals",sigFile_name) if (os.path.isfile(pbo_path)): - print("Moving " + pbo_path + " for processing.") + print("Moving {} for processing.".format(pbo_path)) shutil.move(pbo_path, os.path.join(release_dir,"@ace","addons",file_name)) if (os.path.isfile(sig_path)): - #print("Moving " + sig_path + " for processing.") + #print("Moving {} for processing.".format(sig_path)) shutil.move(sig_path, os.path.join(release_dir,"@ace","addons",sigFile_name)) except: print_error("Error in moving") @@ -385,7 +385,7 @@ def copy_optionals_for_building(mod,pbos): else: destination = os.path.join(module_root,dir_name) - print("Temporarily copying " + os.path.join(optionals_root,dir_name) + " => " + destination + " for building.") + print("Temporarily copying {} => {} for building.".format(os.path.join(optionals_root,dir_name),destination)) if (os.path.exists(destination)): shutil.rmtree(destination, True) shutil.copytree(os.path.join(optionals_root,dir_name), destination) @@ -406,7 +406,7 @@ def cleanup_optionals(mod): else: destination = os.path.join(module_root,dir_name) - print("Cleaning " + destination) + print("Cleaning {}".format(destination)) try: file_name = "ace_{}.pbo".format(dir_name) @@ -418,10 +418,10 @@ def cleanup_optionals(mod): dst_sig_path = os.path.join(release_dir, "@ace","optionals",sigFile_name) if (os.path.isfile(src_file_path)): - #print("Preserving " + file_name) + #print("Preserving {}".format(file_name)) os.renames(src_file_path,dst_file_path) if (os.path.isfile(src_sig_path)): - #print("Preserving " + sigFile_name) + #print("Preserving {}".format(sigFile_name)) os.renames(src_sig_path,dst_sig_path) except FileExistsError: print_error(file_name + " already exists") @@ -434,7 +434,7 @@ def cleanup_optionals(mod): def purge(dir, pattern, friendlyPattern="files"): - print_green("Deleting " + friendlyPattern + " files from directory: " + dir) + print_green("Deleting {} files from directory: {}".format(friendlyPattern,dir)) for f in os.listdir(dir): if re.search(pattern, f): os.remove(os.path.join(dir, f)) @@ -443,7 +443,7 @@ def purge(dir, pattern, friendlyPattern="files"): def build_signature_file(file_name): global key global dssignfile - print("Signing with " + key + ".") + print("Signing with {}.".format(key)) ret = subprocess.call([dssignfile, key, file_name]) if ret == 0: return True @@ -461,7 +461,7 @@ def check_for_obsolete_pbos(addonspath, file): def main(argv): """Build an Arma addon suite in a directory from rules in a make.cfg file.""" - print_blue(("\nmake.py for Arma, modified for Advanced Combat Environment v" + __version__)) + print_blue("\nmake.py for Arma, modified for Advanced Combat Environment v{}".format(__version__)) global work_drive global module_root @@ -567,7 +567,7 @@ See the make.cfg file for additional build options. else: check_external = False - print_yellow("\nCheck external references is set to " + str(check_external)) + print_yellow("\nCheck external references is set to {}".format(str(check_external))) # Get the directory the make script is in. make_root = os.path.dirname(os.path.realpath(__file__)) @@ -632,21 +632,21 @@ See the make.cfg file for additional build options. module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir)) module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons")) optionals_root = os.path.join(module_root_parent, "optionals") - print_green ("module_root: " + module_root) + print_green ("module_root: {}".format(module_root)) if (os.path.isdir(module_root)): os.chdir(module_root) else: - print_error ("Directory " + module_root + " does not exist.") + print_error ("Directory {} does not exist.".format(module_root)) sys.exit() if (os.path.isdir(optionals_root)): - print_green ("optionals_root: " + optionals_root) + print_green ("optionals_root: {}".format(optionals_root)) else: - print_error ("Directory " + optionals_root + " does not exist.") + print_error ("Directory {} does not exist.".format(optionals_root)) sys.exit() - print_green ("release_dir: " + release_dir) + print_green ("release_dir: {}".format(release_dir)) except: raise @@ -739,7 +739,7 @@ See the make.cfg file for additional build options. ret = subprocess.call([dscreatekey, key_name]) # Created in make_root os.chdir(curDir) if ret == 0: - print_green("Created: " + os.path.join(private_key_path, key_name + ".biprivatekey")) + print_green("Created: {}".format(os.path.join(private_key_path, key_name + ".biprivatekey"))) print("Removing any old signature keys...") purge(os.path.join(module_root, release_dir, project, "addons"), "^.*\.bisign$","*.bisign") purge(os.path.join(module_root, release_dir, project, "optionals"), "^.*\.bisign$","*.bisign") @@ -762,7 +762,7 @@ See the make.cfg file for additional build options. raise else: - print_green("\nNOTE: Using key " + os.path.join(private_key_path, key_name + ".biprivatekey")) + print_green("\nNOTE: Using key {}".format(os.path.join(private_key_path, key_name + ".biprivatekey"))) key = os.path.join(private_key_path, key_name + ".biprivatekey") @@ -773,13 +773,13 @@ See the make.cfg file for additional build options. if (file.endswith(".pbo") and os.path.isfile(os.path.join(obsolete_check_path,file))): if check_for_obsolete_pbos(module_root, file): fileName = os.path.splitext(file)[0] - print_yellow("Removing obsolete file => " + file) + print_yellow("Removing obsolete file => {}".format(file)) purge(obsolete_check_path,fileName+"\..",fileName+".*") # For each module, prep files and then build. print_blue("\nBuilding...") for module in modules: - print_green("\nMaking " + module + "-"*max(1, (60-len(module)))) + print_green("\nMaking {}".format(module + "-"*max(1, (60-len(module))))) missing = False sigMissing = False @@ -811,7 +811,7 @@ See the make.cfg file for additional build options. print("Module has not changed.") if sigMissing: if key: - print("Missing Signature key " + sigFile) + print("Missing Signature key {}".format(sigFile)) build_signature_file(os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")) # Skip everything else continue @@ -833,7 +833,7 @@ See the make.cfg file for additional build options. print("Resuming build...") continue #else: - #print("WARNING: Module is stored on work drive (" + work_drive + ").") + #print("WARNING: Module is stored on work drive ({}).".format(work_drive)) try: # Remove the old pbo, key, and log @@ -855,8 +855,8 @@ See the make.cfg file for additional build options. continue # Build the module into a pbo - print_blue("Building: " + os.path.join(work_drive, prefix, module)) - print_blue("Destination: " + os.path.join(module_root, release_dir, project, "addons")) + print_blue("Building: {}".format(os.path.join(work_drive, prefix, module))) + print_blue("Destination: {}".format(os.path.join(module_root, release_dir, project, "addons"))) # Make destination folder (if needed) try: @@ -876,14 +876,14 @@ See the make.cfg file for additional build options. cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")] ret = subprocess.call(cmd) if ret != 0: - print_error("CfgConvert -bin return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.") + print_error("CfgConvert -bin return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")] ret = subprocess.call(cmd) if ret != 0: - print_error("CfgConvert -txt return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.") + print_error("CfgConvert -txt return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) @@ -930,7 +930,7 @@ See the make.cfg file for additional build options. color("reset") if ret == 0: - print_green("pboProject return code == " + str(ret)) + print_green("pboProject return code == {}".format(str(ret))) # Prettyprefix rename the PBO if requested. if pbo_name_prefix: try: @@ -940,7 +940,7 @@ See the make.cfg file for additional build options. print_error("Could not rename built PBO with prefix.") # Sign result if key: - print("Signing with " + key + ".") + print("Signing with {}.".format(key)) if pbo_name_prefix: ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) else: @@ -952,13 +952,13 @@ See the make.cfg file for additional build options. build_successful = True if not build_successful: - print_error("pboProject return code == " + str(ret)) + print_error("pboProject return code == {}".format(str(ret))) print_error("Module not successfully built/signed.") print ("Resuming build...") continue #PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp - #print_green("\Pabst (restoring): " + os.path.join(work_drive, prefix, module, "config.cpp")) + #print_green("\Pabst (restoring): {}".format(os.path.join(work_drive, prefix, module, "config.cpp"))) os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) os.remove(os.path.join(work_drive, prefix, module, "config.bin")) os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) @@ -998,10 +998,10 @@ See the make.cfg file for additional build options. else: previousDirectory = os.getcwd() os.chdir(arma3tools_path) - print_error("Current directory - " + os.getcwd()) + print_error("Current directory - {}".format(os.getcwd())) ret = subprocess.call(cmd) os.chdir(previousDirectory) - print_error("Current directory - " + os.getcwd()) + print_error("Current directory - {}".format(os.getcwd())) color("reset") print_green("completed") # Prettyprefix rename the PBO if requested. @@ -1015,7 +1015,7 @@ See the make.cfg file for additional build options. if ret == 0: # Sign result if key: - print("Signing with " + key + ".") + print("Signing with {}.".format(key)) if pbo_name_prefix: ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) else: @@ -1040,7 +1040,7 @@ See the make.cfg file for additional build options. continue else: - print_error("Unknown build_tool " + build_tool + "!") + print_error("Unknown build_tool {}!".format(build_tool)) # Update the hash for a successfully built module if build_successful: @@ -1065,7 +1065,7 @@ See the make.cfg file for additional build options. # Make release if make_release: - print_blue("\nMaking release: " + project + "-" + release_version + ".zip") + print_blue("\nMaking release: {}-{}.zip".format(project,release_version)) try: # Delete all log files @@ -1101,7 +1101,7 @@ See the make.cfg file for additional build options. shutil.copytree(os.path.join(module_root, release_dir, project), os.path.join(a3_path, project)) except: print_error("Could not copy files. Is Arma 3 running?") - + print_green("\nDone.") From bdc967d3a90237661960fb38e7e0c289757118c2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 3 May 2015 13:44:02 -0500 Subject: [PATCH 0029/1101] Extension to parse text for image path --- ace_parse_imagepath.dll | Bin 0 -> 79872 bytes .../fnc_userActions_getHouseActions.sqf | 8 ++- extensions/CMakeLists.txt | 1 + extensions/parse_imagepath/CMakeLists.txt | 11 ++++ .../parse_imagepath/ace_parse_imagepath.cpp | 52 ++++++++++++++++++ 5 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 ace_parse_imagepath.dll create mode 100644 extensions/parse_imagepath/CMakeLists.txt create mode 100644 extensions/parse_imagepath/ace_parse_imagepath.cpp diff --git a/ace_parse_imagepath.dll b/ace_parse_imagepath.dll new file mode 100644 index 0000000000000000000000000000000000000000..22bf816f3bb990ca0a6a6cc053d1df94b1ea762b GIT binary patch literal 79872 zcmeFaeSB2awKskyGm{+1gc%@#fKh@30fQJFP{M$Qmq~&WoDi8|iV&De+o`nGd+oj2D;K?`t-YnU7SURr5KICh??n{UC}=lMssUpXG;*Hr+ULw9i1v4% z=kt3$pXZN@=A3=@>)LCtz4lsbuf3<_2b(3UBuO^>>AEEC#GC#Vi040kxGa)1Xw)l% zq!$OgHF~FI-dm$@uef`4c4gK5KdQR(-t4>XyzjpImFyp`$gWcF%f9=*>^ZlUW#4=M z@)eWP(gx<3Rj>Z+v+XxNUUMq`rwx7J)J^!-hORzUB;Hl0vhl8cTl*+Syz4$1C*JiR zU5)prmA9U{9`73;uRXO6@8QSlKe|D@Ys~k?Q}lh~qw#j(@1Xd0iExr6B^$|!w^Rcp5pwa*Diz=Z zg{WNOZG0Atwn#rf?9+Hpr{rZ8slqHrpNW5!7HN?)@%8Okbd4%wWk?%Cie3iFIhZUG-f`+J-BfFLl-K zm!y=M*id$x&H0kWR~kwR@BwHWdCFPy(j`r(TvyYXSJqXRt~&I}EWI+54@X7X?)3WT z2HE*iG>z&IS^Z3v^)*@gnoNEpWm%btzbq*jG-_gAhx@SqwSq&Et3Il@*g@72xy90u zG^;MEp3gnRO615ai*~0?((ZIf;p@UPIx)+|Zb={GMU=}k%ca^q zx1=k!>!VAWwp#=`wRYFDKObpvv4sw{mvCEqrfr19Rl5g0Ol3)7Zzr2&3wwLmELq#- z2$yuQlB}?|mlfJd35&X#8Mfd9@L}|vF9EIT5|G+5(;;wFinyfk%*=?l!`Cu1i)NxZ zcrV^W~KQScURw<9*FURP`^Ih@iWxG%DVi(F_m zT$KJDO{KEra%yYIE}K+N?NK1nBH9b-6`S9XT+6orM#-nOJIeflEw((1%l(Eg;_Y0% zmEyxII@sB;iV>1ok9NSR=@-`6SWj#mTbjP}x4-$#Z@T}+-aK^X(5IfgYliN;pzC^M z`iR^{&+#?(*Tq+nrN!GTT44M6CkU|C*aWJrq&@7F3sAqW+1s1M-=xO8eCK}-m0V2> z4OSxyXG<_*y#9o8nLrycNB<3V zhBp`u4gz7)D8yT72DSyA zQi~`)C=juw`WEo;L@~PYVosLaY@3Q=$S$C3rq2Yh70bae`R)`fu_E*eh1OHtW`t-w z1b*0A5Kn;3PuI@7s!Wpb9Ix^kpTj_1$1ty~yF5*6uA{hN;8-k~?aw`4=I8$mil)Y8 za194*He+iOvEY^t;AU+#;bnx0m!I|OI(oHCAUhWXOvpGF@6|=f0KFxUL17e24V3x# z#@v5^3Ch?H6SCRse@VWGNQfRwTv+;SZm>@9S#TSNcE(mUe5G^L9E?ViCs}oAyKGvs z4biJV*UtAUQyP+{C9C7K^WP{}H_Wn3E3~L1weuI0%Nu4TO)E@N)3o!t;%b;>omOa7 zWzNW7dvgjXoX% zyr6hOF3&3fmFLpqDte5jM;0Fah#vhRmRkajxdF6ZwSm}w3mDI?wPV8b`w^Or@B`jw z;IX2mqBxd_5_T8 zuM{AG=3L>D-ue^jAWx}l?Etn*Fcyd8XAigno@1*+x#v9ZuU)>A)|K2QYlrrrm^uR@ zS%a~B&I1Dd&etS>lR656)PrRJL@`Ck8FGMM1=6Fas4_73gIld%M9M9(R_5*1)`?oA z+#c3q@-l~1zEo?~&E{!7fd9YUpZ`xZnSa>Zft8?d3Ba-hx^D6A1BjBz%*{0o%Z`Y= zWT6YIt>Nl}@d*}^DoC6GkHJ7zVLpUxh?+xD2jUfa_Yn&CZuBU!NC(4o*1eAit;gbg zoY)38>8hg`hqlytb?;>)qb2%+L) zdN1{3*hzL&F&JV=Ej7Vl`_1v7<>%aas+Xh^u<%3;7;mk8a$JF=?-O-p`%x|nnSC&=Wj)DQsp}+yxL|`So zfcpik5k|8$H-S)kgz)3-1RAAg?`a9FXHN`75Gl2++}vQ9DdgF`rT$3CX};tu47>L< zMqr~AIv9G zXlqH{jBhPl(w1S>CTtN8V19?kJX&OU}^7cf$Js=57#2+turKJ7PCN1!B zXS@($&_+VB3Dx7Ela}P;eNgo!J^TGhL6NlYyGq?8l1_hD(rw>Pip;dNSg4Oae&}lS z>f2rS@mCPt<&`Z#CB@I52L}6f95Q93q?7*%bGoAPGK&jRrH`-7HkM-}k+gwav|7;? zPcOVA{SHdc$}-DeMd@rN$wu~_PXRQ7DK?5Kih9sI;)iI}m?bIvB}}B4omZheCEo}l zLb7snNz<7d5cZ^zw0llXI@fgW%t7QuMbJbvE-7w}Ta;{i45o+O9W99E@ipM@sLzL& zb4Qfggt{m5OzL&arB%Bma2%xgIII#@DM4JgI zsNw`3Ew-HIs}PY%5uX_m*}zSO3lIJq!V4j00>96wB)h^vsWPSJiBzK@%nIrH6MzLA z2BW6)If$q`;jEuWAOD4lp&H*LDOdRUuZ^xKL&1+iNx%cU0TTWoz@{J5?VF}UkBAoV zTkze~u;g#LdWzey#0Q%~j*4}Jkx$XPEtIW3x)DN2?6%^q^u@PgAU1hV_aP%mAY(f9 zYzm;)#tIC@0lW+Vh9Hm0{AB_t=-vZv|70U;5%CE5%lOYxi4h`O6lJqvwYNbqOfBO}s3xrPc1^dc#YUAs z>}yr5{s3f}fG?Hp*RL4(KT~oPYVRl7zW$4abW1D!TJuP0BuM;o3B3@%F#p{}T@Ot`j`?Gj4ue9|E@wRP!3h#(l z-ufJU*PjF`TI_8gZVSvNTPShs)A(w!Z^o10Zm~ZhQfa zGr_aM^XxtNZfuiS8mx{k`mV?V_V|Yw6_Oo*Ke5;EjJKZi98*R>k@MW*s2T{PiFKC4(^}=wc8&KOQ$H2LJ=+yK zzkCa^J^yRl!Je4U7PEN{Dwy$XZ-?^_gTQJ!u8%H-iDqdNKL)Y~=2LhXrXbkoRWl@M zyQK--@BnJ4iw40ooA?*wD6CqqM|i?a5l-P}5E=VBGV{@h;_u=UALtve6_u))f;0u` zmZbZL3q*)W7s8g41J{UWbFi1Jbl!FOv*DhGp_582s zHxO_&X4+Lo`}?SUM4_fwpdv~jy^N^t

93(?pdF?12NGl1cHogfxt2=P5WhOlZu znt&PW`RAX1oyr>#D1x}{7Q~hdyHv=|tstI#A-SR>3$3V_48-?#mi$1HR^|gR$)zsa zg2m8POO|jK?F*>4y_|{_XJ!5-46#d{30irX(sCPNbBTfz(ORNh-CdA_*cx@T$y&Bs zVxu7PGReKCb}DLy~r5ZSXo>qHc^s;F8!7*N0 zP(9W43iyc;eY{viYVGOTicX-VM-o;01Fz5jq~OnB`MU0DQPS$0l>yxcx6(X|tt2L- zXJmuDK(XS@^t;0+~i2;%!H!bjnoH5%KoAOWNI#kXtLPyRVN z#foj3Yzr6L_}}7RN%(5oS+@{bfOLZwmifUA|MpJ?H-rNH)&zG~MDVDJeIOOTFFb{# zPCgK=fWL?9AH#@;Bb(^?WF0-9siEhe*3+oFp*pttRSL7-2dPWhi`bzP7{vPrA zT?JlGKVJVdUd(F?*FS+kgaXeZ&>|op{>Tb?L%wkRW|6wh@8h)~GZX+UE#7Sz*mG&| zzCZ#|*!!ZMF&=2~Lt*Sb5%F##0bA5F@&v}^LX)vXK<371&>8`@l;+&g)P4N2=x952 zQkeOgw6PSHn#%mIJq1JZpXuTGVs&PK-GpU$06V~^qB;F-m_|HbRDBBdfwDeJS?O_c zRx%)7lvN*V!-7`fx&@|IeF{<~HYdjwz9+{O!C!7$-0BJfg5fp1g6nDzRCsgF2%VwB zu*IHh0y!m2l!jhkdX7d`8{1Aj(Au-g+$UxaxZDLA3Jv6zCk_5q0(80egfFK|?x^$M z{cH;52t=w+Yx|SJDdBQk_%=BlfW784ngB1UJ$v_kE9PQ0Pq|N7aZgxePsJj_rxdNY zPfcy@ekWuZxo1&Lqa`E-o&Vmy3fOf^dX(9yYHY{Nx^qS}*&-=pW-Loil9a3&mGsJ( z;Y+qk${C!(HSgtn5QH4A{ki$LwL z68D6CfSmuDbUGzXJCI~nkmQbbH-c|TN{P1L)?%mb(@JV|hms^&xn8_o*x}eO8(F}j z%q-iom7&`HY$F;R&5SNz>W-2f1(vRSdkrQREnwiVHJ4-B45bCw3(K$aQ0>&aR^QvE zuGZGMtm?hB>(aCBKOdnCL0~im1|V=H0_p-*oCO>3t*q1ryVN-1&kJY+X(NPGlMG^$ z+|j9C2Q>tK%5TPk)n#!hnXDj_VM9xCLIh-$G6e7l=8b-gAI6I)!<4&jIZJZaMA{nq z4%K$Dkh>_gDKxcWDs^KX$}?|fm;~|N5{w0Gb}#HNFcau&u@|z_#~;L03iELHqbKBA6cbw(_4L7+&Y%4HQ-43KxUR_DbMsVQ-YUrkZW6(b#w?Z{JTlG$Qc*#l69FGmzH(bd?SVnl`uvLxeY|d00;Ao@GCR-x{u>mttl0=?n--3`- z#-~DW!Tz4M;*H^ymVW1J>78Z>b&TXI^f-YuyUV6PqvoO6{b1zADl ziN^KJ0I$b51%p7rlG9Bg+sg9xX{!iJ6)A0bur;UnmaTY&` z{RrN9qp6NpXG>(iRgG*Gl1)yrXCoV-FQUYM>sH8kDi!#ZaEH{YBlK1_S zB|~(|$=&FSd(X^paW-qDnP@KMbI7no+q{|0-s3Pk=~C@RTaENBTInJC;$x?iU;`+! zIU^?!fW%gN6OE0t{z-gl8(darJvM%&+6~4S4MRZ8+cX4d-a6}lk7R8_mgKB|9wGiL zOtb)Ba@J|6f&Y{&wv{d(#v8y`SOMs}leEcINH!W%bEzS9Y`l>n@kR!iji>`f19elW z#+yY0S&}l7Po~NXu#wruCm^V+ZGLT8mc%Q;y@F(6fX>;*FVGiRKhI-W&d`HqVo4`> zYe^>rn0Sx>11Uz2pGGJS%y;y-nlf&5NX|#d$s$s6v@}w}OCfk?2l!Nw6I;kJjXevG zI<-?kNu-#>q;N@FEVSO9ilEid=*%2O*O`2V94U8akUug&uF-9Vujt9g9IZ&Ev2qL^A%9I4HL8vW{)O@{gi2p0(mBPFl$ zZxE_Tzk;;XSAG15gD5D6XTyjZ(y6{Oej^kfOnm^#pM&+3HVjHj$xK{(Gl;6jS@$)X zL#w}qLe7?CYU^Z4@sd_PnZ(`>{&U3VSIWwDwKtdCHoHxkPb4*R(b*@YH&W)Z%lI*5#BvV`V+(sddsjagsl>vc{R;pTJmwqC@~C5XrJ;YR&18Z9IFcB1;#SlK{YXTyJvE_RKQcQ47%Y zei)#$o7^Yr^$ia|6ktcfOL{R^iI~Yi3>O4!bTdd(9hiy`@Ia6rFi-2QFtn$IvR;*? zU+3dL76U*8Jpz;mG5`f*A|N+PK{DHTG?w&73*dw3qwR8q0qExzbzAw;h9)7L@R25L z5HQhMcUS(68^*HtS&^;c9+(u^9IH)Ot6znZCloqoq1NQ`+_?U|>!TnX@~?<>FA6?t z%hB5~_`)XyR%{D<0Fc&qtxIEbWtKjSIR;wyTN|Gadd-eNj30U zI3G)nJm|3gSf;gzsp0AGV} zEHj>Rf4`JF5H=TP{y`^}V#pUlUby@^(t2GLJp|E4q_|JO;Rh;G{T^rCAWXceLD^Yn zM}Ya{`opTD8=w$bpTmpE7|QxR>+D*y!+MTJuR6VM&x1K#DK2HymQIL~;3QbahO$2NCqq4CNr+gnd((WmA^pICs9(UyYn3uAlDv|N6l4-jc+_;|4()=zVF7rY=K)*wEo>&Jt0TOSAjT+3+WHQg zq>Mu?VV_)KMU)R&bfv?_r4i8j(@0*NfvyO7(V(+7v=V!c4+f}lB7qP^jj5kfMU^uD z%{h|a0L-c3iLM++5M3eh8FL5X3;z_526+_maBXsTVUqqCEsc7e#DM(DZ1u|8X(T!* zBWtH!MHD}TS;jPZTB-(i&CJGD->=YU*DTvgWo-TfHfP;a_{>+cob`_*5Yovt3Ve{i zfuY1?h^^0mz@d($8jR(`p8r6WIuNzph1zV&5~D3OU;DAkTIJ6Far&A`Y*rR<3c|>7 z?(pW&atsO1aJe!p!V9d}VM7xKLN!UQF zJE5Lt&57MZg-rdqT`4fPcO}WnNYF=@gbkLiB#V;PC5h-H#p>=VL?LS&nltmS!F2Bb z4?47?41g_Qx97<26AgFdIJ$RX3P{SZhJo5H%k^(6Rm4`VH)7RKHEydK5@269o|3H} z(9320Aa+?fSfDZ}UZQ|_(7DA;l=ovc(EaA?`h^P{tmn0}y88fpBWgdCES6dYYC|vT zA9H<78PRygg`fk$q*!ZtWR||TDKhIqIX%A-&t5zMc)-t;92c9Hlg`%X!1BWmS(`l< z*2tb7=fh8cO={<}oev)d%db6OgI=s2>U?D^>F5^c!#_dnnNuKmM3IJUSv}y3=cxZn z%bQq>yZP5xwIy{>UjgDLW?spu{Td~^TL?AI`e!KIY=p^%;(XUwDa_RWTkVO^Bu=Z=f+X^YNM}R^i|}-=UepIPM`N@M>ghFzZ6;H zIP-h6>Ym7&p2%Ek_dbSZ5bH%vxl@Bk)?uXxnU1p1%o`%hgHe;Zap$*BKQs!#S7Oll% zM5%vghXjrMCy1r-Owt$6YadzloF_%GoJc21Z>C2t{$!8j%EF&XBb%wR{^5o~%cdfW z83PyDL4GDhK7lbZAx&p+ShwcxZ79??73uSD(>}GR zUx*@Cpa?qzP?4^EX45{mee=chy#RSLK->H*9^3G@6My^g7jLtn(7LI}+7CAIeKA}{ z9wY9ezI31!H7(lj-<;b@2N65DEeq`IY7TGp#tgJmlb#^z_fXAwv(S0~J zeU`0#juMGx%!;%#+1-t8l<&RnMyMCMk^$5JLFCwpd1yqcF*52vpwm9HP*=$P_N3&s)^3fUO)u`>7q~s?m{uMWl3T zMTHg7Zzdt zS39tu4DDLam;Zvh$ka?TDqmc*d^TOU>khW5^>UK#PzMMfB zMQ+%qTEo`mVeu6kz~a?Ivk}S)kOvi(6eu#J-R5A2Sh;YV>sogM>~&gHwl-EkBNx>wBzqZ@7a9Wy`L|C4<2%oUtg21 zuW?YdF1V7CIc^m+E68XG_e$Dk3=iVtNi8nU3D39j%MlD$=8%zBSbw>L(p1?~nWGNk zI`n)tA4c;WB=fWMRh)y-m}&ELC<8IA9<)j7*_aGv6adHGV~|3`kq;?VX#^4lxl zC%-*6=l@846UA~OFQW8jdc2CiR{WjBUqUAOe@lLYi-2qMGCV5qw+?@g;V%K}|HyA7 z)cueAX6UC0dG!BKej{<9W+Mzg#mot*a~6Du6Q09m{z%YL#_t@0rKuwbP+(6>o@UjlXB1F0qE?3Iti4cfl&o!^2VG4_ zV(vFcSn|q|NGCSIDroPd)W?4bLIIH4jBF_S_BB5UR7lw{2uZKgcYvR670GbT zl*-)$0oKQlx4>_ro+|Q1>QB>)e?vtnzR$-~{;hTXA2$}(Y3YHj*BF3z%049KXGK0Vp49E3wHD?bwu>DI% zqw1oF$Cg2)C@EqqVp+8jTP-Zlu!a&J8v>}(w69LqX5;{m zl9F3NZ~n<@NcFqP05_6Np%}KG_A6xmtM>rYF{a|2sth|Fh?ZzTm81jhuCRlxt(~)9M6ZQY;fYEEkk3D##ho&)$3m@|4b#P#n$zJ^bJCNws=A z4e_+e%=b2o-S5#huh&8O!iyYyEwW;hjdCBuZUBD_$@};;)WiqFT*TkNcig9M0IW_3 zr|@<}#{Mq+B*?MvLCg{8vE)G^@$vY8n-|SHZb#+9O>794P?o=la>#NLThhW4jDL#E zMqZLL;jq|f9B$GY?ON0>PBUcUG()?2ngKF?{4_%h4nR1oB<8o6)x~1^Duewj&&Sun zoXncRP}H-S$R^pqa_4aFn3E&3w_(5&y9m=kB6mkE_(%4RpL_t+8kPp?%@e=@%b%>N8_Vc(Mzy*VT{s+`bS`Ua*_l z1{!R@&0Sb3X(MMO7SbRpr4t9&lG7aaTiT7X?kEOx0yHjo8az`}p|$N~3Pk9yq3&LrR?tB!k5z#WZDelw=h1<;{&As18>9DxWtogNedYoZOD_{{;sv8hAe^l|O7>usXym^F0$B2%uY zxSfjn=s_V+6>ay$%a4RDh|2dPWTQO7 z^r>g~j9P>&7!V}=I?XE3wL2Pj=?)DDe(~FKA}z7%jq|@obWPjAc<3aZ8YBqm6mzQf z0#%^40VQIEqMf?ivB5M48%*vF*zrCtd|{B@=Q(6RNd!&!iJSk~rI{xY3?WwxL#Dx0h_Q6`AB7R_W3!)A>!H z4@gx@L>_b_oU{`x5R6Dya%6rF{7)bSp-P!e&>zUsAIQ`n7|#cog=j7C2g(@ECb&Jb_&VP*=K|sN_3zzWQfo^vfBEskLNk7c#3(z;VK0 z+~i2n1ZP`H2W4fiYR(Kqc236^7L;|M2|Y~|{X7$9el=E3$0fu-#ZPVYQODLwl!^-@ zhWv^iEEKXnM;}0DJQKZGVhU}S;Qx9-8pZHJ=e9ip|2VcWegX64Ea2&4+~iBpPee5* z$F&zYzz$sQ$V;+ktfMa=QXFytp9 zqxF9T9St|=XwDyHJ{L_h3X~%ddx^j{J)BKKaz~frj0^tNK4>EtFw06EY=I-cRL1!~ zBEhDz(mz*XU5cfe0aW4$-ztY^+rq0H3rl^Af>_u>;c}A?Q_YnA#*h*t(#1kzahIJ`Y1qQD$Hl_WkoFe-(?NRvWgnh!nC}s_qoLn#nCe- z;lV(|rw4%sp){8BV^F+EYZRyhj$YmlO6257ZN`=MVG>SoL&d>@DQx>4z%htE*KiR{ ztRdi$V#fg5O9@=7(%o+@<*UsmXw92KA_g(iboUf$NgVKS9Wgm8*5=pvBn7To#-e|Gr4eO(5QXfc^It0jVD^w5=fC_R%WK1N?#hoP^9+!QX^sWH-`TN? zFK5AgBbo}3@6gXspTCT~gYEouV=Eo{fJ;rq_Lj509*MDW4awNK#hzV@1yZt-3kCjK zBd7W?dk6W{JGE0{*DIb4Ic~(6a3K=A7GqoA+*}(Jf1*f6XZzZSj=C!rBdtm{&)=-ve<7fFHF1Yp+H-QnS} z%-WCWYBYofA%tjzZ0^INR(F*8;&4YzDIcw(6VCdzz%}s*f?7}rP7Jeyxrek}R*XmE zr%9ehaR6r*6!e91VR&$4E;bv~E^)p(K~gUgN&N*?eHTg5a0@vRG8LqWIQft-v^cm3 zH-AB@OL^{YgH&fh|`}FW8nLmMo zjPx^$@DPxf_M?2vJ=(vLbDOoO71uCfPcmP1Ty~=S$e80w7WQ_@ zaStL*s|o(X9t=s5=W95}l=R|2!CQ;@y-oclTED7=og+3}97Y+$4wx0-h9~$2lW^^z zxxoNkshk<`seRiguOmvq3-Z>C*G$m7ns*_bqJ7~6}(B!S4o zn^6RZ`v$=jm!Gc;&>C?bQ2mm<31K^hJt%{7&}rs0l+kp%nhFvL$^~b>K`9(;b=I9F zlwv~(J1XE$g*I$5$gt3iTLh`C5IQmEz;rHrFOBU@=iFfNAoRfZ&T*f=0^}# z+_m{Xq4$-w`H$0kaBV(7imLaw6w0-zCbklRM<}oa0gVE;Bk(W^&_ zKQ}9TG0CXxPk5_WA|qOpVj~bhb5hKOfSAuI2s9u@Un8>vAxLwy;iqF8u); zy4yD@*f|Cyj*3bm)L-5O9I22I)FFHX5DA7L zmLqbz2!cm#hs=Rp)n2J)Mie9~IqQD`fUvjq@=km{N>?l)C!J=-XiR693m$qz`$(Mq z+$*GrCYJUp@_Jg84EH;Nd9uAn-ehl@-8oWm6sa*Bgtn-u6>SLf5u`a&qo{Lm#bi3f zl!FJCz%YZsis=+Fl_EaJ0zUsQ}kgRON zQB#4T2wg`fhf*h-_=z84Nsn^|ejAG6ST(S|9`e#Yaxl(AfK)x9F`EY&;dH`gPPaDJ zP8A0jKQRw57H6s_v~|j$HGkE1a@0iUCN3p?+O8%y;|kkJi1lcp1}$K=j`3GyAqK{- ze#$ER4Er&mrCN25L}P_4LO&FS)~&Di8*ymTTM6?RZ5);YM@cc{N&^nW(Ajx@&RB(( zG;N^~g<)bhUJ@MP$S}drfC=%EVZapTr)q}=9=qDl^9VO&b*AqjzL%-U)`NKPDtIot zA*}EhAb`X8@jShR<-wfyB-z0y_%Q2kNQq@mpP^W0;bM+p!nposq4jJ-GVFDyaoJo5 zcUnxMVLFacKB3$ThuGKxcA&p4zUJl`(7Q3ml^a7AAD1Y%VIRqZ-Mq)o_dq$oDhp_F zoU|9`Px6FYe=i>h&}h$0&oRkDTJR6zj5z^Pzgu?yokA;4MaBBpy-##5CO#0UML5N zv39GmI9EN4wFxp1WJu8*hLlMjJE59PQY3=JS*n?|&rDisBvlkIlU!na_(O=PxQjkp zX{7GKr#?jt+VvtxCHXi6gTbaVUxF$`ix+7HXd|vP3KsGdv5*_u>rW*_1R+MfcTRPUfBp#*;5_3>+2L1#o6?0)5b_sD@GZ{lj6IywZR=?J`l z01kEF6bMc^(_DnL2mbaYJ?_04j+K8moI57w(M1GFB*;)9F8&=S%r3a05=r#-9-1@Y+cvZ$}dc#qP z?uwFeQItSn7Dh~zg&R=0^W&A8+%YK17|IeXcj?n7f*F+8}@ z5+jRKfCD27Y#wi?`X%HNKAZ@>q&E<@@L8`zOR|DVh|>v^@#Tjm$8!+?yy4lhFai?R zD_l2PTrc~)p#ECuWUz!9q1aRv32|nHKlEg-qz@ zBfdamd?o7g^HbOb@bg(X#p36a!A_y7ka`YgRQ@+i&ZaHfCqp^eqx(CYjk0=~_l{6oB)07KOp-lRe+X=+ch|#AkLJ+%>MiiYx(5Fm9R9GZ%5}NcWc_M{rGPxVvIU47P&H0hDV1 zE!N^G*|X{N`(t87R&iM35#)x2P?+j{TpvkjP9|Fq%_5qD+J&~Yc~~Wf7sk^0D&)pW zo{bd%V@oPShQF`Y&Bi+aPArXIi;OK2yqq9ap*H>&@P^!SXc)hood3J*HPB0wl+jQn ze-jXC_D~8`$&jT22Vo0fL46j7@Ug@pbmg}fCP%2veRxrKm&fa<6FdEiMbis?}WNki-C3u)_jZuGp|G6*!ZOb#KU)R!k7YZrLZ^ za%_&D{}l`_5`eGwg2-CfqeaO3X8{PBQniLja zXv_jRf>uHt_vs-5x{}0OFI@llKw6~*{a}wBY9K^CWA23N5_XUN1?vM(Rh8Y#05|&4ot#-#l`4oCipAnoJDoko~QYyq?GbEz&nu{UR4~{g5nN6aq2|$ z`R4xhTqWu;$h{qh*yKow4web`O5?zrL)>=5!O0Tq3+}`DzI>Jc&3xzooB6V^*eBW* z*O%d_ZD@A5818y^x+Gd`JKX5x5VH{4S}>*f|)6XrjBgu?hAliH;-7;;=Qn--9I>+G|`6qkGkuTzj72 zQ3jUs*N}{;pk6th|CbTgEA#lT;=#%M>3DD||7kopo<9-~PUH{8g9W@Y9-PBhAb3#^ zW&@G^B5eF&L}|cr)v8pXd)pNgRyQI2b2TA`V6wPZD6{#=%f7 z0izONl<^ZdxJr5iKsQ^C#RKdEp&>L?{QhpNj@Lnk-D;x2xK*eeLbNL@nc8Y&`Y7>j_9N4wD}6RNEwc$s1FVVWHf55OC)c@A?x8IKcQN|wgcu(yUo zV!}MO#v4i35>?;6I`kLxqoFT`}E7}&~sNW>Gh;ep7?3TFo2yUeD^VRP` zJbnlehaVzGr0|~!-vXnNhaA8C?QdTvbmV^BV7qZsav{lCUq%=q@)bgCgDroPWhR}` z`BH3m39Qt%XG16yQnBz;6L!ooVX@2&C{|vt=Y((UEtZZ=5w43Y_Pz%@Ln0JkJR^~ zlrMlc%K1WY>AM9Imzjh~A4sGH^c~dOGOj^J(RLT02&8(-*_Wq+6rp&&#Ufu0d(-(+ zT?sX_&7usdnKx*JtD!Ef7j?&6+me(Fipi!J)V8T^5TPrUvgv6NnCUrC)ffwg{w?xP z6wlsVl)DSNEU3$R2q(7dPa~v7v$dWPYX^#&BQvvOL$$w9{D`%KBDO&_#UrvKGut*L z#gaCSWTL217ghZVv>wC!d*AQkvkjDrS;=$35lLAah-PW=TMKw;Q-;ox%q{lJw2`}0 ztPC8tA{%|?Uv&~c)!u}dt1FY3+WYb*8mKkJIPlT~J3yy44$2Gl0hSru27Wo8<|3hz zOabhR0Ixy$ptw()=uce2W#HsEJ@usTb3DE6J#5)_~>I%qXU* zr4E6;>>K`f5JfQ9Y^OL2_%c|@BI0|$-2oF9U2Mp$SQ1zdOQUA$AE#E8!TD?F;fTW8 zV#wJQ{91sBCRfo46IOc>jba|5n<>x~;u2*tB+3g0Gr=??aa;fvE-GdsFA8<&$#JF% znN^BCOZE~w4^qudFr(Z7pyF&byZ?;B_~Cd5f00(+<1nJBgZz9Xs4WP~`R{-`>=*!h zE#Z>W`A_Wx>vGn8iuz}2(L6-Wpb1y?N$uC9A3Ez=@m2dZ8Q7h5uOjSxsR^sg6PTkk zIe&u~94Nv?24dP$R2`xO4~Z0J;^LL--T_^~CIk1_6XDlrLe0)!!q=46RDXt&pDCjo ziY;&$9O>L~$hkv~B@}bN;mCYPC^@qERa8}uU(JXtNLm@TMCK;Z z#R{MM`FEHki?w^K_jVa;qUx*4~4rE_Flr#FelJsgF8+CL(Iy7ui z!l(&-98|P2e;R~Ewm0$se)q!y92md*vH#HdNct`GGa&iX)DM?NW+mb39l`zSER&w` z9H<8p8}1BHuz~sli3fo|fE^FyzJKUzGQcV}Da>STs>I~0?)q``pBQ_5-ejoQ76KE}m z4LNQtz%Zd}@Njz;WQikc88(u(|1WsA-4BHR_r2TVqDmk#z1~NVk>`6qw>G%CWYu%X zCIA2WwJlCiL?7ewS8Vb5bj-8z6<;~?(<~0cbQi6W8|ep&Rv)uWE=hEe;{L@ z&Ah+Oz2YgVP*g2kzij*-)Jm$K>H0-}Yo?b#-1p0@wfG;@`YhEdsupfxc0TMM)=GY1 zX07L*|9)7vQLUnC;WCyiZoo8QCGRef>$kwYqp#v$m=)vlnQw1ARBWe;MeV|!ES>)d z3w#{48U5VJ5~#SypUedPMzaMNQ!Z&?C$%7&p%6@2_I@pl!!=#xXF+!eUFzzWX!F}? z&^;lGKtPi)+h6GG>F=L2P>36gE`j49!O=<&3WYLxHI}}3Podx&Zi`PX|368xR9lO}v&wEBc8HrGS1{!_zRdYnMft+_g(qQ%m)XodOcY&nK@sn1>?P^vHNX#-#A9%m(YGS>q9hHO@90t$Hq~zl-~Tkv0y&qOWvE zo^`S)s%^-G9*^e*T(>%Zd`;{j*3w)!zLxGj7b;Oos1uq|EIIULEGg8r2)%xh#`?JS zHMU8>eFs3kAn?F@qu}>fj1~SOOEa~eB$a9`h)vLXtZEK|a_kCEl1>8#YVwrzE|h>OHct z>lv@2XIm!&P(33`!Knzw$)F!2qdinlwL`VR;|~W!yUW-WK+T}OO?8MWveqmM9}Rj? z#)&vm_beH5NOGzH4JZ;O~-=9=A)Lu0|r zS7l`kYBcUErOFacBJs++vicFpE!!^>1?z`eNX|u2+%!VD?up@|V z5geos1bOn_+3VQuv^;+lbla=y<7Ulq8OG^(BC z{bF#Xh!+~Bl`lc_*bt2y8o|+CrrP+l6G*@ZHN>wmKd5n@ZGKSOd?-G!N6^p?v_<8n z(8P+JgvR4Dv3r19?2e9JvX74UoWgEING|tuZ_HGtL<)84H2G%I)=dw(|b_6%Z49QQ9ZmFeFNjdU7@cc)FM5GdXRACDtj*tq1C!7O@eHL zfed?hV=TvN%VhlcizC({i2kB2Svv`AtmJq&;c;>uYOASkmDE+J^9Ii8E{95-5-T}r zt}Y8t24lGx6bubpaNaMs9Rj` z2_=VLRRE_I0U%vWJr6_zBpzv{g9zQn4ca5Rq6Gd|j82>$`%h$Zwz;Roi|;q}i9smZ zClJLK#hae#KZQyFg~##6ak49qE6{qbsX7~(`FE{n@LGE)ZPAjZNbMY;A~Y!IX{ECf zpbdavd*dYXo3QxBqK*xv(lE}K5qaSjKU(L*d9)!m8r{WsC-0mCHM>cRrZ@3H@u&hL z%GI>x4s z4b4ihHI&fZw)n}xWawdTz32>Sva~UR7$1L${Do*suYgr|Y8!2q4dXoJw)JCiE3a3^ z`VFlFm(|+*p#l0@_z%_5`c>VDKBOXB)ufsYxR-c5+h~hj7cb$~sSF?}3Q(y^vlNO9 z;)8$@=mss))qvp=gI!Dcnd^{2Fd34NTo7td6+bIxastJ4#Y3{W2{0VJ+ahchVrLB} z$V`?@TvPJx%$=V>i%)EP8X9MYSQJeraN;NcZY4@9K>J&kVPyOvEA|)E z6yYooOZGHZr?BR<L~(w?an^Nn2@s<_Z){D52U6`jXV#kj)>SLK*qke!1pfoQpgk zmNr4+c&!)&VYL<6mPYEkV4!jk%X_+5xy4*nkWV15qkkGo4$s!vYl+91eR1Z z8(Y#FDe1-8VDb`&REI@M{1lWREDUmoj!Ptq*JD;#J9G=%L=z(MQPcl}_^O%Whf$+= z{L~- zzJtp1XAmUS?GftVjBQf@{AKx1Q9lV*KWIqbK}lRe#$Yg%yeRU^XYmcWI%m#Je2KkWW zLB5U5Ru`LAQ`p*hSeIslfJcH|3xe0hB#0Ev^BF#g7rUA{2;MGrF#py2s0{{F8y`<4 z$zYm`mW(MtmLJ@ns!SKGOqs%_LX)9Wh1d9D@FL4RS(`o&@T0_1aSLux{is$K`>5{* z_+m_#VC)dN24SswM&8L~ z*zu`tBBI4|(t~r?bj*y7fM*$ifLO59WcrZe&@*<^5(j6?aexaK5sS%<%VD22HkDc; zD^3!vkwU?xC(&qJ{xwiOMB_MzP5=fWLJd|p&3T&E*KHdr0T$tFMb=Qbwfzc*l6c_TMOeP|M$}$2c zWHF(j!6XHiRl_w6cLVu+0bB%3i#Y!eth0t!{QJnz?RC+pDpPTT78SxkLdADJz6)>n zp3+jf3Og%NHWV*g{~XfKJcCCh{f53y-g0RtN0^p`^T2Iq?qI)dhZj;hhci1 z+ma$W*Fv46-x!@rcm}3Hw>@$AKY?HlD!H8c1)5f;`S6p%fHKFh)e48=NdZnrih}O0 zGI6jCzuOd9(Vn1{qdzlf#V{1bq5jpou=etyU0@Nt&dB6UEU`oyW#TFqUK3kktVJ z{+}Yk1&^>bV|j_Fm6#Fah;nd=+YkZFeB$SuV1y?@@&ug;j5}ZLLnDYg9!qpnSX2Id z3N?hQJ8?lAOv_l<7vlRDxww?>(D~5Ja`Gyj{8mLTnHJ^H4|4Y}cD`i04o3K@w3VKw zwK(XI?R@DVrZ;|XDVd^EDVih}=SxwoIZ3;>7e7a~5(~0@B@SKe!lp2UR<@)E$)gOLPjs$f8K({Je0E_2q=TGj(Dg;c$QkdsWE*QSy=V^e8v^BWtr+PnkFl z87XY@@ylWWV1ADtz5=&@hL;{iWJ}?3Ng6n?x$xw`nw9VMY+Cw0tQxq(y=Q3|9|A3i zT++quT!N4=Ze&ayTNe2xH3Cm=&lmVHU{jE5$-`lpbAJ9Vwnu{HWWx`oS4^eVYRkXq zIu2Dx*^)%smO7mO5Sw?Q0klzaY!5oo%y%P8lh`eULFg{0l3KK2E1C3)Vt=M(Erpj-&Bk&@9IzEK zF4^p&c~+aSxC4j!8=(g1Xl4?s}MrY$SSKAV#deAo|phYf;C5WSVA!Su*^Zx1mF!Zx(foPBtWuesm1~Bt8RZ z48|t;d5tmcU=cylD_EhUk*A{U5I?^OZTR@#$pezinjZ-7Q}}4Xm_vSsSrvWg^cZjx5fA_-Rh#c8USslcd`izkA|63dJh+ zBwAy*2NS<)`v#$^DX!*-^Tc1{g1^%W9Jx<&FTlr-q`(-)ClTlg3jw$`EgX~nidpLI zbnYmD*Z_W6JXWgt4ka7Q1g;jZA%y(ypA3Yc#wXsT4gfSLx72r`rYegJb+>4h52d(939_d<50F^L6l;j?wV0rZWXNSRg0%aSb+TH~@fBJaz}^ zSdhrt4x=D`oZMq~nKAo~m~@Xl-HdtFh{^QWGtHRa7%^EMdzKmVlo6Bdv1gkxj~FpI z9(#@%qZlz$J@%<)%nyy2=^p!ZGsb7c6nN|fX3R}S%p8w>ju|u2h$;5ii_MskM$9~q zeV!R3Q%qdRG#3H*ae3@QxkShRc1U#G=CRw%B7ZevWRG1oW15VZJdZukjQN8RGudOG zY{vW>#l#yjSS!4$@Ixc5x%;(7D^BKmn#GCDcOX>Xz$=lx2v^DmvG8>CvB189dEZm; z#_ujz8Xs8_K}oPzF!j*9kFOGesXqR%B2WP*01CWD8Z6XR-1LuMFKEp@U;^19PSoON z*IwwEU%+L%`Jk>B;KhgnMz8jJZ?A_kTr=#xK0+RRD4gtvRD96W& z))!H5qzK+YL8k~Vqo55z^c3rQpHf05&8awZ45xV|rJ!ayWW!DvvJ{wNNK<{5_`vf( zlvvlX-eT*bwg)3jE&GwjAcd-()-+x{k$I4;#Z)C@`^+~`~=+1vE1|_6t@TWnVShirhHNcNy3jC z$Z3%#{}lXid${B%o0ExKgOB4HU26+A0Q8KLBrd=@T5=L5bMP(mG?eGOQ=5SyY`E4P zT}i)d;yt?Q-j7+jSo0g^jl8C-(WZ=Om@{%x&4*uaBKP*rP|~J*zubf*Uu+uhh0Wc$ z!}$tv{FU|T#Y&E+`lM591Q~{s;K&3Yng2ki$QVh#34a*zMX^k1Zsg>|S-+&0kc1zJ z^Wt}ELU#BOB0~`rcC|I`yRwfoHXJX8iWDhnE5%RC;Aa|P8_YN=NI-c2x5njq52C+? zHs;-z?`^AESyTP-Ky@Na=phNc!&Pr>qGtM8@xFpnwdyuY)ik|O*0FI1@E`sRb161~ zEj-$g!W_cHxoOUbNv5^4W?tqsHsp-KzFdH&@r!miG1Y9i0saVM*+(IQ*|?(^7DpW6 zI5R;b((CD2eY5kWQIMpu=NW_+p^n!IZAseK1J#UB+Tt?))j%`eg|+~j){^9@?yY*W zuUSZwh5=s4ErJ~Vd_xy#38D!7Ht8Y=;o2uc+U)9+HuJ{UD5Lme;Bu^BUffte#1tiK z*5^&YPrak?Nb>eKV|67jQ_pAI~=0xy}+-vgEIXl#V=2oVzUBOHDp zrwV!^4jN$dWE?|C$2~Z>6M7|nrG2F=g(Dr9uHpI~JYy>&f9b{BbA0s`4c6Jy2dXLP zeRE1$(WaD$_v<204-@&S-jCE%zTBQjeJ9@V5+Wy5gviWe(!?kx(k!$gTLte;YJiEx zJjbj4xet~7M(}y9-v}DryKnsecK57JMxSv1f@m~6EbO<1{c=oA^e)%=lJ$SF_bzZz zmU;jG%|S&)nM#e+a#T!8u^E`*I0sNMDl|+yl?PBjFa(0Z)V0L0U5(tO&24S7)>_-O zvetI3%&b5xv8>SC0+qtDb_^>jSE)7qy}$Q0Hw29Tb1sKTJUDoo>3gQLJfIYl2{fNbNKiq++Uz^-?LINi=}Ig3}2sCp_fnA&T?1r zgU9IR%-j(Vs`vw;4L!u;PvK+=W1?hVGT&g4JL6R5S^aP|+dZ>PS5^Eo z(9^Ag$}Q(`f6b6iM8b?*51+h_~VbW8l!8U&kKKQd&I(Sb2z@X zpEsKKc)qghhjNXj)xoTrcV#nMW4Lio@-Wfsw~SBr^sI0X)c3j$^8N#Nd$hq)Oz)#q z5`)&DQK>B=YSs@Wx&Ka8?e&w&)L*6ZUgmL{x-5;8*~6Zh#SxhtC^e#D1+Qi*h9HFw zYjQ;7RRu@nRkp0it88DfHYXyaeCqKBDV=Jcf0nWT0l(djr%K752yN~c;k}7r(<_rX z%CBy1W<;>}d#dv3Z&-H4AQ7iyoQW**B5&M>M%8DV-21H)c`Ly9K|?~QEr(Pd)2A%P z5ziUk{U1oHcvtQRn0jXTF75~4BkH$hmV~H}SyHGzk*>(GMt<)%%^_SBrbuB6863#A zPtv89h4jcz5w=h6eZ_OQKvpyv3BYs`s{{!N)4Z`Hej109-p@9xXV zdq;GpV*NIi3T`JvfD$?l5k`nNR03+{f)m~k?jU|$_A*ULmb)A=LD|X%u{2_lvy|jM z(nrL-abD?kj?tQE>b=)9Q6Ex5Ur71u&Ci?VKB6mo9lNK8XJjvqU{QATvbAuziGze`k)$n5KzD!s&s~A!p*WMD7J|-$F*x#)1@(P6` zEDG((I%d}9g-s){87+9+t&M2o3oU$YG+(6q-frq6nAw&WHtY4gu$d>puW1)&QSZhb zzGl3>@+kd|28&jH`#s*nej(prtUNAv!UnzZb=cKkk+@T}M|%a;zKAf455#yX+qJOq z`z4(XDm^sB$o?(5dM2%I=3zpX2HL+3v#)i1WK@Q-{|DwzX6fq8PjE+SW}LxKJ?;oc z`P1~2&uqZ$>AbN1r?7vM?g1@X7AO5{$Ve^pI=O7Xt(Y3_<1TLdRO`|2s)sAD z)k?B&Pm^u5b5?$Pmb~6xsLDZHn)C!k_E(J78N2K2uw4z}bC>w^^l0w39Y=LLj>DSP z8}X_;{yJ<9sl2$)R_u02>9$ge7x&qy$2_xk2d}2i9l!J}O{6veUK8!gZ{@!%F)wWT zUVQJ}(NkD@VlbIV=TJ*u4=9Qdxv|sN2}U5VCxa%WE0RG>`6t8lyTo61z>H!)5m1`F zYbCuKRYL#hJ78JA59;;1OGwVyUZ0mI$;i~&$7c}zdDCYf?DdXfm}&BUP}=bpf(mg9e6l<`i$U2pa_M6-1)&=Yv-Zv=L<_0Pwj!}9nIu&23E zMkNcQl8PX(uIY2!9DAtwD){*O zholz7g+syn$?V_DB`W`gSY7D6i__S)``ooxqB}pZ%-5H8}4j_a%92 z9-bpfd|LirdPUOl$(rBD805>EDktrsd)7);8jd!6+faK?ZA94nVXxGzJQ~d4TXiU? zk;`Gv4gbFoP19Z#Ptzy9=rMR&kNA^@?;Bpb=QSd}r^PQ74aXXe_1gWzw0Pf!cTIbn z8|%Egg^Q=8P@BG}Q?N>})k@>7JN)uIvUd1s`9F1c0sqOK5MRE1bxb?b?HPDe*R=OS zj(hqXxAyQUKB&E5pyq$idjQ^59h6C6#mmxowH3aw1A6WCS#H8o)!trgvu*D7Jo*pz zQdgzLb{0P4l2olDM`?*IO>NT9o4#*us^c`@;FTZA>G_p!tjMFk>E2Wr(Y=nDDF-Wb z*Xv&0k!}qHs?=3ugPESTt>C>CbKRikz&cDSPxNBsJhy_QgS(@x>J_%BzIW}>-spqZ zghm`59Z|WvmrQmwZ0qD8O207pjvj+L-&8uNX>`QRb^4Uv$;|o+CiZ4ef7*kt2;DB7 zthb53o9lF!(ggZN$f}@nw+fXV(?2ltI8}Q2WRJCi1bnrGS3cATI9w07^1I7DJ-k2D zL-)?^jHJ2S85jWP;22yydgSsG=%tZvr{-&Adye!89l+6euQqo(d7i^#hC?{4Eq>%k zpI~wLfJ_r)ez3cR4;b~!*V^=J*G{(f>@aTT8nB7SkmXfP1Sa!xwSgUcIjZ z1yZv1fnmRrqldy)h4Ek6-Z$)5es`Yol77j>;tOInXVr>l=JPMx3ppGY?|^4{M2 z4+uAh;kh~WWb+lqs@lnxj}FP3+)4L}%xUF10_MEl<3!d>>2YRX*b5W;Zf|2*J-mMM zWJZ=e&hL!#9;H>MaaUh^;O%|+a#F4Vz&&pf<^#>$l1cXzCT5Mb&9fq8JX#pKFr?M( zeS=rk%~RWPLz`?q`eDnd-Q$;CJgvEDN^_&vqX)u%k=83t)tSqWO91rH9RaZU9q&wZ zl-QZKINDIs`r#5LQLHD_OPrk__!brFEsmw?Jzjqp!Y-c(UA+V0OX82<3fm1^`+654 zk5)pA3%;+ZB@W;F8vW3rr4oxFo%+%DH8;~Qck)mExhkfB~?g-C2h&}jS-rwj)Hct0?boOvz1a~jDPI^@2esXAM&r=nv;RUC6 zR-OwiAABl#Mu2AkXZfY#oV)hgybkflRy|MsbgxC!tarR>b^E*$6!BG>_wHtF_}c96 z`f~PtV>$c!_=_UtH0MxGn|TKpvNq+*ua1}2lw8bSxo$CJO&ae`_!o6$nhB9E8t(Vw zAE`b6T+oM%7Ys*k+)ero4%0gb8{m)GxDKUvFJ?3 zLnN(BWHh?e5WVGj-(V&;bLQsi^6NW{FIgL8fX9m2$3k_{>gm;>1 zR)>y@6LHXOVc?9`o-y2{7~I^*;lBn82_s`}LthaSmLTYIFOnoQd z6dWtIN&l()ojJ2{e^tGBNh!aiGb5GX29%pw6b$wSw=7Id`bs{RkWb-~boJrQ`u+5r zQdD(h@?;k8mAiwdR^1xBrV!a9$HGek>Kt9G#&J7RS?Khz7edyoT`nC#cNre8l0UQj zT`GTl<*z>jMS1B$Q)}Oa7q|9WcoE-C2J_uy$lS>sxxmSbPcv>YqSKpSTXh3Fs7!p^ z_U!;q@5*m4_jIq!tvTCzaaC$f^8{06%g2@VLCv$bu1T#CuWKiSWK8C*ltj<_$_jQ1 z%WQ6Uc$J=_eChEgd%s6OT}Bb;Fo@5J z!k(|GYzYj~zpwkZm$cbnTpYFX3B_~7b zFVs`xTaeu@_XYgUto-!!@oGx8 zs&06y3D(H%CyywLe;&Ubi&J%+e=V|o{Dp+Asz$|5A$7!_e(Da3LJ9Ii>ReF==wfY(E z7LjgggRBhss9|?#H;q>kypwL8+Sc@i^KE!=M~|3uAMCxhb>;_6F$Yw8<%r?bQ!fTd zU2O@gtT*vK{S@AlYVQ~|s=g|3@tK4eCi}fUlVHQ7)*IwA3KS!D7lhP$yXi*5>oDFze9U8*d=Y~4?)GoH3Df7TnyBO?H_nbk}jLK_Qm3Nq`yz;f}RpLA(sCB5M zH=wfRtQ;O0KnJI^-}kO-WjPd5X+9&N(3{Z&%uf0Gnyo&y<->Hlk6Q=&-2c6@K3HyT z)Wd46tPf$oCezx9{c4YPiwRkIwB=lYW|hfC&l%>*JItDAv;>f4K1z4rBs0pU8M2D$ zIU|ezs@a1pv$C)XX$oqZ!S)jgH-#&v=ye0vq?l!h5I@Zwez2cCxGE*fa3Y~J2Q|;g z@N(*n90AC7kcAqXl;dULH8JE=N{Go5RC(oD6d|JcCyHQEoJPS?uJXz+Q3QzM!>WKC z=f08V5G3yd?J|-KlfORvl}E1ZD;-3uxvKk!bF`>F(mkx{-pa9NBhC?bAC2bM`o+)z zRRQcot!(KbVO%EOWvNm=aOi;60ae|H@9HD0<&tMz3A@*H7dFlD^k_=SXd2YotvMy5 zd5~OcrH=(<4=Ec1TFqJT_Hgfj*Nw#o+iH92nxQmF!}-)uu2_%RTUDFT@3ji%NFGiE zYQKE>SL{O%eQgy6taABSX)5b1eRB|t-4k$Gzf63v%%|lvt5mZ-kZ~XdpMzATM({?0 z&cu5qJ5glAjkjSpOwxzX9=ynq?w^5bPU|4Um-h@?`Q^n*0??ewKoQz8jLFdUg-oud z%fzW?b5qQ@<9{Xt)AFjy`-Z*n`V+D+Dql`t$4BF*YxQ?^!SpZ-KWKVY`YP3T85d2Q zO6_YZ9}={84Ts(ySlYdEZvd*G12>Af$16dunHuuqmyF7J!@tT~Q{ER*UFdeL0)6i` z(UY8on(98Sq=J;T4#%LmQSVW&z$om6vzXR?8NBlEx=i^?5!lZW{>Agvf^Wd4=Lvfu zRYDsPM&JzHYuAXo+M~hxg!iofNWPMDwwM%BwB>xbR^Fct(#nWK6w%9MayC+#iG6pp z!;8G(Z{#JtQ69W7sMWhem?OH2PIFl|$te#eL!1`f`c}u5YTcvmuBtX~_^v$eafl&Z zDvvU6VU0gi?b8Ho38NPdr zxW6cLR89mJcT8UsS>^T3{4&<$wsD>j`+Nz7`gc-YarAW;ahvaE!k7d2tx9tQ)rY;1 z(l6|VnS96*9#qT6&V%GI^^(w}v!y+`^eX7>q;E@mjjgPSOnSG}E9)lOo8Q|cU0%c` zOJ-KX`KIf+Y3Wfis%0STA_6^O*3|Zx*O(5qspPE5^^!tyBx@&=cRByeW+|Oa$~j8R zGL+3tcQnN8T^Y|*$@qXykBccd`{;k@ zL1hEM7V*9~@n-4^*TZuR7Ijq^!-W?K`kf4+J9<+fc?pxl8HCTv{l0zEkn;8GUBi|Q z-jtvYjX7}otExtk9)fLEb*FPMudjMtFlc}4wWyiwA>j-aH~Ww8KfM35{f)i%mY+QR zO;sDN`r(4NDyKgU+F#l?33s=Ll!hhYc5%;1qp%p18PPB1Fscw#p{Ea>Zmc|{ak1gM z-0ed=b9R|DzYoXKO9s%%30 z4%VAGSRXDdfvMp->l;a9IDz!TwP}Cr{wAIEhhaTMg)4ScV-w!N`hGsvn-uHAVfbL3 z^?D&pT-xIY+`qBhFq=JRu4J|1+vKwT6qu%OyOdwbW;JpLUe)nVGhFg=E;aNIAv$9KKkQdiXwQzPMh5KVH&N`@xgJ1kSm%7M^uGIto({}Rjg$AIk%#+K@;9q9?)7x`)rkYqcT6Fwe}MS zr+K-5ZbkX_rdbi;LVNvt6v=t;D9(B~-7vhqYWE1F0q2tHzb@@vRXcMX=Whf@d|emC zO~cyVTI=88hsskx>0EWmZ9{EKNN?Ug79ILJtmLp3HsCNZ2EWMrWceOw_#5xGjN1QA zSaGksurCkfg?V^m?0GXUtQCC!jp6l3$?DJXhO_lZ*v{IZUA(_M#7lZpSZXcYy@#4U zrK*t#2r}gKE=DcQ)Bm1cmAe8G-}KDnJdw%Du)MW*bx!WKdMD=f%3Z;X9036<%ZHB8@3?wbAfP;C<)^~b^4(n7$;TU-7)0c@vsoEy%|_AhHFNzIqu z9T=W__ah>2AO2l=Kc8(fJ1q(0eU6m&oCw?be$cMgm*p;*8jj`t`WfDZpKjv3#CuXh zzel$xAijqT27K_i=L`|)ypumE`?X_3tFAv5Q|~RCaqir9??41nQ<*U6ZrFd#C>6Gf znG0V%?K@jFvHtk_bas-go!EH%S17#R+hkvf5zKCa8BH)%*UJru!z94;K?E2~fE|ub zVAVsc8ZH;%*Uv-_@W0Rh6C7ALlF0|pfZ+k!)sPFi8S+5)KpUYQPy=)fItBHL2+#&X zqoH^x4VnWjhJFq`1MPt7q4%H`=nF_25ujZRT@8(eZie!qJE3*ZlhE_fE~tH2fc63S z8FUIVU5P&^5lV+|wW~#@$)1^|4Dap{kU@j>xEAWUrpWahkY%VM=TAub*1dcm)0Ip_(b;vQ9U8Sf!=e zOU*^Ox0?%dixzlfimX*T0!%GX_SIY?aGrbrbjh`Cij(4tT~v^{+x=`1Q;(U`s6;g} zyP(K?UD4v=TXS>982X!XJ>{iEy1@qSq}~dhfFij`I9ton7HipBiB_P+XwiCLN*ARq z(#o_b?RIR6!1-FSR;uNq%EM$Hs#4v)P_tsDNb`mC<9^GurGz%0l|z)Kd`6?P=<(jF zhgrmbVMkiTB6V?Yk>{q|1qEfE+)~}8&umJr=enZ2;?hOF0y5lAEh_bQt^1!|THwje zEX^(|%acHam%_sdg=HyH#1gEZ*@V*ETz~zwxt?j+h2>q$h+UZ>rn;XBSS%oi9}5+5~NZwnMw22IvTM0&0h}_cT)o)DJR4$y{{*G$ zbZG9}dD&&TIgwH}bLY;_$(>&amSmSva>}gClY?3`bLV>U3&aA=+_`z#WgbJlm@+Od z^*NJp3JuNNxw+Z%3dDVhr<7i5?%dK`>5t}n#H_rCsnoZo|J_h?m3Uf?;%e+iK~c~(&5{U`F8y);zVQ9M(_!fRl|*&M z-x0dMb%(u5`h`QuT3k@-DJS~Wip?;W%X|$r`++;up~NF| zjGmCprHmO=t~Q2QS0O*HKPWCurQ9=0i|6N-m0`ehaK4)V_RdkbXQ^iT911}%WG&>o zU1<0+<^_=WNyEJLR?T!N=1=|%v*nC)khp*9Hswa#iC%CrsH?$GiBHtqk1#ev4bTy2 zA+xzC?RqT(_sjGd+c<3!>RXu!Mrk)_H+7h2YFtaF#Wyq0fMkAI1GYoSA27FoP6)}I z^FzjZXcN=|Sz4HrKrK)t2XxE)ROY2iP+xc+DyAjyvlt%AOfiaiXgPCA53|xmm>Ba) zV@CSZbJ860>A~lZg>d0?7^SJ^!-c+>Wj1TX{8Ro4$-{i&E+pm4^fVM;B6ID|nX$a6 z`Ok+_%sjn}FeP=8L;sL1gsh&Q3cmynOGu)(9AtgaIscC)xStA3{Fmx0 ziUnQ#N@{-E?^0rv)kq%cF=AF6mz?~Rf3=b+B?X3GDJjK=pYppz&$+56;@c?aA5XW$ z(^*HPewGu4teT89RSvnh{ohWD_?=G}!aWbGs3<}cen`14f+Nxf=A%<}sB6inJmzXk zus?rocK)g>iq@4)NVoF8fUsrdC$Y-fPjc}?-d#A{t~t&jT~gDF33DF*Oa7DLs4`TX zle|lbbZs@AWoq!-Sl7xr?PBQ1Q2KDOmvKWdecZ(Ck}0}CL0`djn9CG4cT)DE+|1(i zao3H>_PK?mX7_rCLf!DY#U-o;a^BFVs@X7id#*OSBtVSWGHjtc}l| zFYcLJFBLzfx`J@=J3k-9e}RlW_|F9-3{r=A`GWE?)+U7I$z3#0UuzR)v8V{wFp}^) z)F~5rRR~R-cuh{uHB0qya(G6YC-Rs@v6M$kOG{j|C{c}YQ}nuuAL>C7@n)izgiPl@ zN7v_L0w46cPI~lG7L+wz=`Nf!4z7Hpy(x4*XwCiC_GLfFG@ZBLZ5pTx3mHZl}DvP^%qKhW28sM3F(=P zbV-k5m>6m7YL-Hd<;n2jMDQB;mBas1U;Ltz-)PN@t@@ceOvIIPnWm*_iNv^we;Hxq zk-jEMn@XDh_c6o2uD?jl_;oeEur7@$-@p2;(th~s>VBox`3ungy`O&wcWIr!K>FW* z=V$mg|36;=DpuZAx$5qp|6=u;d#dhT`^#Td-}meL*Zt;!->!e~cMolN_>tdleDtwD zY*HrAN%Cfzk82=)_UUeFTQO1>g#V#{^Qi?_HV!Y z=b7)%p3?#XgMzzt?-A0oSMSh1eZx!_U3^Ku{sS%zzii;3!Ixh##5{D^@Q4vtj*PtO z>QSSk#$02uM#tFfv2pPUiAfHp%blD(58+zgg8YJow-zocDlWOLw9He!`1U1Bm)$ap zckEd|ZvV68cig$+zdQf`-SPjI`JXa&-1yW9*QQ-}{SE08C*8<*UQ;rsPMbbs=FN)# zKW_g&g8w3y&-z+3$-FHelr?n;DD$x;AnSf@HOM}5ts3kBt_Nj4w-J=}_hyjqAGEEY z$OyKBp8Q@Sb3mgXKgTuiRFalfxjsPn_k@2nu zML<#wBF@#;gCY;!2#OqdGdLRD3Pyq3L6Hg9fU#gb7zZ|h@n9pE0JeZ4EB1nJunkNG z+rbo2JE@t*0U@AFgiYWCFdV!VG=m~Lj0CR-E#M7cJSeh+Wbj5X4a@*Dz-izNP-F^O zAp5$sd{AaMB_R6(wfqB`DS!&F1bra53Je0P!C+A27u~=O=(~fP!5-i?Fa)dtdxEx4 zs1M*i^r2uQ*atiY%Dw7sU>JA?lnNK}59$LbvXYBIk(FEm_QSj%Xa@U(qrm}SJQxm+ z2QLFNz=7Z_a1fXe4hB8o%j={AUFbS0j~s4 zfFr?n@G3C)6!if#fuq2|;Ak)si~^IvYru3+jy#zG+Q1yp4witi;BqhyTn)y9>%atX zBbW$o0h7S(pbOj$y1@o889V}}fL?GMcoG~BhMv|;azIWvI01|RuLUjOb)W;3qmk0U z8^BC39n1nJfra3W;1VzcTm{|)R)f>P4d8TeGk7z&9n1ym!CS#bun_cuE5VasfOH`3 z)F)8nVm-i6^gY3FuooBshJqGQIvfXh377`<12e$^U=}zKECeqHSAnC!YA^}h47$K= z;5e`bycKK&1L&x{U@&+R>>(Z3x1<9M1$%+vU?>;?4g@V=5|{?w3TA@xhByZd21~#m z;Bv4hxEkyQt^-5Cjo?6V3z!6M2LtHv>cL>}AlL(J0egZcz+PZG7zze|hkwunCV`P) z03BmI*b^KN_5w4&P;eGF5X=XYzzQ&cj-LKAQB1Ip`5{utLl&v`;Yy*NZv0 zNz84uPca8~iaA&>=JD`L^k9qV9q>!^V7us(;nx}Tph<8%=@d*Oor3A4Q!s;e3I;Ey zoq_|wS)f{pYOL5~rKzz(%+}G6*{1ncQS*IkD_PabBl1&uM2f0VR=A>9YcP4wFHfGn zGK3dC_iA;{o(rElkw?iR@?v>JJ}gg>FWe%ZzQm_5@wpeNqCB$7l}F@?@{|#R!rOc( zD`m<+U-=3ucd|m4r+}QuQ||L8D_42SI`XB`SE#SJX@kD_^L*)D?8|39>rr{Kk;clC z>r2-nU%1(DLLQNf$sg+`ob$i$|p~`FIJkTecVO^E*)Q^$FYx70_$?e0d7!uyS(|W7>O~Y~pMqNIMwB*IlQCK9N0gST z*9xfQvN9%6_db@0U6eg>*v3bg37jz6rI|jVMg1s;J9R zr?Glhbwtc%9WV7n)S0NIZbTsk5%)!;PSi3FkUA2DR6)$8o=BP{e5or@sKkxb7g0<2 zQfDMCaU=Cc@+;{t({4kZqK8ukH^f}>B6TQ=6wtI#i{DJ$uhb=pSNuwSl62AxiAlno z>f@p0ajZ5IbE#Vrrtm>z>%vb7U+P#CvC14q>Y1n|zf#vEOi8EIw~i) z&QGbok~T@tB0bF$^)!pb*(evO+Y+zjUFx^I|B*T)bzIa^ucV%fTEdsQE_^#bFH-l7 zvYV%;U&SkJ!AOI&2SY7wqEoHvn50wMhGD))FAF36QjSVp=I2-1jHF-u&ezj?EhQ;! zPs&lX1=WrW-;y6`Pg2T~YolFBC{nr_HB9Altj;g zo{iJ=6 zSBhVGOx5e2@;lbgeTJX;WM5fIII7oB@lMfu6s1n{m5aEU;S2L5b`H(AJ@E1UG_*z%Agj;C65$xEuTx*Z{r*9s&ObdcgzW zN$?3!3l1>72!w*W!Eo>h7y(L8U;+1m4)9el4Xg)6_HY%LiT)w55WE#E!F(vV3jKUA zpY#TR)#zmm-T>YKZU$cfORx_FYtT!%uSOpX?n5u*P$T#Yup0Aj;4$U&EQj@$Qop99gV&U6j@Ra(1BiL8Jp3EfNALe0A_-3fmz@d zun^n}E&+cHt^#*})!=L325=j=8GH}i1~z~-pp5VPz#6a-d>7nGd_BQq==XzdU^93I zd>;(y9$<2yvn!#FdGkd1f}1xfzN}<;7(9vMfa}oT2yVt*B)Ad%LNE*c5O53nY*1u~ zeZlSMS-R=6#4vC-`rm*J;AGH?J87Ut(98T#WN=Ypj$T@~$lR>pN%Tv=c=D47Y9Rrp zyMQ+QUj&M*%ngQOz6Kl&P60($7Y#uCN0xkwufg3;z{w@Qn(cdEW=!bzD z(C2`g!B@cTU>#TwZUq~`?VuNY6Kn_ffbsYr2!`|uFwFvGjsG#&5B)B1H25+&9{i)& zgAanq_!|Uz(Ekps0B3_5`G^7TMZXLbS!y!49{oLFB>H%8Gx`e9f<6J;9tOX;FI7+a00jmECJP8NOoEo<99aW zzM-DS3d&ID=qq(KmgnkH6{Rj<&TqI`sIUH&`K|g2U#SaO%^Gghn|Ng|^CrW*nAwe? zzRk~ERxF0OtUe62S_!Ifmip2x>nk;rpYJz^S0?Je5PM?{DKe2LQYK+4S%8ujsWq7F zsSN8*iwJCa`|JIG;OCTfXG{2OYuXF-|EzhN#r z-#XROHz?VK>`{^yCi5~`pDoa5IchGJ&8o|oYtGZtq0E)k%TP<2lv<@vsSEVDm3pCG z21;Gz7fy*@50tr*)F`#=qcFl$bx4^n)5~7X-K2!XjpC!!S*4y&E;`lz=AG_kPm|$B z?FmtS<=-%0pz~Cj=j&yr)QedE8*Ykpo+@)CVKUUhcSGG7Z;4(fl)0=D4L9X}=8JuN zlXYgUPc3V7@ny(13iP}y`H+$vDj9>4lBsoylFTW!DlbDVZBMD?-%uCoWv$E?QR|HL zx{6oH2~^!x@+Y+)M#(b_b6ML-ou)q`9|Uayp_LZ!!$F({q56S>x{dY+XmSgPWvpaA@^8rEl*Cra z8&sJowfu`4S(zDbgh#49C>f55OUdz+#8=7j=IMD z15{FDB?DBFV6@5Gb(oFUbxe#7n!8&f)qQWUP^B&awakDYVO|$EB9s8vkSRb=3U*39Ma%} zsExdfj867^N?c05rA8W&CrWM=AJuMQLoG5>C4E;iM^)ZReyXJLO0K8ML&;2K=bFd? zC7&h4XvhSWG|4~D%0&J9=RwIy7sGEuzNz9>YhY=M(lU*`>7th!+^H9T%5AU1eWbv3Eqx0s8|-0vDcfpMEg>&fh;Z zAld%x?MJ>|_VueFDPvwOTz0d{pAlUbJl1P-&~o>n)03m(yUAB+A3Xo?^eT5Z%RkTd zyfxmbRXp&)GbQWXmmj?^bjg_n>|MVcbLe;Ofh9$c>>tD_U^O#OH$J`5{U|g4$yX1; ze*WvHzx#vR{g0Jj&5Pv*@0u@XUUBK4+=nyYaSwcX0QP$Vt6fjJfBtSm{qzHTO_y93 z6%+lmd&u~v_QT8Yzwy12iz2tW7iauAvg#Z3SznzPvf)|x!KqWOaJP`Yn%wUP_5Z8; zHw*3!uK0+v^Riy67MkX`>(}0X>kIB> zMH?^n1`Wplu}Qt(+wQ(AebT;9H1d-iF>G7R4!3>!0$a&fvH1T}=JUUK$-QUN;)pqY zuX1WF#{;kYY^VFpH^+~Vp}>wc!K^3BwHu5fA%p8oFbweExG?*Hnt-T~-u z>~?nYE_coCk;y%`oONg|CkIAU8u=BN^Zwo)pei!k^ZujK;Psffkk8x_2o)?$Td(9nn>63pw@ge@TQv(Nn{hIrd zY**BvFWu;?2Ryd+b$7#q51bjj?sEq#kir?}J?^(Mljm(V^Mzx^;B&v(w#WTi%zgQz z1IXXTxAPuz*Smi|{1-p3eVy~#+NOo}-B<7aaN|3VZu=O1HT?a{4`=Rmf6{VpS)e(B z^c=W$$nm{ybHvw$ePgH}$w5_{ir#RqxMkFfTUulAf75F(Xm7g9p3F%vI7xgZ-!A`j z^_%X}jZ20NKL@{($L#pH`#$&bm#4nf|4rdv;lYRR+vhIb^69z>&-Zm|)t6-d^P;!h zy&rhyzQeYGPR;cFQ!{`6mbZTGSJ$9!Gzu$A-&9vS_+x81+^ zYGw65TCuNQw|K^ocidX_rJuF_xd-td9#Zk(JMR1kzCL|N8OPZ*^h~{_SA%=Sh$+Kw zxfOnU{~1@2*5H2q;ul}Mej4hUB z&+T{Lx$4|J*E{fIdt(2?ZTsCH_6;3AX2wXTmNxdrzE>V_e>-GTr0LH7gm=*&=gm9d zzWB1xF$1?=?9>{^)!erJfO~1&BU=g*_+qr8_u|^W9dN%I686dmpCwWsUi#BtL*I2r zH$H#agTJOdU#S1`>;LqwVY073^kJL#klue7*ixbN2G$HwdILAU(xkgLuwu5-8<-KK z^ah%rXw=;s*fLe=4U9bZzHV<|)}NK$!1Z&L-oS=1r8lsm?mgYVft!~py@3r@r8ltT z#NTxH2Ack)^ae)eD!qZp!ySje^D|RTo zfm)@~8`wTc=?z?Rsn5R;OFllJ^5esnzbL(djdv=&foYSJ-oWjbE4_gmsh?6$3|w8O z^ahqZp!5dLC{TI>x4V_zz>OCxy@A^C20eTO8+R$af$=b?=9WGfi=HX zdIK|ND!qX%1C`#utdIBU{tax~r1S=sEK+&{wQH2#z>3pv>i!MXYLvbMWzMrgIKsp1 z=g6PlfAQ|T+n(){teY@*>XUprc3kNC%TE2~dp#t0=MKtUA`3C~uwCh^Ke7So2~OaH zhHh4GK@4lH=G-~^uKb~o9SYlf&TXj9`oe1SVMuaFa7c)d7R){`A>Y&HUJ+>cawV%- z*O$H&n|yB8*C@sMWQA=$dq$LE-aHpCuv)N?M3)rbu4R`M$dpyfo?om_Y|CydRTEm> zbDMh{Z?@ze-c;UdiM&=lEpEKY@>#>1j-G6#&qg8Ug3+J^FF}j({9OGLAT6)3SU*4@ zFMFOI=c3{q5dmw3If|8Y=PQf3`AbWRNlhLO#6GXoXTQ{<&0T7RinO_8NaQYai*lEE zvhz9)>kt{{fA$IHT$38kMG>|KbB;roaMZ-K!)OcV43}_5i(w$v73f#{%*5WXGv>$1 z82I}U`)b^6_X{TwvwHLg{lXGAM)dw+`TLWw>Tws$c`%}uN5bld-V7P(5;qqL%io{) z_2MqWFDzXaioWE$@Wh?OBaeUD{QZhu2Gr_0}u*d-HAyw8v5C7)^NXF&dCAnq=dE`Pt`KOc9i{lXJJ>(Ot5j4}{6 z7b*ks_ee5rCF4?cOC?z`(MM8{b)T*R_9bIpWU-pd5L;QU>L>q zqZj27y@5s`1`gvqB3T;ObDEm)ICM~Fy%&GtPRxa*OhvyPw}Ac_W}7jSIJUl~+WTHm z-0lY@4smBYFKiWp3RBc^mn**&xRdzq1vf(ynY3MTW8@7lY;)?ZavTMX#9v@$9aCG{hjYOfc(j+sAAsWLqmVZ z5S150fABo}_J3i2$gG*Zg(O@fPrH5TItUtk6nklZg8q5BV`yi(8vWv3FhVmegT%d& zuJhA&5x@56@QicZ0uyek`1b>>m#&A(wZ*kbgS- z`6}l3SN zcXYKspFh>By4s%~|7tlKkH?5_-+A%R{bg5sPAJ#Q+i-u^eac?Kn2Opk_pgUyH|N(~ z!#O`4Gal$_e||cyf4Hmt`QfklLs$Fr!w=co)!v^^SG~%+cSzDHPf+26se+|L?+}1ernSa*kJNS?=6|MVt;)lI_VKlf%(nb8niKy2O)PBu5A)TV+n% zqPs`IGmA3|LmGIW?Pqo;W}Mr7!RLR^b=0)Gx=k(0&o0U-%*{zPj!|SbqtE@vb>oP< zAGPio$f0`U%1cW*1j{)7Cc9f^Zt0?eA`U|`jI>2T*OmD+#ibK+hoN7WqxJPO&D75_!ccopOs6d6biqZL1&eZ1%49kw zD(!}#&NKa{q;vjY8pj`L3rNxU+yhA?)&*p^UKS)uICe`6y;1QDJar;r^Kv#T+}2&opZQYbRDN2dPJw6llVx0KzhMEj%-@0JuIn|0!zusp_o`z{wXNEI2%!` zZlAh@G>?D}r1`vLXxd{z>ABg9&p$p<)4BzW*N?+H-^1hp|HG5=I{BkGuE(`MXd>sr z6^vcV@sGvRnGlc5&o0&8>Sic2i#zPKm>>$cM9-9Vjjm474~HzJ#Nk0f&NwMNdK7I_ z0J%&Vm%*%GV!bhSqNx8WrsFcC0%#+}Jhg~3--?Umpf`1pNEx|*Sm)P;tR4tT?>ut^ zmya2|gpZOk_TY%g6i<%IAa6oMuh&=3-qPyz_=^{Dz!&^3%1zPso@X*$drgHP$E3=6 zUBnWv=X46^R%%+TuD&T(<$IXaA-~v;cGHj1l=!q?2k4be)MLx@I8>98KB8hPDl0C` z6@Gl-r>7|p{`bLzD1LlRKn_+}p^f99K3^-*T2vh4ILD7rrfX;Ayb-@Pvr8MtA!MFh z31qrSOL7KU9iGA6K~Y_bq2cm3(J~j+=2``-ek+Fe~dH z{I5K#jFNr$+`s8Q#pnKc+`seKvBw5#pFHM$?3N!7|ISBsACr;8O+GXSk;dFZ3lGU` zzw5K|-Nq02ep$2LsZw_ADCY!2C!jXyB-9R_fwYg<>kqN<)D#XyKo%$-8V{vG=}-og z3C)0JL0M1^ln)g`C6EVN4y}f&A#uMR+6Zliwn96h-B1H`1ZshfL2Xd*$4VY1xnX0l zDI79Gk&p$7hmxT*Xas5{gXl5IgE z$B}m#f?_7v3lh8DkYOj`ieJGnNWvH9iJ9#6zt~4&F6~py?U3kGe0oWz=$VM=es1!a zBf{3*GxgKMp9xCbg+B8|pcyKG216`8^t4JoBs~?7qM@aaRpUQV55K3*OS^j;GZenQuH3phH zWyJs5WmjAACu#e49+9^oy62Qv^_)!L`xkCV|0!DGd)jedg8LsMpe!pi3-6my%dO^@gK{Ofd|MzFpW{uFi`IvLS>PpLJ~$LC0sDe-&A612Trn>7 za0w{vt^lQe%XQ;dfU7~NllOvVuo{$dTL(&6ZUANCx(SpzwFSHk+y+Y7?*ygI>;|O{ z?E^0b4}!zMBj9kb1&jcXfg?aKcqP~d0-{Jk* z!(0xcE}oyvS?|fon!jDg{R&&`#ExzCo*Ed0V%H#~H8;BQ}C?wMPhH<$Ye z7UUWM_}j~o>2nKMN1m4^J-u>PGA~(gpQ~cIkbiM^e)^64|1bV`av)Ie$IUb$sqgWs zJM~MDl5b{Qz+C#D{0o@NIYt$JAt+^lCg#;>Hf9BAgK8CXZ!joOXvYU7T zU-Zf@{aiv;=lF8>fbPbk+32hiARAxRN{VcR8o>9q^0kcYEiYof@+44Bd6p*yyHsup zF|!{cS2rgwT3`Gaag4`Y&fS){WzV@fDOUW(&^ucoE4!2JxUln!V&DAVtS@r5?*Cqj!Eru)NZS?>IDB%@1xdQ3`lZ{x6DPi{^|X~ALy zP789&IxPLIQC#M#U8v1Nd@ zz`EA@xb-RPtJZ_oW~<8_i+egNZjhz%bJ2o%2EcUV3Cu3iVt&QCi`)+Jg?3vi8xW>5CaRKoc z$6paYGJbUYP4Uy?m&dP+eS@yK}x$(>5AC7-I{vN?pW>6D6jXNZO(Alm9EjQ6xVE5v1^&@SFQ(Le{$_21xfB} z-Ieb9-A}sz;y&VTcgteUOImtZF0l-?jI&I!%&^S1+;3TLdD!xv<*=p2VzTzP4z$j+ z&auw7-ebMry59P*wbuHU^?>z#>p!hMqC=xEijI#SPkBy?zBBsg(f36^61^?@_2>i9 z|A-EV3Ad%#X4~$tRoQ+`4xhB`wAE6EDfWr>*X$qKz4l9D1LAteg~#0xH#=@^+>>$7 z#YM!Aihm?wYr?*SwuIh^0}`hvRwe!=abIG1Qo3WF<3Yz>N2B8lN3e5{bC`3CGsQW< zd6RRxGvB$(`KI#{*9cdXE6$bdn(UhIx|2Hltm~NTxQh&Cv3Cjxvy8N4!uJ)HRhD0p z&qpjzSZXZqT8>y8+3VOn%JYVh+XpJ?5L3P}>mOO}1=Xp6zyW zv)Wc|d&u@EW%U(ZQB>NZ*2YSR{M+gSMB@lVX^(GkAIGRF81@-Q?X}br^Y=V z_g-B0_{s4TDZA!`)rr4Kd?9f^b>+*%h$MSbM$)XLMM;a3o=V!8^j^}3Nhgv{C51b# za>P1rbS!sNI)3Tc;P`{%3CC{7n~sByNzU2MV%p}z&X=68QQC(o@8PbiT~=4T>n2yW z>sHqi*Ilk(yFPObb30|SR01*QxzW0uvU|+>H08I?`myzr=*Z~UXm_+H`l;xnw6>qe z?1(uUGuk%9KGvRZzsG)g?19sgPU zKjOcOKNlaJFfE}p;f{p65`ID3t50}0p(WwFgwVwB#1V<36Jrz86YoxZF0mo8chcCT z%%ppgo=)oFxYRMm5#va3xE$$@62~UTJC3g$;m%mXkU0@BQ4zG>=Eq%{! zYVDwyt7GD0#>ZsD%!w(Asf_tu%*!#2F`rNm0&JnSVYXPC+jhMz({{71$hM5uI^Etc z_FBq1GR_q@H}3to;P~s~-=$YbPFR;Pkk+{;>8+&Ej%Y`b<8#MA=T6FO05vtnmEoG< zTIpKt+T?nQ*4gN~#68fx(0wQUX^WIwHFIg;MN6Zl+46?9)%vwHB>IZzQPGxYSM*EK zZ$*C?{Z({OO#hgXF$pm@#LSKw;22M@ zav$~Xs3XXEm-7SXovzPar(LP;U%S~KPvV5HPRn#lj%A%?yQR+3VEM>$wRN0zkM)T4 z6YCe&czXK6=rH=q9=0oOE_(9&Y!A|Mp0Mq)y<@Z5o%YH0+4cha8heBNJ9}X4kl1Tt zlVY!rofNkst~Rbcu7CVh@izMEo(UxhBN87>d_M8@#6d}e9itsiN2+70BhRtV@xJ3D zhnKn#x9edUhmd-eQ)J#0McDRFVMtj zWws_+H(8&w{@MDR^>ypu=rPgB(OaW0iYcV+e;aePZH4{C*n_d3#cFXOaoLGEN##jr zoPn+oSA^@2l-tX$!>%t~|BybWM#-;IEORW;^oGM?rr92|e`D_(i(Lcf2G9nBt^KUw z*1^_D>u9URdat$Gy3V@Ay4AYPT2Gs7V7zREb1l|mjGArMlh$_Y8LJjOINBT?L2DgN z$>&7h%SgE{dVO>VbXy<-&1 zvggpJ6xvJd9{Upea(jh+m3_7SUVF8Do!#PycO+BO(rDKij!fnuvm7~&d`BUz+~Zh6 z4_M*2*RjsAo?dVx?S8Xki({)}8)bgN(dIbmXm^}p+zWPwI76K#XFq4SbFkCwjBrLW zi?KLue9y+Z7v7IgN~bTGm6VfInB+-Xp0q0IUPkB*Nt=?kByFST-JP^A>0r{4q+|5I zCzH-31v^3={TzcG5!5!D!$AtuNu8vvkaR6~tkP4pffQ{aH9Kh~`{ORXsM$}`L6PA;fGnQa$D7AjDHG(>CvpTHft?AZG>nv-IwU7~a zxpfuoV4ZaXZEy?iV5fCAE#V-o;F$FUE#Qnbm^ns2+CT*L-xlp)u8|&{89ggHpZc+c zy0O|(P2Jc?z1Zs5&J4ER(ZC#`h5FG(-O#8PChCNl`e1R!JCmJh&J5=aXBKmY66X?U zg>$vD+PU7j(Ye{V)w$hSVyV|whwb8YiUS_+i##QfXpf7K6d716CyEJ!*+vE;+o86Iai#y((>`rrMxM#St z-1*F)m$)n3tKHS~OdH*s-CNz;-8Fo9*x+tt1n|1sWQN8Qpq&t~gjh_LaEsXzX|Y)1 zEycd9^^`gcw(p)X!q%C~3PhFJ2LypetB3yI@4>2qmqr*3KOSg3govEk$Fw+1X zehh!k^-{0(R`2v)AM{BlI^#Qj-Y@ztwh<5cTJ>WjY}0R{XLbCp-}7;g_`)>+b3e>a z^UM4;6g~#=hF4J=+ZDxxhtsnK|Y<-*Ag>xy_w4--bNl zDbIM$OWyH;k9_7#=!9qjugGFpGSB1vsgthkk{iU(IPe0B{wpHfr(Wpa~Jd4v_5l*AyV@CGL6!U6-( zw@InXebRP$>SIuL;p-V}ZNSy(TOJfOK+Y3r*@6(9nfoQ2;RGc$9uFiW#CYiv+k>`*)NX7=VCo&0D{=EEfBj8{}yawtc6 zDo~M1?M_f0+@gxwIid3bB{jDw!@+i+Tl#xtiCJRh;Bd_v?J?$tTa+YkAiwaRG eDo0"; //find the end [.paa'] @@ -84,8 +84,10 @@ for "_index" from 0 to ((count _configPath) - 1) do { }; _startIndex = _startIndex - 1; }; - }; - + }; */ + _iconImage = "ace_parse_imagepath" callExtension _actionDisplayNameDefault; + + _actionOffset = [_actionPosition] call _fnc_getMemPointOffset; _memPointIndex = _memPoints find _actionPosition; diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index 835cd30fd6..7ffee69dee 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -57,5 +57,6 @@ set(GLOBAL_SOURCES ${GLOBAL_RC}) add_subdirectory(fcs) add_subdirectory(break_line) add_subdirectory(advanced_ballistics) +add_subdirectory(parse_imagepath) message("Build Type: ${CMAKE_BUILD_TYPE}") \ No newline at end of file diff --git a/extensions/parse_imagepath/CMakeLists.txt b/extensions/parse_imagepath/CMakeLists.txt new file mode 100644 index 0000000000..67e0003752 --- /dev/null +++ b/extensions/parse_imagepath/CMakeLists.txt @@ -0,0 +1,11 @@ +set(ACE_EXTENSION_NAME "ace_parse_imagepath") + +file(GLOB SOURCES *.h *.hpp *.c *.cpp) +add_library( ${ACE_EXTENSION_NAME} SHARED ${GLOBAL_SOURCES} ${SOURCES}) +add_dependencies(${ACE_EXTENSION_NAME} ace_common) +SET_TARGET_PROPERTIES(${ACE_EXTENSION_NAME} PROPERTIES PREFIX "") + +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/parse_imagepath/ace_parse_imagepath.cpp b/extensions/parse_imagepath/ace_parse_imagepath.cpp new file mode 100644 index 0000000000..86d41ca495 --- /dev/null +++ b/extensions/parse_imagepath/ace_parse_imagepath.cpp @@ -0,0 +1,52 @@ +/* + * ace_parse_imagepath.cpp + * Author: PabstMirror + * Gets raw image path from structured text input. + * + * Takes: + * Structured text that usualy has an image: + * Example: ""; + * + * Returns: + * Just the image path or "" if none + */ + +#include "ace_common.h" + +#include +#include + +extern "C" { + __declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function); +}; + +std::string getImagePathFromStructuredText(const std::string & input) { + std::string returnValue = ""; + std::size_t endIndex = input.find(".paa"); + std::size_t startIndex = endIndex - 1; + if ((endIndex != std::string::npos) && (endIndex > 1)) { + endIndex = endIndex + 4; + while ((startIndex > 0) && (returnValue == "")) { + if ((input[startIndex]) == '\'') { + returnValue = input.substr((startIndex + 1), (endIndex - startIndex - 1)); + }; + startIndex = startIndex - 1; + }; + }; + return returnValue; +} + +// i like to live dangerously. jk, fix strncpy sometime pls. +#pragma warning( push ) +#pragma warning( disable : 4996 ) + +void __stdcall RVExtension(char *output, int outputSize, const char *function) { + if (!strcmp(function, "version")) { + strncpy(output, ACE_FULL_VERSION_STR, outputSize); + } else { + strncpy(output, getImagePathFromStructuredText(function).c_str(), outputSize); + output[outputSize - 1] = '\0'; + } +} + +#pragma warning( pop ) From c2388aa80ce72fa4ebf2a1a7a8721fa93169b67d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 4 May 2015 00:02:39 +0200 Subject: [PATCH 0030/1101] 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 0031/1101] 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 6c5d72640c35bc1d978e95b6451a867f25d9a9ef Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 4 May 2015 14:06:33 -0500 Subject: [PATCH 0032/1101] Caching, Optimzations --- addons/interact_menu/XEH_clientInit.sqf | 3 + .../fnc_userActions_addHouseActions.sqf | 72 +++++++++---------- .../fnc_userActions_getHouseActions.sqf | 13 +++- 3 files changed, 47 insertions(+), 41 deletions(-) diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index d59c6e912f..64b20dbb74 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -3,6 +3,9 @@ if (!hasInterface) exitWith {}; +GVAR(cachedBuildingTypes) = []; +GVAR(cachedBuildingActionPairs) = []; + GVAR(ParsedTextCached) = []; //Setup text/shadow/size/color settings matrix diff --git a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf index f02f333cb5..deb7c839ca 100644 --- a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf @@ -23,12 +23,10 @@ if (_interactionType != 0) exitWith {}; //Ignore when mounted: if ((vehicle ACE_player) != ACE_player) exitWith {}; -systemChat format ["starting %1", diag_tickTime]; - [{ - private["_helperObject", "_helperPos", "_houseWasScaned", "_nearBuidlings", "_theHouse"]; + private ["_nearBuidlings", "_typeOfHouse", "_houseBeingScaned", "_actionSet", "_memPoints", "_memPointsActions", "_helperPos", "_helperObject"]; PARAMS_2(_args,_pfID); - EXPLODE_4_PVT(_args,_setPosition,_addedHelpers,_housesScaned,_houseBeingScaned); + EXPLODE_4_PVT(_args,_setPosition,_addedHelpers,_housesScaned,_housesToScanForActions); if (!EGVAR(interact_menu,keyDown)) then { {deleteVehicle _x;} forEach _addedHelpers; @@ -37,63 +35,61 @@ systemChat format ["starting %1", diag_tickTime]; // 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) exitWith {}; - //Make the common case fast (cursorTarget is looking at a door): if ((!isNull cursorTarget) && {cursorTarget isKindOf "Static"} && {!(cursorTarget in _housesScaned)}) then { - _housesScaned pushBack cursorTarget; if (((count (configFile >> "CfgVehicles" >> (typeOf cursorTarget) >> "UserActions")) > 0) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf cursorTarget) >> "ladders"))) > 0}) then { - _houseBeingScaned = cursorTarget; + _housesToScanForActions = [cursorTarget]; + } else { + _housesScaned pushBack cursorTarget; }; }; - if (isNull _houseBeingScaned) then { - _houseWasScaned = false; + //For performance, we only do 1 thing per frame, + //-either do a wide scan and search for houses with actions + //-or scan one house at a time and add the actions for that house + + if (_housesToScanForActions isEqualTo []) then { + //If player moved >2 meters from last pos, then rescan + if (((getPosASL ace_player) distance _setPosition) < 2) exitWith {}; + _nearBuidlings = nearestObjects [ace_player, ["Static"], 30]; { - _theHouse = _x; - if (!(_theHouse in _housesScaned)) exitWith { - _houseWasScaned = true; + _typeOfHouse = typeOf _x; + if (((count (configFile >> "CfgVehicles" >> _typeOfHouse >> "UserActions")) == 0) && {(count (getArray (configFile >> "CfgVehicles" >> _typeOfHouse >> "ladders"))) == 0}) then { _housesScaned pushBack _x; - if ((typeOf _theHouse) != "") then { - if (((count (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "UserActions")) > 0) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf _theHouse) >> "ladders"))) > 0}) then { - _args set [3, _theHouse]; - }; - }; + } else { + _housesToScanForActions pushBack _x; }; - // Need to scan fairly far, because houses are big. You can be 25m from center of building but right next to a door. - } forEach _nearBuidlings; + } forEach (_nearBuidlings - _housesScaned); - //If we finished scanning everything, update position - if (!_houseWasScaned) then { - systemChat format ["Pos Updated (stable): %1 [count %2]", diag_tickTime, (count _addedHelpers)]; - _args set [0, (getPosASL ace_player)]; - }; + _args set [0, (getPosASL ace_player)]; } else { - _actionSet = [(typeOf _houseBeingScaned)] call FUNC(userActions_getHouseActions); + _houseBeingScaned = _housesToScanForActions deleteAt 0; + _typeOfHouse = typeOf _houseBeingScaned; + //Skip this house for now if we are outside of it's radius + //(we have to scan far out for the big houses, but we don't want to waste time adding actions on every little shack) + if ((_houseBeingScaned != cursorTarget) && {((ACE_player distance _houseBeingScaned) - ((sizeOf _typeOfHouse) / 2)) > 4}) exitWith {}; + + _housesScaned pushBack _houseBeingScaned; + + _actionSet = [_typeOfHouse] call FUNC(userActions_getHouseActions); EXPLODE_2_PVT(_actionSet,_memPoints,_memPointsActions); - // systemChat format ["Add Actions for [%1] (%2)", _houseBeingScaned, (count _memPoints)]; + systemChat format ["Add Actions for [%1] (count %2) @ %3", _typeOfHouse, (count _memPoints), diag_tickTime]; { - _helperObject = "Sign_Sphere25cm_F" createVehicleLocal (getpos _houseBeingScaned); + _helperPos = (_houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x)) call EFUNC(common,positionToASL); + _helperObject = "Sign_Sphere25cm_F" createVehicleLocal _helperPos; _addedHelpers pushBack _helperObject; - _helperObject setVariable [QGVAR(building), _houseBeingScaned]; - - //ASL/ATL bullshit (note: attachTo doesn't work on buildings) - _helperPos = _houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x); - _helperObject setPosASL (_helperPos call EFUNC(common,positionToASL)); - + _helperObject setPosASL _helperPos; _helperObject hideObject true; TRACE_3("Making New Helper",_helperObject,_x,_houseBeingScaned); + { [_helperObject, 0, [], _x] call EFUNC(interact_menu,addActionToObject); } forEach (_memPointsActions select _forEachIndex); } forEach _memPoints; - - _args set [3, objNull]; }; }; -}, 0, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], [], objNull]] call CBA_fnc_addPerFrameHandler; +}, 0, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], [], []]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf index 7986e4dd5e..acc350059b 100644 --- a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf @@ -16,6 +16,9 @@ PARAMS_1(_typeOfBuilding); private["_action", "_actionDisplayName", "_actionDisplayNameDefault", "_actionMaxDistance", "_actionOffset", "_actionPath", "_actionPosition", "_building", "_configPath", "_endIndex", "_iconImage", "_index", "_ladders", "_memPointIndex", "_memPoints", "_memPointsActions", "_startIndex"]; +_searchIndex = GVAR(cachedBuildingTypes) find _typeOfBuilding; +if (_searchIndex != -1) exitWith {GVAR(cachedBuildingActionPairs) select _searchIndex}; + _memPoints = []; _memPointsActions = []; @@ -65,10 +68,10 @@ for "_index" from 0 to ((count _configPath) - 1) do { _actionStatement = compile _actionStatement; _actionCondition = compile _actionCondition; - _actionMaxDistance = _actionMaxDistance + 0.5; //increase range slightly + _actionMaxDistance = _actionMaxDistance + 0.1; //increase range slightly _iconImage = ""; -/* //todo: extension? (~75% of time doing this string shit!) + /* if (_actionDisplayNameDefault != "") then { //something like: ""; //find the end [.paa'] @@ -85,8 +88,9 @@ for "_index" from 0 to ((count _configPath) - 1) do { _startIndex = _startIndex - 1; }; }; */ + //extension ~4x as fast: _iconImage = "ace_parse_imagepath" callExtension _actionDisplayNameDefault; - + _actionOffset = [_actionPosition] call _fnc_getMemPointOffset; _memPointIndex = _memPoints find _actionPosition; @@ -139,5 +143,8 @@ _ladders = getArray (configFile >> "CfgVehicles" >> _typeOfBuilding >> "ladders" } forEach _ladders; +GVAR(cachedBuildingTypes) pushBack _typeOfBuilding; +GVAR(cachedBuildingActionPairs) pushBack [_memPoints, _memPointsActions]; + [_memPoints, _memPointsActions] From ea7a1c30eb69ecd1cfa44b9719f15a56f1d864d5 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Mon, 4 May 2015 13:36:23 -0700 Subject: [PATCH 0033/1101] Ability to set the test directory, the location you want the final files copied to for testing. Default: %USERPROFILE%\documents\Arma 3\ --- tools/make.cfg | 6 ++++++ tools/make.py | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/tools/make.cfg b/tools/make.cfg index 170cea5159..5e4460ffd9 100644 --- a/tools/make.cfg +++ b/tools/make.cfg @@ -49,10 +49,16 @@ module_root = P:\z\ace\addons optionals_root = P:\z\ace\optionals +# If the command-line variable test, the addons built will be copied to the following folder. +# Default: %USERPROFILE%\documents\Arma 3\ +# test_dir = %USERPROFILE%\documents\Arma 3\ + + # Directory where the built addon will be saved. # Default: release release_dir = P:\z\ace\release + # This string will be prefixed to all build PBO file names. # Default: None pbo_name_prefix = ace_ diff --git a/tools/make.py b/tools/make.py index c6e0c2b26c..0beaac766b 100644 --- a/tools/make.py +++ b/tools/make.py @@ -625,6 +625,9 @@ See the make.cfg file for additional build options. # Release/build directory, relative to script dir release_dir = cfg.get(make_target, "release_dir", fallback="release") + #Directory to copy the final built PBO's for a test run. + test_dir = cfg.get(make_target, "test_dir", fallback=os.path.join(os.environ["USERPROFILE"],r"documents\Arma 3")) + # Project PBO file prefix (files are renamed to prefix_name.pbo) pbo_name_prefix = cfg.get(make_target, "pbo_name_prefix", fallback=None) @@ -1095,6 +1098,11 @@ See the make.cfg file for additional build options. else: a3_path = cygwin_a3path + print_yellow("Path from the registry => {}".format(a3_path)) + a3_path = test_dir + + print_yellow("Copying build files to {}".format(a3_path)) + if os.path.exists(a3_path): try: shutil.rmtree(os.path.join(a3_path, project), True) From 05f34e5d6a74a014a36c7a69d0f16bb3d58ccfd5 Mon Sep 17 00:00:00 2001 From: ulteq Date: Tue, 5 May 2015 22:21:29 +0200 Subject: [PATCH 0034/1101] Attempt to fix https://github.com/acemod/ACE3/issues/1025 --- addons/weather/functions/fnc_updateWind.sqf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/weather/functions/fnc_updateWind.sqf b/addons/weather/functions/fnc_updateWind.sqf index 06bb57d093..b362458fdb 100644 --- a/addons/weather/functions/fnc_updateWind.sqf +++ b/addons/weather/functions/fnc_updateWind.sqf @@ -13,11 +13,16 @@ if (!GVAR(syncWind)) exitWith { ACE_wind = wind }; +private ["_newWaves"]; + ACE_wind = [] call FUNC(getWind); setWind [ACE_wind select 0, ACE_wind select 1, true]; 2 setGusts 0; // Set waves: 0 when no wind, 1 when wind >= 16 m/s -1 setWaves (((vectorMagnitude ACE_wind) / 16.0) min 1.0); +_newWaves = ((vectorMagnitude ACE_wind) / 16.0) min 1.0; +if (abs(_newWaves - waves) > 0.1) then { + 1 setWaves _newWaves; +}; TRACE_3("Wind/ACE_wind/Deviation(m/s)",wind,ACE_wind,Round((vectorMagnitude (ACE_wind vectorDiff wind)) * 1000) / 1000); From 5f43cffecd105341fbbc470dd87bbc89dfa2828d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 5 May 2015 20:35:08 -0500 Subject: [PATCH 0035/1101] Sort for mag repack --- addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf index 4ef69044da..67c5c4630b 100644 --- a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf +++ b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf @@ -24,7 +24,8 @@ private ["_newMagFnc", "_time", "_events", "_swapAmmoFnc", "_ammoSwaped", "_lowI PARAMS_3(_fullMagazineCount,_arrayOfAmmoCounts,_isBelt); // Sort Ascending - Don't modify original -_arrayOfAmmoCounts = (+_arrayOfAmmoCounts) call BIS_fnc_sortNum; +_arrayOfAmmoCounts = +_arrayOfAmmoCounts; +_arrayOfAmmoCounts sort true; _newMagFnc = { _time = _time + GVAR(TimePerMagazine); From 49b4bce96e972a99cc177d9c5e7bbdcdacf872a5 Mon Sep 17 00:00:00 2001 From: bux578 Date: Wed, 6 May 2015 15:50:22 +0200 Subject: [PATCH 0036/1101] sync "config-entries" from gh-pages --- documentation/development/ace3-config-entries.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/documentation/development/ace3-config-entries.md b/documentation/development/ace3-config-entries.md index 07782cf76c..fcd85ccfe1 100644 --- a/documentation/development/ace3-config-entries.md +++ b/documentation/development/ace3-config-entries.md @@ -7,7 +7,7 @@ order: 2 --- ## 1. CfgVehicles -Entries from found in the `CfgVehicles.hpp` files +Entries found in the `CfgVehicles.hpp` files ```c++ @@ -26,7 +26,7 @@ ace_offset ## 2. CfgWeapons -Entries from found in the `CfgWeapons.hpp` files +Entries found in the `CfgWeapons.hpp` files ```c++ @@ -65,7 +65,7 @@ ace_modedescription ## 3. CfgAmmo -Entries from found in the `CfgAmmo.hpp` files +Entries found in the `CfgAmmo.hpp` files ```c++ ace_recoil_shakemultiplier @@ -94,7 +94,7 @@ ace_barrellengths ## 4. CfgGlasses -Entries from found in the `CfgGlasses.hpp` file +Entries found in the `CfgGlasses.hpp` file ```c++ ace_color @@ -109,7 +109,7 @@ ace_dustpath ## 5. CfgMagazines -Entries from found in the `CfgMagazines.hpp` files +Entries found in the `CfgMagazines.hpp` files ```c++ ace_isbelt From 4c5f5cd9a272568728fe127c008282f3ad4613a9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 6 May 2015 17:37:43 +0200 Subject: [PATCH 0037/1101] Added Switching between sniper optics modes A3 feedback tracker issue --- documentation/development/arma-3-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/development/arma-3-issues.md b/documentation/development/arma-3-issues.md index 3b4a6f036b..79f0336e9b 100644 --- a/documentation/development/arma-3-issues.md +++ b/documentation/development/arma-3-issues.md @@ -20,6 +20,7 @@ Keeping track of Arma 3 issues that need to be fixed. If you want to support us * [CorruptedHeart: 0022318: Can no longer use "MenuBack" shortcut in AddAction](http://feedback.arma3.com/view.php?id=22318) * [James2464: 0023725: All Environment Rocks Should Have PhysX LODs](http://feedback.arma3.com/view.php?id=23725) * [Jaynus: 0023679: Display event handler return values for mouse buttons should be respected](http://feedback.arma3.com/view.php?id=23679) +* [Heisenberg: 0023741: Switching between optic modes of a sniper scope (AMS, DMS, MOS) will result in a blurred vision](http://feedback.arma3.com/view.php?id=23741) **Resolved:** From 873ae72864fa5812041cce04df3dcf324e3090a9 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Wed, 6 May 2015 11:56:09 -0700 Subject: [PATCH 0038/1101] Perform config cleanup on success or cancel #1032 --- tools/make.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/tools/make.py b/tools/make.py index 0beaac766b..8159dbe928 100644 --- a/tools/make.py +++ b/tools/make.py @@ -456,6 +456,24 @@ def check_for_obsolete_pbos(addonspath, file): if not os.path.exists(os.path.join(addonspath, module)): return True return False + + +def config_restore(modulePath): + #PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp + #print_green("\Pabst! (restoring): {}".format(os.path.join(modulePath, "config.cpp"))) + try: + if os.path.isfile(os.path.join(modulePath, "config.cpp")): + os.remove(os.path.join(modulePath, "config.cpp")) + if os.path.isfile(os.path.join(modulePath, "config.backup")): + os.rename(os.path.join(modulePath, "config.backup"), os.path.join(modulePath, "config.cpp")) + if os.path.isfile(os.path.join(modulePath, "config.bin")): + os.remove(os.path.join(modulePath, "config.bin")) + if os.path.isfile(os.path.join(modulePath, "texHeaders.bin")): + os.remove(os.path.join(modulePath, "texHeaders.bin")) + except: + print_yellow("Some error occurred. Check your addon folder {} for integrity".format(modulePath)) + + return True ############################################################################### @@ -867,6 +885,7 @@ See the make.cfg file for additional build options. except: pass + # Run build tool build_successful = False if build_tool == "pboproject": @@ -960,12 +979,6 @@ See the make.cfg file for additional build options. print ("Resuming build...") continue - #PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp - #print_green("\Pabst (restoring): {}".format(os.path.join(work_drive, prefix, module, "config.cpp"))) - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - os.remove(os.path.join(work_drive, prefix, module, "config.bin")) - os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) - # Back to the root os.chdir(module_root) @@ -975,6 +988,8 @@ See the make.cfg file for additional build options. input("Press Enter to continue...") print ("Resuming build...") continue + finally: + config_restore(os.path.join(work_drive, prefix, module)) elif build_tool== "addonbuilder": # Detect $NOBIN$ and do not binarize if found. From a80b180f080a29540da83f1380241ae363cb12a7 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Wed, 6 May 2015 12:13:46 -0700 Subject: [PATCH 0039/1101] Perform optionals clean up on success, failure or cancel #1032 --- tools/make.py | 561 +++++++++++++++++++++++++------------------------- 1 file changed, 283 insertions(+), 278 deletions(-) diff --git a/tools/make.py b/tools/make.py index 8159dbe928..69f5474ad0 100644 --- a/tools/make.py +++ b/tools/make.py @@ -730,339 +730,347 @@ See the make.cfg file for additional build options. print_error("Cannot create release directory") raise - #Temporarily copy optionals_root for building. They will be removed later. - optionals_modules = [] - optional_files = [] - copy_optionals_for_building(optionals_modules,optional_files) - # Get list of subdirs in make root. - dirs = next(os.walk(module_root))[1] + try: + #Temporarily copy optionals_root for building. They will be removed later. + optionals_modules = [] + optional_files = [] + copy_optionals_for_building(optionals_modules,optional_files) - # Autodetect what directories to build. - if module_autodetect and not arg_modules: - modules = [] - for path in dirs: - # Any dir that has a config.cpp in its root is an addon to build. - config_path = os.path.join(path, 'config.cpp') - if os.path.isfile(config_path) and not path in ignore: - modules.append(path) + # Get list of subdirs in make root. + dirs = next(os.walk(module_root))[1] - # Make the key specified from command line if necessary. - if new_key: - if not os.path.isfile(os.path.join(private_key_path, key_name + ".biprivatekey")): - print_yellow("\nRequested key does not exist.") - try: - os.makedirs(private_key_path) - except: - pass - curDir = os.getcwd() - os.chdir(private_key_path) - ret = subprocess.call([dscreatekey, key_name]) # Created in make_root - os.chdir(curDir) - if ret == 0: - print_green("Created: {}".format(os.path.join(private_key_path, key_name + ".biprivatekey"))) - print("Removing any old signature keys...") - purge(os.path.join(module_root, release_dir, project, "addons"), "^.*\.bisign$","*.bisign") - purge(os.path.join(module_root, release_dir, project, "optionals"), "^.*\.bisign$","*.bisign") - purge(os.path.join(module_root, release_dir, project, "keys"), "^.*\.bikey$","*.bikey") - else: - print_error("Failed to create key!") - - try: - print("Copying public key to release directory.") + # Autodetect what directories to build. + if module_autodetect and not arg_modules: + modules = [] + for path in dirs: + # Any dir that has a config.cpp in its root is an addon to build. + config_path = os.path.join(path, 'config.cpp') + if os.path.isfile(config_path) and not path in ignore: + modules.append(path) + # Make the key specified from command line if necessary. + if new_key: + if not os.path.isfile(os.path.join(private_key_path, key_name + ".biprivatekey")): + print_yellow("\nRequested key does not exist.") try: - os.makedirs(os.path.join(module_root, release_dir, project, "keys")) + os.makedirs(private_key_path) except: pass + curDir = os.getcwd() + os.chdir(private_key_path) + ret = subprocess.call([dscreatekey, key_name]) # Created in make_root + os.chdir(curDir) + if ret == 0: + print_green("Created: {}".format(os.path.join(private_key_path, key_name + ".biprivatekey"))) + print("Removing any old signature keys...") + purge(os.path.join(module_root, release_dir, project, "addons"), "^.*\.bisign$","*.bisign") + purge(os.path.join(module_root, release_dir, project, "optionals"), "^.*\.bisign$","*.bisign") + purge(os.path.join(module_root, release_dir, project, "keys"), "^.*\.bikey$","*.bikey") + else: + print_error("Failed to create key!") - shutil.copyfile(os.path.join(private_key_path, key_name + ".bikey"), os.path.join(module_root, release_dir, project, "keys", key_name + ".bikey")) + try: + print("Copying public key to release directory.") - except: - print_error("Could not copy key to release directory.") - raise + try: + os.makedirs(os.path.join(module_root, release_dir, project, "keys")) + except: + pass - else: - print_green("\nNOTE: Using key {}".format(os.path.join(private_key_path, key_name + ".biprivatekey"))) + shutil.copyfile(os.path.join(private_key_path, key_name + ".bikey"), os.path.join(module_root, release_dir, project, "keys", key_name + ".bikey")) - key = os.path.join(private_key_path, key_name + ".biprivatekey") + except: + print_error("Could not copy key to release directory.") + raise - # Remove any obsolete files. - print_blue("\nChecking for obsolete files...") - obsolete_check_path = os.path.join(module_root, release_dir, project,"addons") - for file in os.listdir(obsolete_check_path): - if (file.endswith(".pbo") and os.path.isfile(os.path.join(obsolete_check_path,file))): - if check_for_obsolete_pbos(module_root, file): - fileName = os.path.splitext(file)[0] - print_yellow("Removing obsolete file => {}".format(file)) - purge(obsolete_check_path,fileName+"\..",fileName+".*") + else: + print_green("\nNOTE: Using key {}".format(os.path.join(private_key_path, key_name + ".biprivatekey"))) - # For each module, prep files and then build. - print_blue("\nBuilding...") - for module in modules: - print_green("\nMaking {}".format(module + "-"*max(1, (60-len(module))))) - missing = False - sigMissing = False + key = os.path.join(private_key_path, key_name + ".biprivatekey") - # Cache check - if module in cache: - old_sha = cache[module] - else: - old_sha = "" + # Remove any obsolete files. + print_blue("\nChecking for obsolete files...") + obsolete_check_path = os.path.join(module_root, release_dir, project,"addons") + for file in os.listdir(obsolete_check_path): + if (file.endswith(".pbo") and os.path.isfile(os.path.join(obsolete_check_path,file))): + if check_for_obsolete_pbos(module_root, file): + fileName = os.path.splitext(file)[0] + print_yellow("Removing obsolete file => {}".format(file)) + purge(obsolete_check_path,fileName+"\..",fileName+".*") - #We always build ACE_common so we can properly show the correct version stamp in the RPT file. - if module == "common": - old_sha = "" + # For each module, prep files and then build. + print_blue("\nBuilding...") + for module in modules: + print_green("\nMaking {}".format(module + "-"*max(1, (60-len(module))))) + missing = False + sigMissing = False - # Hash the module - new_sha = get_directory_hash(os.path.join(module_root, module)) + # Cache check + if module in cache: + old_sha = cache[module] + else: + old_sha = "" - # Is the pbo or sig file missing? - missing = not os.path.isfile(os.path.join(release_dir, project, "addons", "ace_{}.pbo".format(module))) - sigFile = pbo_name_prefix+module + ".pbo." + key_name + ".bisign" - sigMissing = not os.path.isfile(os.path.join(release_dir, project, "addons", sigFile )) + #We always build ACE_common so we can properly show the correct version stamp in the RPT file. + if module == "common": + old_sha = "" - if missing: - print_yellow("Missing PBO file ace_{}.pbo".format(module) + ". Building...") + # Hash the module + new_sha = get_directory_hash(os.path.join(module_root, module)) - # Check if it needs rebuilt - # print ("Hash:", new_sha) - if old_sha == new_sha and not missing: - if not force_build: - print("Module has not changed.") - if sigMissing: - if key: - print("Missing Signature key {}".format(sigFile)) - build_signature_file(os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")) - # Skip everything else - continue + # Is the pbo or sig file missing? + missing = not os.path.isfile(os.path.join(release_dir, project, "addons", "ace_{}.pbo".format(module))) + sigFile = pbo_name_prefix+module + ".pbo." + key_name + ".bisign" + sigMissing = not os.path.isfile(os.path.join(release_dir, project, "addons", sigFile )) + + if missing: + print_yellow("Missing PBO file ace_{}.pbo".format(module) + ". Building...") + + # Check if it needs rebuilt + # print ("Hash:", new_sha) + if old_sha == new_sha and not missing: + if not force_build: + print("Module has not changed.") + if sigMissing: + if key: + print("Missing Signature key {}".format(sigFile)) + build_signature_file(os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")) + # Skip everything else + continue + + # Only do this if the project isn't stored directly on the work drive. + # Split the path at the drive name and see if they are on the same drive (usually P:) + if os.path.splitdrive(module_root)[0] != os.path.splitdrive(work_drive)[0]: + try: + # Remove old work drive version (ignore errors) + shutil.rmtree(os.path.join(work_drive, prefix, module), True) + + # Copy module to the work drive + shutil.copytree(module, os.path.join(work_drive, prefix, module)) + + except: + raise + print_error("ERROR: Could not copy module to work drive. Does the module exist?") + input("Press Enter to continue...") + print("Resuming build...") + continue + #else: + #print("WARNING: Module is stored on work drive ({}).".format(work_drive)) - # Only do this if the project isn't stored directly on the work drive. - # Split the path at the drive name and see if they are on the same drive (usually P:) - if os.path.splitdrive(module_root)[0] != os.path.splitdrive(work_drive)[0]: try: - # Remove old work drive version (ignore errors) - shutil.rmtree(os.path.join(work_drive, prefix, module), True) - - # Copy module to the work drive - shutil.copytree(module, os.path.join(work_drive, prefix, module)) + # Remove the old pbo, key, and log + old = os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix+module) + "*" + files = glob.glob(old) + for f in files: + os.remove(f) + if pbo_name_prefix: + old = os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix+module) + "*" + files = glob.glob(old) + for f in files: + os.remove(f) except: raise print_error("ERROR: Could not copy module to work drive. Does the module exist?") input("Press Enter to continue...") print("Resuming build...") continue - #else: - #print("WARNING: Module is stored on work drive ({}).".format(work_drive)) - try: - # Remove the old pbo, key, and log - old = os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix+module) + "*" - files = glob.glob(old) - for f in files: - os.remove(f) + # Build the module into a pbo + print_blue("Building: {}".format(os.path.join(work_drive, prefix, module))) + print_blue("Destination: {}".format(os.path.join(module_root, release_dir, project, "addons"))) - if pbo_name_prefix: - old = os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix+module) + "*" - files = glob.glob(old) - for f in files: - os.remove(f) - except: - raise - print_error("ERROR: Could not copy module to work drive. Does the module exist?") - input("Press Enter to continue...") - print("Resuming build...") - continue - - # Build the module into a pbo - print_blue("Building: {}".format(os.path.join(work_drive, prefix, module))) - print_blue("Destination: {}".format(os.path.join(module_root, release_dir, project, "addons"))) - - # Make destination folder (if needed) - try: - os.makedirs(os.path.join(module_root, release_dir, project, "addons")) - except: - pass - - - # Run build tool - build_successful = False - if build_tool == "pboproject": + # Make destination folder (if needed) try: - #PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up: - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup")) - - os.chdir("P:\\") - - cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")] - ret = subprocess.call(cmd) - if ret != 0: - print_error("CfgConvert -bin return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) - - cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")] - ret = subprocess.call(cmd) - if ret != 0: - print_error("CfgConvert -txt return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + os.makedirs(os.path.join(module_root, release_dir, project, "addons")) + except: + pass - # Include build number + # Run build tool + build_successful = False + if build_tool == "pboproject": try: - configpath = os.path.join(work_drive, prefix, module, "config.cpp") - f = open(configpath, "r") - configtext = f.read() - f.close() + #PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up: + shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup")) - if configtext: - patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1) - patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext) - configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL) - f = open(configpath, "w") - f.write(configtext) - f.close() - else: + os.chdir("P:\\") + + cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")] + ret = subprocess.call(cmd) + if ret != 0: + print_error("CfgConvert -bin return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + + cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")] + ret = subprocess.call(cmd) + if ret != 0: + print_error("CfgConvert -txt return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) + os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) + shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + + + # Include build number + try: + configpath = os.path.join(work_drive, prefix, module, "config.cpp") + f = open(configpath, "r") + configtext = f.read() + f.close() + + if configtext: + patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1) + patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext) + configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL) + f = open(configpath, "w") + f.write(configtext) + f.close() + else: + os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) + os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + except: + raise + print_error("Failed to include build number") + continue + + if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")): + print_green("$NOBIN$ Found. Proceeding with non-binarizing!") + cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"addons")] + + else: + if check_external: + cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"] + else: + cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"] + + color("grey") + if quiet: + devnull = open(os.devnull, 'w') + ret = subprocess.call(cmd, stdout=devnull) + devnull.close() + else: + ret = subprocess.call(cmd) + color("reset") + + if ret == 0: + print_green("pboProject return code == {}".format(str(ret))) + # Prettyprefix rename the PBO if requested. + if pbo_name_prefix: + try: + os.rename(os.path.join(module_root, release_dir, project, "addons", module+".pbo"), os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix+module+".pbo")) + except: + raise + print_error("Could not rename built PBO with prefix.") + # Sign result + if key: + print("Signing with {}.".format(key)) + if pbo_name_prefix: + ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) + else: + ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "addons", module + ".pbo")]) + + if ret == 0: + build_successful = True + else: + build_successful = True + + if not build_successful: + print_error("pboProject return code == {}".format(str(ret))) + print_error("Module not successfully built/signed.") + print ("Resuming build...") + continue + + # Back to the root + os.chdir(module_root) + except: raise - print_error("Failed to include build number") + print_error("Could not run Addon Builder.") + input("Press Enter to continue...") + print ("Resuming build...") continue + finally: + config_restore(os.path.join(work_drive, prefix, module)) + elif build_tool== "addonbuilder": + # Detect $NOBIN$ and do not binarize if found. if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")): - print_green("$NOBIN$ Found. Proceeding with non-binarizing!") - cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"addons")] - + do_binarize = False + print("$NOBIN$ file found in module, packing only.") else: - if check_external: - cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"] + do_binarize = True + try: + # Call AddonBuilder + os.chdir("P:\\") + + cmd = [addonbuilder, os.path.join(work_drive, prefix, module), os.path.join(make_root, release_dir, project, "addons"), "-clear", "-project="+work_drive] + if not do_binarize: + cmd.append("-packonly") + + if quiet: + previousDirectory = os.getcwd() + os.chdir(arma3tools_path) + devnull = open(os.devnull, 'w') + ret = subprocess.call(cmd, stdout=devnull) + devnull.close() + os.chdir(previousDirectory) else: - cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"] - - color("grey") - if quiet: - devnull = open(os.devnull, 'w') - ret = subprocess.call(cmd, stdout=devnull) - devnull.close() - else: - ret = subprocess.call(cmd) - color("reset") - - if ret == 0: - print_green("pboProject return code == {}".format(str(ret))) + previousDirectory = os.getcwd() + os.chdir(arma3tools_path) + print_error("Current directory - {}".format(os.getcwd())) + ret = subprocess.call(cmd) + os.chdir(previousDirectory) + print_error("Current directory - {}".format(os.getcwd())) + color("reset") + print_green("completed") # Prettyprefix rename the PBO if requested. if pbo_name_prefix: try: - os.rename(os.path.join(module_root, release_dir, project, "addons", module+".pbo"), os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix+module+".pbo")) + os.rename(os.path.join(make_root, release_dir, project, "addons", module+".pbo"), os.path.join(make_root, release_dir, project, "addons", pbo_name_prefix+module+".pbo")) except: raise print_error("Could not rename built PBO with prefix.") - # Sign result - if key: - print("Signing with {}.".format(key)) - if pbo_name_prefix: - ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) + + if ret == 0: + # Sign result + if key: + print("Signing with {}.".format(key)) + if pbo_name_prefix: + ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) + else: + ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "addons", module + ".pbo")]) + + if ret == 0: + build_successful = True else: - ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "addons", module + ".pbo")]) - - if ret == 0: build_successful = True - else: - build_successful = True - if not build_successful: - print_error("pboProject return code == {}".format(str(ret))) - print_error("Module not successfully built/signed.") + if not build_successful: + print_error("Module not successfully built.") + + # Back to the root + os.chdir(make_root) + + except: + raise + print_error("Could not run Addon Builder.") + input("Press Enter to continue...") print ("Resuming build...") continue - # Back to the root - os.chdir(module_root) - - except: - raise - print_error("Could not run Addon Builder.") - input("Press Enter to continue...") - print ("Resuming build...") - continue - finally: - config_restore(os.path.join(work_drive, prefix, module)) - - elif build_tool== "addonbuilder": - # Detect $NOBIN$ and do not binarize if found. - if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")): - do_binarize = False - print("$NOBIN$ file found in module, packing only.") else: - do_binarize = True - try: - # Call AddonBuilder - os.chdir("P:\\") + print_error("Unknown build_tool {}!".format(build_tool)) - cmd = [addonbuilder, os.path.join(work_drive, prefix, module), os.path.join(make_root, release_dir, project, "addons"), "-clear", "-project="+work_drive] - if not do_binarize: - cmd.append("-packonly") + # Update the hash for a successfully built module + if build_successful: + cache[module] = new_sha - if quiet: - previousDirectory = os.getcwd() - os.chdir(arma3tools_path) - devnull = open(os.devnull, 'w') - ret = subprocess.call(cmd, stdout=devnull) - devnull.close() - os.chdir(previousDirectory) - else: - previousDirectory = os.getcwd() - os.chdir(arma3tools_path) - print_error("Current directory - {}".format(os.getcwd())) - ret = subprocess.call(cmd) - os.chdir(previousDirectory) - print_error("Current directory - {}".format(os.getcwd())) - color("reset") - print_green("completed") - # Prettyprefix rename the PBO if requested. - if pbo_name_prefix: - try: - os.rename(os.path.join(make_root, release_dir, project, "addons", module+".pbo"), os.path.join(make_root, release_dir, project, "addons", pbo_name_prefix+module+".pbo")) - except: - raise - print_error("Could not rename built PBO with prefix.") - - if ret == 0: - # Sign result - if key: - print("Signing with {}.".format(key)) - if pbo_name_prefix: - ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) - else: - ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "addons", module + ".pbo")]) - - if ret == 0: - build_successful = True - else: - build_successful = True - - if not build_successful: - print_error("Module not successfully built.") - - # Back to the root - os.chdir(make_root) - - except: - raise - print_error("Could not run Addon Builder.") - input("Press Enter to continue...") - print ("Resuming build...") - continue - - else: - print_error("Unknown build_tool {}!".format(build_tool)) - - # Update the hash for a successfully built module - if build_successful: - cache[module] = new_sha + except: + print_yellow("Cancel or some error detected.") + finally: + copy_important_files(module_root_parent,os.path.join(release_dir, "@ace")) + cleanup_optionals(optionals_modules) # Done building all modules! @@ -1078,9 +1086,6 @@ See the make.cfg file for additional build options. except: print_error("ERROR: Could not delete pboProject temp files.") - copy_important_files(module_root_parent,os.path.join(release_dir, "@ace")) - cleanup_optionals(optionals_modules) - # Make release if make_release: print_blue("\nMaking release: {}-{}.zip".format(project,release_version)) From e63b543c5a0be76b55f09bfdf9cde1737847a7e7 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Wed, 6 May 2015 14:05:11 -0700 Subject: [PATCH 0040/1101] Added blacklist for server.pbo signature keys #1032 --- tools/make.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/make.py b/tools/make.py index 69f5474ad0..f3d71f3f34 100644 --- a/tools/make.py +++ b/tools/make.py @@ -63,6 +63,7 @@ optionals_root = "" key_name = "ace_3.0.0" key = "" dssignfile = "" +signature_blacklist = ["ace_server.pbo"] ############################################################################### # http://akiscode.com/articles/sha-1directoryhash.shtml @@ -443,8 +444,13 @@ def purge(dir, pattern, friendlyPattern="files"): def build_signature_file(file_name): global key global dssignfile - print("Signing with {}.".format(key)) - ret = subprocess.call([dssignfile, key, file_name]) + global signature_blacklist + ret = 0 + baseFile = os.path.basename(file_name) + #print_yellow("Sig_fileName: {}".format(baseFile)) + if not (baseFile in signature_blacklist): + print("Signing with {}.".format(key)) + ret = subprocess.call([dssignfile, key, file_name]) if ret == 0: return True else: @@ -1034,7 +1040,9 @@ See the make.cfg file for additional build options. if ret == 0: # Sign result - if key: + + #print_yellow("Sig_fileName: ace_{}.pbo".format(module)) + if (key and not "ace_{}.pbo".format(module) in signature_blacklist) : print("Signing with {}.".format(key)) if pbo_name_prefix: ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) From cea6d0063d809f981db070e1f1da797e79e37117 Mon Sep 17 00:00:00 2001 From: ulteq Date: Thu, 7 May 2015 17:49:59 +0200 Subject: [PATCH 0041/1101] Disables the CfgAISkill class to prevent it from affecting players. --- addons/ai/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/ai/config.cpp b/addons/ai/config.cpp index fdcb6afe9d..0d5f7c62c3 100644 --- a/addons/ai/config.cpp +++ b/addons/ai/config.cpp @@ -12,5 +12,5 @@ class CfgPatches { }; }; -#include "CfgAISkill.hpp" +//#include "CfgAISkill.hpp" #include "CfgWeapons.hpp" From 4eaab93fd1ec9a4e3f39b0fe0d7318973742a758 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:21:15 +0200 Subject: [PATCH 0042/1101] Convert ACE_caliber to meters --- .../functions/fnc_handleFired.sqf | 2 +- addons/ballistics/CfgAmmo.hpp | 92 ++-- extras/CfgAmmoReference.hpp | 410 +++++++++--------- optionals/compat_cup/CfgAmmo.hpp | 64 +-- optionals/compat_hlcmods_core/CfgAmmo.hpp | 44 +- optionals/compat_rh_de/CfgAmmo.hpp | 24 +- optionals/compat_rh_m4/CfgAmmo.hpp | 30 +- optionals/compat_rh_pdw/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 18 +- optionals/compat_rhs_usf3/CfgAmmo.hpp | 14 +- 10 files changed, 350 insertions(+), 350 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index e63b1d7dfc..20235d2489 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -91,7 +91,7 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { }; }; -_caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); +_caliber = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); _bulletLength = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); _bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); _barrelTwist = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 02df51e891..7d3e83230d 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -25,7 +25,7 @@ class CfgAmmo { typicalSpeed=750; tracerStartTime = 0.073; //M856 tracer burns out to 800m tracerEndTime = 1.579; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -42,7 +42,7 @@ class CfgAmmo { deflecting=18; hit=11; typicalSpeed=836; - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -59,7 +59,7 @@ class CfgAmmo { deflecting=18; hit=9; typicalSpeed=886; - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -76,7 +76,7 @@ class CfgAmmo { deflecting=18; hit=6; typicalSpeed=886; - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=46; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -97,7 +97,7 @@ class CfgAmmo { deflecting=18; hit=7; typicalSpeed=880; - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -117,7 +117,7 @@ class CfgAmmo { typicalSpeed=883; tracerStartTime = 0.073; //7T3M tracer burns out to 850m tracerEndTime = 1.736; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -131,7 +131,7 @@ class CfgAmmo { class B_65x39_Caseless : BulletBase { airFriction=-0.000785; typicalSpeed=800; - ACE_caliber=0.264; + ACE_caliber=0.006706; ACE_bulletLength=1.295; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -154,7 +154,7 @@ class CfgAmmo { airFriction=-0.00078; typicalSpeed=820 ; caliber=0.9; - ACE_caliber=0.264; + ACE_caliber=0.006706; ACE_bulletLength=1.364; ACE_bulletMass=139; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -169,7 +169,7 @@ class CfgAmmo { airFriction=-0.000651; typicalSpeed=860 ; caliber=1.1; - ACE_caliber=0.264; + ACE_caliber=0.006706; ACE_bulletLength=1.426; ACE_bulletMass=140; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -186,7 +186,7 @@ class CfgAmmo { hit=9; tracerStartTime = 0.073; //Based on the British L5A1 which burns out to 1000m tracerEndTime = 2.058; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -206,7 +206,7 @@ class CfgAmmo { caliber=1.8; hit=16; typicalSpeed=790; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -222,7 +222,7 @@ class CfgAmmo { caliber=1.8; hit=16; typicalSpeed=790; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -238,7 +238,7 @@ class CfgAmmo { caliber=1.5; hit=14; typicalSpeed=900; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=130; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -254,7 +254,7 @@ class CfgAmmo { caliber=2.2; hit=11; typicalSpeed=930; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=127; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -270,7 +270,7 @@ class CfgAmmo { caliber=1; hit=6; typicalSpeed=320; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.340; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -286,7 +286,7 @@ class CfgAmmo { typicalSpeed=800; caliber=2.0; hit=10; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.21; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -302,7 +302,7 @@ class CfgAmmo { typicalSpeed=820; caliber=2.1; hit=8; - ACE_caliber=0.284; + ACE_caliber=0.007214; ACE_bulletLength=1.529; ACE_bulletMass=180; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -318,7 +318,7 @@ class CfgAmmo { typicalSpeed=915; caliber=2.3; hit=6; - ACE_caliber=0.243; + ACE_caliber=0.006172; ACE_bulletLength=1.282; ACE_bulletMass=180; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -334,7 +334,7 @@ class CfgAmmo { caliber=1.8; hit=17; typicalSpeed=900; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.353; ACE_bulletMass=190; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -350,7 +350,7 @@ class CfgAmmo { caliber=1.9; hit=18; typicalSpeed=867; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -366,7 +366,7 @@ class CfgAmmo { caliber=2.0; hit=19; typicalSpeed=853; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.602; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -380,7 +380,7 @@ class CfgAmmo { class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; typicalSpeed=820; - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -396,7 +396,7 @@ class CfgAmmo { caliber=1.5; hit=15; typicalSpeed=820; - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -415,7 +415,7 @@ class CfgAmmo { typicalSpeed=800; tracerStartTime = 0.073; //Based on the 7T2 which burns three seconds tracerEndTime = 3; - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -431,7 +431,7 @@ class CfgAmmo { caliber=1.5; hit=11; typicalSpeed=790; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.153; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -447,7 +447,7 @@ class CfgAmmo { hit=12; caliber=1.5; typicalSpeed=716; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -465,7 +465,7 @@ class CfgAmmo { typicalSpeed=716; tracerStartTime = 0.073; //57N231P tracer burns out to 800m tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -480,7 +480,7 @@ class CfgAmmo { airFriction=-0.00125; typicalSpeed=390; hit=6; - ACE_caliber=0.356; + ACE_caliber=0.009042; ACE_bulletLength=0.610; ACE_bulletMass=115; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -495,7 +495,7 @@ class CfgAmmo { hit=5; airFriction=-0.001234; typicalSpeed=298; - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -510,7 +510,7 @@ class CfgAmmo { airFriction=-0.001234; typicalSpeed=370; hit=6; - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -525,7 +525,7 @@ class CfgAmmo { airFriction=-0.00168; typicalSpeed=425; hit=7; - ACE_caliber=0.5; + ACE_caliber=0.0127; ACE_bulletLength=0.764; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -540,7 +540,7 @@ class CfgAmmo { airFriction=-0.001213; typicalSpeed=282; hit=7; - ACE_caliber=0.3125; + ACE_caliber=0.007938; ACE_bulletLength=0.610; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -555,7 +555,7 @@ class CfgAmmo { airFriction=-0.00083; typicalSpeed=761; caliber=2.0; - ACE_caliber=0.311; + ACE_caliber=0.007899; ACE_bulletLength=1.227; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -569,7 +569,7 @@ class CfgAmmo { class B_93x64_Ball : BulletBase { airFriction=-0.00106; typicalSpeed=880; - ACE_caliber=0.366; + ACE_caliber=0.009296; ACE_bulletLength=1.350; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -584,7 +584,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.000395; typicalSpeed=910; - ACE_caliber=0.408; + ACE_caliber=0.010363; ACE_bulletLength=2.126; ACE_bulletMass=410; ACE_transonicStabilityCoef=1; @@ -598,7 +598,7 @@ class CfgAmmo { }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; - ACE_caliber=0.416; + ACE_caliber=0.010566; ACE_bulletLength=2.089; ACE_bulletMass=398; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -613,7 +613,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.000606; typicalSpeed=915; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.558; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -627,7 +627,7 @@ class CfgAmmo { class B_338_NM_Ball : BulletBase { airFriction=-0.000537; typicalSpeed=820; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.70; ACE_bulletMass=300; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -642,7 +642,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.000535; typicalSpeed=826; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.70; ACE_bulletMass=300; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -658,7 +658,7 @@ class CfgAmmo { airFriction=-0.000673; caliber=2.8; typicalSpeed=826; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.535; ACE_bulletMass=253; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -672,7 +672,7 @@ class CfgAmmo { class B_127x54_Ball : BulletBase { airFriction=-0.00014; typicalSpeed=300; - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.540; ACE_bulletMass=750; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -687,7 +687,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.0006; typicalSpeed=900; - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.310; ACE_bulletMass=647; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -704,7 +704,7 @@ class CfgAmmo { typicalSpeed=900; hit=25; caliber=4.0; - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.310; ACE_bulletMass=648; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -720,7 +720,7 @@ class CfgAmmo { airFriction=-0.000374; typicalSpeed=860; caliber=3.0; - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.540; ACE_bulletMass=750; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -735,7 +735,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.00064; typicalSpeed=820; - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -749,7 +749,7 @@ class CfgAmmo { class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; typicalSpeed=250; - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp index 85201b92cc..5a7e9302cf 100644 --- a/extras/CfgAmmoReference.hpp +++ b/extras/CfgAmmoReference.hpp @@ -5,7 +5,7 @@ class CfgAmmo airFriction=-0.001265; hit=8; typicalSpeed=750; - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -22,7 +22,7 @@ class CfgAmmo deflecting=18; hit=11; typicalSpeed=836; - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -39,7 +39,7 @@ class CfgAmmo deflecting=18; hit=9; typicalSpeed=886; - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -60,7 +60,7 @@ class CfgAmmo deflecting=18; hit=7; typicalSpeed=880; - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -78,7 +78,7 @@ class CfgAmmo deflecting=18; hit=7; typicalSpeed=883; - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -92,7 +92,7 @@ class CfgAmmo class B_65x39_Caseless : BulletBase { airFriction=-0.000785; typicalSpeed=800; - ACE_caliber=0.264; + ACE_caliber=0.006706; ACE_bulletLength=1.295; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -115,7 +115,7 @@ class CfgAmmo { airFriction=-0.00078; typicalSpeed=820 ; - ACE_caliber=0.264; + ACE_caliber=0.006706; ACE_bulletLength=1.364; ACE_bulletMass=139; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -130,7 +130,7 @@ class CfgAmmo airFriction=-0.001035; typicalSpeed=833; hit=9; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -150,7 +150,7 @@ class CfgAmmo caliber=1.05; hit=16; typicalSpeed=790; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -166,7 +166,7 @@ class CfgAmmo caliber=0.85; hit=14; typicalSpeed=890; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=130; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -182,7 +182,7 @@ class CfgAmmo caliber=0.5; hit=6; typicalSpeed=790; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.340; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -198,7 +198,7 @@ class CfgAmmo caliber=1.08; hit=17; typicalSpeed=900; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.353; ACE_bulletMass=190; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -214,7 +214,7 @@ class CfgAmmo caliber=1.12; hit=18; typicalSpeed=867; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -230,7 +230,7 @@ class CfgAmmo caliber=1.15; hit=19; typicalSpeed=853; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.602; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -244,7 +244,7 @@ class CfgAmmo class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; typicalSpeed=820; - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -260,7 +260,7 @@ class CfgAmmo caliber=0.95; hit=15; typicalSpeed=820; - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -277,7 +277,7 @@ class CfgAmmo caliber=0.9; hit=15; typicalSpeed=800; - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -293,7 +293,7 @@ class CfgAmmo caliber=0.9; hit=11; typicalSpeed=790; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.153; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -308,7 +308,7 @@ class CfgAmmo airFriction=-0.0015168; hit=12; typicalSpeed=716; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -323,7 +323,7 @@ class CfgAmmo airFriction=-0.0015168; hit=12; typicalSpeed=716; - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -338,7 +338,7 @@ class CfgAmmo airFriction=-0.00125; typicalSpeed=390; hit=6; - ACE_caliber=0.356; + ACE_caliber=0.009042; ACE_bulletLength=0.610; ACE_bulletMass=115; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -353,7 +353,7 @@ class CfgAmmo hit=5; airFriction=-0.001234; typicalSpeed=298; - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -368,7 +368,7 @@ class CfgAmmo airFriction=-0.001234; typicalSpeed=370; hit=6; - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -383,7 +383,7 @@ class CfgAmmo airFriction=-0.00168; typicalSpeed=425; hit=7; - ACE_caliber=0.5; + ACE_caliber=0.0127; ACE_bulletLength=0.764; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -398,7 +398,7 @@ class CfgAmmo airFriction=-0.001213; typicalSpeed=282; hit=7; - ACE_caliber=0.3125; + ACE_caliber=0.007938; ACE_bulletLength=0.610; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -412,7 +412,7 @@ class CfgAmmo class ACE_303_Ball : ACE_762x51_Ball_M118LR { airFriction=-0.00083; typicalSpeed=761; - ACE_caliber=0.311; + ACE_caliber=0.007899; ACE_bulletLength=1.227; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -426,7 +426,7 @@ class CfgAmmo class B_93x64_Ball : BulletBase { airFriction=-0.00106; typicalSpeed=880; - ACE_caliber=0.366; + ACE_caliber=0.009296; ACE_bulletLength=1.350; ACE_bulletMass=230; ACE_transonicStabilityCoef=1; @@ -442,7 +442,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.000395; typicalSpeed=910; - ACE_caliber=0.408; + ACE_caliber=0.010363; ACE_bulletLength=2.126; ACE_bulletMass=410; ACE_transonicStabilityCoef=1; @@ -456,7 +456,7 @@ class CfgAmmo }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; - ACE_caliber=0.416; + ACE_caliber=0.010566; ACE_bulletLength=2.089; ACE_bulletMass=398; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -471,7 +471,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.000606; typicalSpeed=915; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.558; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -485,7 +485,7 @@ class CfgAmmo class B_338_NM_Ball : BulletBase { airFriction=-0.000537; typicalSpeed=820; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.70; ACE_bulletMass=300; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -501,7 +501,7 @@ class CfgAmmo airFriction=-0.000535; caliber=1.55; typicalSpeed=826; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.70; ACE_bulletMass=300; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -517,7 +517,7 @@ class CfgAmmo airFriction=-0.000673; caliber=2.4; typicalSpeed=826; - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.535; ACE_bulletMass=253; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -531,7 +531,7 @@ class CfgAmmo class B_127x54_Ball : BulletBase { airFriction=-0.00014; typicalSpeed=300; - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.540; ACE_bulletMass=750; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -546,7 +546,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.0006; typicalSpeed=853; - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.310; ACE_bulletMass=647; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -561,7 +561,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.000374; typicalSpeed=860; - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.540; ACE_bulletMass=750; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -576,7 +576,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.00064; typicalSpeed=820; - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -590,7 +590,7 @@ class CfgAmmo class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; typicalSpeed=250; - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -604,7 +604,7 @@ class CfgAmmo class TMR_B_762x51_M118LR : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -618,7 +618,7 @@ class CfgAmmo class RH_50_AE_Ball: BulletBase { - ACE_caliber=0.5; + ACE_caliber=0.0127; ACE_bulletLength=1.110; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -631,7 +631,7 @@ class CfgAmmo }; class RH_454_Casull: BulletBase { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.895; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -644,7 +644,7 @@ class CfgAmmo }; class RH_32ACP: BulletBase { - ACE_caliber=0.3125; + ACE_caliber=0.007938; ACE_bulletLength=0.610; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -657,7 +657,7 @@ class CfgAmmo }; class RH_45ACP: BulletBase { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -670,7 +670,7 @@ class CfgAmmo }; class RH_B_40SW: BulletBase { - ACE_caliber=0.4; + ACE_caliber=0.01016; ACE_bulletLength=0.447; ACE_bulletMass=135; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -683,7 +683,7 @@ class CfgAmmo }; class RH_44mag_ball: BulletBase { - ACE_caliber=0.429; + ACE_caliber=0.010897; ACE_bulletLength=0.804; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -696,7 +696,7 @@ class CfgAmmo }; class RH_357mag_ball: BulletBase { - ACE_caliber=0.357; + ACE_caliber=0.009068; ACE_bulletLength=0.541; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -709,7 +709,7 @@ class CfgAmmo }; class RH_762x25: BulletBase { - ACE_caliber=0.310; + ACE_caliber=0.007874; ACE_bulletLength=0.5455; ACE_bulletMass=86; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -722,7 +722,7 @@ class CfgAmmo }; class RH_9x18_Ball: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -735,7 +735,7 @@ class CfgAmmo }; class RH_B_9x19_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -748,7 +748,7 @@ class CfgAmmo }; class RH_B_22LR_SD: BulletBase { - ACE_caliber=0.223; + ACE_caliber=0.005664; ACE_bulletLength=0.45; ACE_bulletMass=38; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -761,7 +761,7 @@ class CfgAmmo }; class RH_57x28mm: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.495; ACE_bulletMass=28; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -775,7 +775,7 @@ class CfgAmmo class RH_9x19_B_M822: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -788,7 +788,7 @@ class CfgAmmo }; class RH_9x19_B_HP: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -801,7 +801,7 @@ class CfgAmmo }; class RH_9x19_B_HPSB: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.603; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -814,7 +814,7 @@ class CfgAmmo }; class RH_B_6x35: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.445; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -827,7 +827,7 @@ class CfgAmmo }; class RH_556x45_B_M855A1 : B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -840,7 +840,7 @@ class CfgAmmo }; class RH_556x45_B_Mk262 : B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -853,7 +853,7 @@ class CfgAmmo }; class RH_556x45_B_Mk318 : B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -866,7 +866,7 @@ class CfgAmmo }; class RH_68x43_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.277; + ACE_caliber=0.007036; ACE_bulletLength=0.959; ACE_bulletMass=115; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -879,7 +879,7 @@ class CfgAmmo }; class RH_68x43_B_Match: B_65x39_Caseless { - ACE_caliber=0.277; + ACE_caliber=0.007036; ACE_bulletLength=1.250; ACE_bulletMass=135; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -892,7 +892,7 @@ class CfgAmmo }; class RH_762x35_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.118; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -905,7 +905,7 @@ class CfgAmmo }; class RH_762x35_B_Match: B_65x39_Caseless { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.153; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -918,7 +918,7 @@ class CfgAmmo }; class RH_762x35_B_MSB: B_65x39_Caseless { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -931,7 +931,7 @@ class CfgAmmo }; class RH_762x51_B_M80A1 : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -944,7 +944,7 @@ class CfgAmmo }; class RH_762x51_B_Mk316LR : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -957,7 +957,7 @@ class CfgAmmo }; class RH_762x51_B_Mk319 : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.074; ACE_bulletMass=130; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -970,7 +970,7 @@ class CfgAmmo }; class RH_762x51_B_LFMJSB: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.340; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -984,7 +984,7 @@ class CfgAmmo class HLC_556NATO_SOST: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -997,7 +997,7 @@ class CfgAmmo }; class HLC_556NATO_SPR: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1010,7 +1010,7 @@ class CfgAmmo }; class HLC_556NATO_EPR: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -1023,7 +1023,7 @@ class CfgAmmo }; class HLC_300Blackout_Ball: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.118; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1036,7 +1036,7 @@ class CfgAmmo }; class HLC_300Blackout_SMK: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1049,7 +1049,7 @@ class CfgAmmo }; class HLC_762x51_BTSub: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.340; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1062,7 +1062,7 @@ class CfgAmmo }; class HLC_762x54_ball: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1075,7 +1075,7 @@ class CfgAmmo }; class HLC_762x54_tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1088,7 +1088,7 @@ class CfgAmmo }; class HLC_303Brit_B: BulletBase { - ACE_caliber=0.311; + ACE_caliber=0.007899; ACE_bulletLength=1.227; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1101,7 +1101,7 @@ class CfgAmmo }; class HLC_792x57_Ball: BulletBase { - ACE_caliber=0.318; + ACE_caliber=0.008077; ACE_bulletLength=1.128; ACE_bulletMass=196; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1114,7 +1114,7 @@ class CfgAmmo }; class FH_545x39_Ball: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1134,7 +1134,7 @@ class CfgAmmo }; class HLC_9x19_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1155,7 +1155,7 @@ class CfgAmmo }; class HLC_10mm_FMJ: HLC_9x19_Ball { - ACE_caliber=0.5; + ACE_caliber=0.0127; ACE_bulletLength=0.764; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1168,7 +1168,7 @@ class CfgAmmo }; class HLC_9x19_M882_SMG: HLC_9x19_Ball { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1182,7 +1182,7 @@ class CfgAmmo class M_mas_545x39_Ball_7N6M : BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1195,7 +1195,7 @@ class CfgAmmo }; class M_mas_545x39_Ball_7T3M : BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1208,7 +1208,7 @@ class CfgAmmo }; class B_mas_556x45_Ball_Mk262 : B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1221,7 +1221,7 @@ class CfgAmmo }; class B_mas_9x18_Ball_57N181S : BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1234,7 +1234,7 @@ class CfgAmmo }; class B_mas_9x21p_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1247,7 +1247,7 @@ class CfgAmmo }; class B_mas_9x21_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1260,7 +1260,7 @@ class CfgAmmo }; class B_mas_9x21d_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1273,7 +1273,7 @@ class CfgAmmo }; class B_mas_765x17_Ball: BulletBase { - ACE_caliber=0.3125; + ACE_caliber=0.007938; ACE_bulletLength=0.610; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1286,7 +1286,7 @@ class CfgAmmo }; class B_mas_762x39_Ball: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1299,7 +1299,7 @@ class CfgAmmo }; class B_mas_762x39_Ball_T: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1312,7 +1312,7 @@ class CfgAmmo }; class B_mas_762x51_Ball_M118LR : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1325,7 +1325,7 @@ class CfgAmmo }; class B_mas_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.353; ACE_bulletMass=190; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1338,7 +1338,7 @@ class CfgAmmo }; class B_mas_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1351,7 +1351,7 @@ class CfgAmmo }; class B_mas_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.602; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1364,7 +1364,7 @@ class CfgAmmo }; class B_mas_762x54_Ball : BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1377,7 +1377,7 @@ class CfgAmmo }; class B_mas_762x54_Ball_T : BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1390,7 +1390,7 @@ class CfgAmmo }; class BWA3_B_762x51_Ball_LR : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1403,7 +1403,7 @@ class CfgAmmo }; class BWA3_B_762x51_Ball_SD : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1417,7 +1417,7 @@ class CfgAmmo class BWA3_B_46x30_Ball : BulletBase { - ACE_caliber=0.193; + ACE_caliber=0.004902; ACE_bulletLength=0.512; ACE_bulletMass=31; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1431,7 +1431,7 @@ class CfgAmmo class Trixie_338_Ball : BulletBase { - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.70; ACE_bulletMass=300; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1444,7 +1444,7 @@ class CfgAmmo }; class Trixie_303_Ball : BulletBase { - ACE_caliber=0.311; + ACE_caliber=0.007899; ACE_bulletLength=1.227; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1458,7 +1458,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk318_Ball : BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1471,7 +1471,7 @@ class CfgAmmo }; class rhs_ammo_556x45_Mk262_Ball : BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1484,7 +1484,7 @@ class CfgAmmo }; class rhsammo_762x51_Ball : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1497,7 +1497,7 @@ class CfgAmmo }; class rhs_B_545x39_Ball : BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1510,7 +1510,7 @@ class CfgAmmo }; class rhs_B_545x39_Ball_Tracer_Green : BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1523,7 +1523,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M118_Special_Ball : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1536,7 +1536,7 @@ class CfgAmmo }; class rhs_B_762x54_Ball : BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1549,7 +1549,7 @@ class CfgAmmo }; class rhs_B_762x54_Ball_Tracer_Green : BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1562,7 +1562,7 @@ class CfgAmmo }; class rhs_B_762x39_Ball : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1575,7 +1575,7 @@ class CfgAmmo }; class rhs_B_762x39_Tracer : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1588,7 +1588,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M80_Ball : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1601,7 +1601,7 @@ class CfgAmmo }; class rhsusf_B_300winmag : BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1615,7 +1615,7 @@ class CfgAmmo class R3F_9x19_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1628,7 +1628,7 @@ class CfgAmmo }; class R3F_556x45_Ball: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -1641,7 +1641,7 @@ class CfgAmmo }; class R3F_762x51_Ball: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1654,7 +1654,7 @@ class CfgAmmo }; class R3F_762x51_Ball2: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1667,7 +1667,7 @@ class CfgAmmo }; class R3F_127x99_Ball: BulletBase { - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.310; ACE_bulletMass=647; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1680,7 +1680,7 @@ class CfgAmmo }; class R3F_127x99_Ball2: BulletBase { - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.310; ACE_bulletMass=647; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1694,7 +1694,7 @@ class CfgAmmo class CUP_B_545x39_Ball: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1707,7 +1707,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1720,7 +1720,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1733,7 +1733,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1746,7 +1746,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1759,7 +1759,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1772,7 +1772,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1785,7 +1785,7 @@ class CfgAmmo }; class B_762x39mm_KLT: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1798,7 +1798,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1811,7 +1811,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1824,7 +1824,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1837,7 +1837,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1850,7 +1850,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1863,7 +1863,7 @@ class CfgAmmo }; class CUP_B_9x19_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1876,7 +1876,7 @@ class CfgAmmo }; class CUP_B_762x51_noTracer: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1889,7 +1889,7 @@ class CfgAmmo }; class CUP_B_762x51_Red_Tracer_3RndBurst: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1902,7 +1902,7 @@ class CfgAmmo }; class CUP_B_762x51_White_Tracer_3RndBurst: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1915,7 +1915,7 @@ class CfgAmmo }; class CUP_B_303_Ball: BulletBase { - ACE_caliber=0.311; + ACE_caliber=0.007899; ACE_bulletLength=1.227; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1928,7 +1928,7 @@ class CfgAmmo }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1941,7 +1941,7 @@ class CfgAmmo }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1954,7 +1954,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1967,7 +1967,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1980,7 +1980,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1993,7 +1993,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2006,7 +2006,7 @@ class CfgAmmo }; class CUP_B_9x39_SP5: BulletBase { - ACE_caliber=0.364; + ACE_caliber=0.009246; ACE_bulletLength=1.24; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2019,7 +2019,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Green: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2032,7 +2032,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Red: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2045,7 +2045,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Yellow: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2058,7 +2058,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_White: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2071,7 +2071,7 @@ class CfgAmmo }; class B_127x107_Ball: BulletBase { - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2084,7 +2084,7 @@ class CfgAmmo }; class CUP_B_9x18_SD: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2097,7 +2097,7 @@ class CfgAmmo }; class CUP_B_765x17_Ball: BulletBase { - ACE_caliber=0.3125; + ACE_caliber=0.007938; ACE_bulletLength=0.610; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2110,7 +2110,7 @@ class CfgAmmo }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { - ACE_caliber=0.586; + ACE_caliber=0.014884; ACE_bulletLength=2.00; ACE_bulletMass=1010; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2123,7 +2123,7 @@ class CfgAmmo }; class CUP_B_127x99_Ball_White_Tracer: BulletBase { - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.310; ACE_bulletMass=647; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2136,7 +2136,7 @@ class CfgAmmo }; class CUP_B_86x70_Ball_noTracer: BulletBase { - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.70; ACE_bulletMass=300; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2150,7 +2150,7 @@ class CfgAmmo class VTN_9x18_Ball_FMJ: B_9x21_Ball { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2163,7 +2163,7 @@ class CfgAmmo }; class VTN_9x18_Ball_SC: VTN_9x18_Ball_FMJ { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2176,7 +2176,7 @@ class CfgAmmo }; class VTN_9x18_Ball_TRC: VTN_9x18_Ball_FMJ { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2189,7 +2189,7 @@ class CfgAmmo }; class VTN_9x18_Ball_AP1: VTN_9x18_Ball_FMJ { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2202,7 +2202,7 @@ class CfgAmmo }; class VTN_9x18_Ball_AP2: VTN_9x18_Ball_FMJ { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2215,7 +2215,7 @@ class CfgAmmo }; class VTN_9x18_Ball_PRS: VTN_9x18_Ball_FMJ { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2228,7 +2228,7 @@ class CfgAmmo }; class VTN_9x19_Ball_SC: VTN_9x18_Ball_FMJ { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2241,7 +2241,7 @@ class CfgAmmo }; class VTN_9x19_Ball_TRC: VTN_9x19_Ball_SC { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2254,7 +2254,7 @@ class CfgAmmo }; class VTN_9x19_Ball_AP: VTN_9x19_Ball_SC { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2267,7 +2267,7 @@ class CfgAmmo }; class VTN_9x19_Ball_PRS: VTN_9x19_Ball_SC { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2280,7 +2280,7 @@ class CfgAmmo }; class VTN_9x39_Ball_SC: B_9x21_Ball { - ACE_caliber=0.364; + ACE_caliber=0.009246; ACE_bulletLength=1.24; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2293,7 +2293,7 @@ class CfgAmmo }; class VTN_9x39_Ball_AP: VTN_9x39_Ball_SC { - ACE_caliber=0.364; + ACE_caliber=0.009246; ACE_bulletLength=1.24; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2306,7 +2306,7 @@ class CfgAmmo }; class VTN_545x39_Ball_SC: B_556x45_Ball { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2319,7 +2319,7 @@ class CfgAmmo }; class VTN_545x39_Ball_TRC: VTN_545x39_Ball_SC { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2332,7 +2332,7 @@ class CfgAmmo }; class VTN_545x39_Ball_AP: VTN_545x39_Ball_TRC { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2345,7 +2345,7 @@ class CfgAmmo }; class VTN_545x39_Ball_AP2: VTN_545x39_Ball_AP { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2358,7 +2358,7 @@ class CfgAmmo }; class VTN_545x39_Ball_SS: VTN_545x39_Ball_SC { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2371,7 +2371,7 @@ class CfgAmmo }; class VTN_762x39_Ball_SC: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2384,7 +2384,7 @@ class CfgAmmo }; class VTN_762x39_Ball_TRC: VTN_762x39_Ball_SC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2397,7 +2397,7 @@ class CfgAmmo }; class VTN_762x39_Ball_AP: VTN_762x39_Ball_TRC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2410,7 +2410,7 @@ class CfgAmmo }; class VTN_762x39_Ball_INC: VTN_762x39_Ball_AP { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2423,7 +2423,7 @@ class CfgAmmo }; class VTN_762x39_Ball_API: VTN_762x39_Ball_INC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2436,7 +2436,7 @@ class CfgAmmo }; class VTN_762x39_Ball_SS: VTN_762x39_Ball_SC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2449,7 +2449,7 @@ class CfgAmmo }; class VTN_762x41_Ball_SS: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=0.53; ACE_bulletMass=143; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2462,7 +2462,7 @@ class CfgAmmo }; class VTN_762x54_Ball_SC: VTN_762x39_Ball_SC { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2475,7 +2475,7 @@ class CfgAmmo }; class VTN_762x54_Ball_TRC: VTN_762x54_Ball_SC { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2488,7 +2488,7 @@ class CfgAmmo }; class VTN_762x54_Ball_AP: VTN_762x54_Ball_TRC { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2501,7 +2501,7 @@ class CfgAmmo }; class VTN_762x54_Ball_INC: VTN_762x54_Ball_AP { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2514,7 +2514,7 @@ class CfgAmmo }; class VTN_762x54_Ball_API: VTN_762x54_Ball_INC { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2527,7 +2527,7 @@ class CfgAmmo }; class VTN_145x114_Ball_APT: B_127x108_Ball { - ACE_caliber=0.586; + ACE_caliber=0.014884; ACE_bulletLength=2.00; ACE_bulletMass=1010; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2540,7 +2540,7 @@ class CfgAmmo }; class VTN_6mm_BB: B_65x39_Caseless { - ACE_caliber=0.24; + ACE_caliber=0.006096; ACE_bulletLength=0.24; ACE_bulletMass=6; ACE_ammoTempMuzzleVelocityShifts[]={}; @@ -2553,7 +2553,7 @@ class CfgAmmo }; class VTN_9x19_Ball_FMJ: B_9x21_Ball { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2566,7 +2566,7 @@ class CfgAmmo }; class VTN_556x45_Ball_FMJ: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2579,7 +2579,7 @@ class CfgAmmo }; class VTN_556x45_Ball_TRC: VTN_556x45_Ball_FMJ { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2592,7 +2592,7 @@ class CfgAmmo }; class VTN_556x45_Ball_TRCN: VTN_556x45_Ball_TRC { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2605,7 +2605,7 @@ class CfgAmmo }; class VTN_556x45_Ball_SC: VTN_556x45_Ball_FMJ { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2618,7 +2618,7 @@ class CfgAmmo }; class VTN_556x45_Ball_AP: VTN_556x45_Ball_TRC { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2631,7 +2631,7 @@ class CfgAmmo }; class VTN_556x45_Ball_INC: VTN_556x45_Ball_AP { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2644,7 +2644,7 @@ class CfgAmmo }; class VTN_556x45_Ball_LR: VTN_556x45_Ball_FMJ { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2657,7 +2657,7 @@ class CfgAmmo }; class VTN_556x45_Ball_SS: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2670,7 +2670,7 @@ class CfgAmmo }; class VTN_762x51_Ball_SC: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2683,7 +2683,7 @@ class CfgAmmo }; class VTN_762x51_Ball_TRC: VTN_762x51_Ball_SC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2696,7 +2696,7 @@ class CfgAmmo }; class VTN_762x51_Ball_TRCN: VTN_762x51_Ball_TRC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2709,7 +2709,7 @@ class CfgAmmo }; class VTN_762x51_Ball_AP: VTN_762x51_Ball_TRC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2722,7 +2722,7 @@ class CfgAmmo }; class VTN_762x51_Ball_LR: VTN_762x51_Ball_SC { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2735,7 +2735,7 @@ class CfgAmmo }; class VTN_1143x23_Ball_FMJ: B_408_Ball { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2748,7 +2748,7 @@ class CfgAmmo }; class VTN_1143x23_Ball_HP: VTN_1143x23_Ball_FMJ { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2761,7 +2761,7 @@ class CfgAmmo }; class VTN_1143x23_Ball_JHP: VTN_1143x23_Ball_FMJ { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2774,7 +2774,7 @@ class CfgAmmo }; class VTN_762x39_Ball_FMJ: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2787,7 +2787,7 @@ class CfgAmmo }; class VTN_45_Pellet: B_762x51_Ball { - ACE_caliber=0.22; + ACE_caliber=0.005588; ACE_bulletLength=0.23; ACE_bulletMass=3; ACE_ammoTempMuzzleVelocityShifts[]={}; diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 1dcd91bc23..32e52aef30 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class B_127x99_Ball; class CUP_B_545x39_Ball: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -18,7 +18,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -31,7 +31,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -44,7 +44,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -57,7 +57,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -70,7 +70,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -83,7 +83,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -96,7 +96,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -109,7 +109,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -122,7 +122,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -135,7 +135,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -148,7 +148,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -161,7 +161,7 @@ class CfgAmmo }; class CUP_B_9x19_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -174,7 +174,7 @@ class CfgAmmo }; class CUP_B_762x51_noTracer: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -187,7 +187,7 @@ class CfgAmmo }; class CUP_B_303_Ball: BulletBase { - ACE_caliber=0.311; + ACE_caliber=0.007899; ACE_bulletLength=1.227; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -200,7 +200,7 @@ class CfgAmmo }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -213,7 +213,7 @@ class CfgAmmo }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -226,7 +226,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -239,7 +239,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -252,7 +252,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -265,7 +265,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -278,7 +278,7 @@ class CfgAmmo }; class CUP_B_9x39_SP5: BulletBase { - ACE_caliber=0.364; + ACE_caliber=0.009246; ACE_bulletLength=1.24; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -291,7 +291,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Green: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -304,7 +304,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Red: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -317,7 +317,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Yellow: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -330,7 +330,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_White: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -343,7 +343,7 @@ class CfgAmmo }; class B_127x107_Ball: BulletBase { - ACE_caliber=0.511; + ACE_caliber=0.012979; ACE_bulletLength=2.520; ACE_bulletMass=745; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -356,7 +356,7 @@ class CfgAmmo }; class CUP_B_9x18_SD: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -369,7 +369,7 @@ class CfgAmmo }; class CUP_B_765x17_Ball: BulletBase { - ACE_caliber=0.3125; + ACE_caliber=0.007938; ACE_bulletLength=0.610; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -382,7 +382,7 @@ class CfgAmmo }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { - ACE_caliber=0.586; + ACE_caliber=0.014884; ACE_bulletLength=2.00; ACE_bulletMass=1010; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -395,7 +395,7 @@ class CfgAmmo }; class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.310; ACE_bulletMass=647; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -408,7 +408,7 @@ class CfgAmmo }; class CUP_B_86x70_Ball_noTracer: BulletBase { - ACE_caliber=0.338; + ACE_caliber=0.008585; ACE_bulletLength=1.70; ACE_bulletMass=300; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp index 7259d2da3d..6d0e36f0d3 100644 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ b/optionals/compat_hlcmods_core/CfgAmmo.hpp @@ -8,7 +8,7 @@ class CfgAmmo class HLC_762x51_ball; class HLC_556NATO_EPR: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -21,7 +21,7 @@ class CfgAmmo }; class HLC_556NATO_SOST: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -34,7 +34,7 @@ class CfgAmmo }; class HLC_556NATO_SPR: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -47,7 +47,7 @@ class CfgAmmo }; class HLC_300Blackout_Ball: B_556x45_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.118; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -60,7 +60,7 @@ class CfgAmmo }; class HLC_300Blackout_SMK: HLC_300Blackout_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -73,7 +73,7 @@ class CfgAmmo }; class HLC_762x39_Ball: HLC_300Blackout_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -86,7 +86,7 @@ class CfgAmmo }; class HLC_762x39_Tracer: HLC_762x39_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -99,7 +99,7 @@ class CfgAmmo }; class HLC_762x51_MK316_20in: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -112,7 +112,7 @@ class CfgAmmo }; class HLC_762x51_BTSub: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.340; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -125,7 +125,7 @@ class CfgAmmo }; class HLC_762x54_ball: HLC_762x51_ball { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -138,7 +138,7 @@ class CfgAmmo }; class HLC_762x54_tracer: HLC_762x51_tracer { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -151,7 +151,7 @@ class CfgAmmo }; class HLC_303Brit_B: B_556x45_Ball { - ACE_caliber=0.311; + ACE_caliber=0.007899; ACE_bulletLength=1.227; ACE_bulletMass=174; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -164,7 +164,7 @@ class CfgAmmo }; class HLC_792x57_Ball: HLC_303Brit_B { - ACE_caliber=0.318; + ACE_caliber=0.008077; ACE_bulletLength=1.128; ACE_bulletMass=196; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -183,7 +183,7 @@ class CfgAmmo }; class FH_545x39_Ball: B_556x45_Ball { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -203,7 +203,7 @@ class CfgAmmo }; class HLC_57x28mm_JHP: FH_545x39_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.495; ACE_bulletMass=28; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -216,7 +216,7 @@ class CfgAmmo }; class HLC_9x19_Ball: B_556x45_Ball { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -229,7 +229,7 @@ class CfgAmmo }; class HLC_9x19_M882_SMG: B_556x45_Ball { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -250,7 +250,7 @@ class CfgAmmo }; class HLC_10mm_FMJ: HLC_9x19_Ball { - ACE_caliber=0.5; + ACE_caliber=0.0127; ACE_bulletLength=0.764; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -263,7 +263,7 @@ class CfgAmmo }; class HLC_45ACP_Ball: B_556x45_Ball { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -276,7 +276,7 @@ class CfgAmmo }; class FH_44Mag: HLC_45ACP_Ball { - ACE_caliber=0.429; + ACE_caliber=0.010897; ACE_bulletLength=0.804; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -289,7 +289,7 @@ class CfgAmmo }; class FH_50BMG_SLAP: B_127x99_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.25; ACE_bulletMass=350; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -302,7 +302,7 @@ class CfgAmmo }; class FH_50BMG_Raufoss: B_127x99_Ball { - ACE_caliber=0.510; + ACE_caliber=0.012954; ACE_bulletLength=2.380; ACE_bulletMass=660; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; diff --git a/optionals/compat_rh_de/CfgAmmo.hpp b/optionals/compat_rh_de/CfgAmmo.hpp index b66b55f530..d57daad303 100644 --- a/optionals/compat_rh_de/CfgAmmo.hpp +++ b/optionals/compat_rh_de/CfgAmmo.hpp @@ -4,7 +4,7 @@ class CfgAmmo class BulletBase; class RH_50_AE_Ball: BulletBase { - ACE_caliber=0.5; + ACE_caliber=0.0127; ACE_bulletLength=1.110; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -17,7 +17,7 @@ class CfgAmmo }; class RH_454_Casull: BulletBase { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.895; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -30,7 +30,7 @@ class CfgAmmo }; class RH_32ACP: BulletBase { - ACE_caliber=0.3125; + ACE_caliber=0.007938; ACE_bulletLength=0.610; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -43,7 +43,7 @@ class CfgAmmo }; class RH_45ACP: BulletBase { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -56,7 +56,7 @@ class CfgAmmo }; class RH_B_40SW: BulletBase { - ACE_caliber=0.4; + ACE_caliber=0.01016; ACE_bulletLength=0.447; ACE_bulletMass=135; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -69,7 +69,7 @@ class CfgAmmo }; class RH_44mag_ball: BulletBase { - ACE_caliber=0.429; + ACE_caliber=0.010897; ACE_bulletLength=0.804; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -82,7 +82,7 @@ class CfgAmmo }; class RH_357mag_ball: BulletBase { - ACE_caliber=0.357; + ACE_caliber=0.009068; ACE_bulletLength=0.541; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -95,7 +95,7 @@ class CfgAmmo }; class RH_762x25: BulletBase { - ACE_caliber=0.310; + ACE_caliber=0.007874; ACE_bulletLength=0.5455; ACE_bulletMass=86; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -108,7 +108,7 @@ class CfgAmmo }; class RH_9x18_Ball: BulletBase { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -121,7 +121,7 @@ class CfgAmmo }; class RH_B_9x19_Ball: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -134,7 +134,7 @@ class CfgAmmo }; class RH_B_22LR_SD: BulletBase { - ACE_caliber=0.223; + ACE_caliber=0.005664; ACE_bulletLength=0.45; ACE_bulletMass=38; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -147,7 +147,7 @@ class CfgAmmo }; class RH_57x28mm: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.495; ACE_bulletMass=28; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/optionals/compat_rh_m4/CfgAmmo.hpp b/optionals/compat_rh_m4/CfgAmmo.hpp index c15e0e503a..44ed3493d0 100644 --- a/optionals/compat_rh_m4/CfgAmmo.hpp +++ b/optionals/compat_rh_m4/CfgAmmo.hpp @@ -10,7 +10,7 @@ class CfgAmmo { class RH_9x19_B_M822: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -23,7 +23,7 @@ class CfgAmmo { }; class RH_9x19_B_HP: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -36,7 +36,7 @@ class CfgAmmo { }; class RH_9x19_B_HPSB: BulletBase { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.603; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -49,7 +49,7 @@ class CfgAmmo { }; class RH_556x45_B_M855A1: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -62,7 +62,7 @@ class CfgAmmo { }; class RH_556x45_B_Mk318: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -75,7 +75,7 @@ class CfgAmmo { }; class RH_556x45_B_Mk262: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -88,7 +88,7 @@ class CfgAmmo { }; class RH_68x43_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.277; + ACE_caliber=0.007036; ACE_bulletLength=0.959; ACE_bulletMass=115; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -101,7 +101,7 @@ class CfgAmmo { }; class RH_68x43_B_Match: B_65x39_Caseless { - ACE_caliber=0.277; + ACE_caliber=0.007036; ACE_bulletLength=1.250; ACE_bulletMass=135; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -114,7 +114,7 @@ class CfgAmmo { }; class RH_762x35_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.118; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -127,7 +127,7 @@ class CfgAmmo { }; class RH_762x35_B_Match: B_65x39_Caseless { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.153; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -140,7 +140,7 @@ class CfgAmmo { }; class RH_762x35_B_MSB: B_65x39_Caseless { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -153,7 +153,7 @@ class CfgAmmo { }; class RH_762x51_B_M80A1: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -166,7 +166,7 @@ class CfgAmmo { }; class RH_762x51_B_Mk316LR: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -179,7 +179,7 @@ class CfgAmmo { }; class RH_762x51_B_Mk319: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=130; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -192,7 +192,7 @@ class CfgAmmo { }; class RH_762x51_B_LFMJSB: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.340; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/optionals/compat_rh_pdw/CfgAmmo.hpp b/optionals/compat_rh_pdw/CfgAmmo.hpp index 706344ff8c..4aad0f4614 100644 --- a/optionals/compat_rh_pdw/CfgAmmo.hpp +++ b/optionals/compat_rh_pdw/CfgAmmo.hpp @@ -2,7 +2,7 @@ class BulletBase; class RH_B_6x35: BulletBase { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.445; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 323634f02c..1eabe3969d 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class B_556x45_Ball; class rhs_B_545x39_Ball: B_556x45_Ball { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -18,7 +18,7 @@ class CfgAmmo }; class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { - ACE_caliber=0.220; + ACE_caliber=0.005588; ACE_bulletLength=0.85; ACE_bulletMass=49.8; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -32,7 +32,7 @@ class CfgAmmo class B_762x51_Ball; class rhs_B_762x54_Ball: B_762x51_Ball { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -45,7 +45,7 @@ class CfgAmmo }; class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=149; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -58,7 +58,7 @@ class CfgAmmo }; class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { - ACE_caliber=0.312; + ACE_caliber=0.007925; ACE_bulletLength=1.14; ACE_bulletMass=152; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -71,7 +71,7 @@ class CfgAmmo }; class rhs_B_762x39_Ball: B_762x51_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -84,7 +84,7 @@ class CfgAmmo }; class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=117; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -98,7 +98,7 @@ class CfgAmmo class B_9x21_Ball; class rhs_B_9x19_7N21: B_9x21_Ball { - ACE_caliber=0.355; + ACE_caliber=0.009017; ACE_bulletLength=0.610; ACE_bulletMass=80.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -111,7 +111,7 @@ class CfgAmmo }; class rhs_B_9x18_57N181S: B_9x21_Ball { - ACE_caliber=0.365; + ACE_caliber=0.009271; ACE_bulletLength=0.610; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 68a8c8f7fd..9a81abd2c3 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -4,7 +4,7 @@ class CfgAmmo class BulletBase; class rhsusf_B_300winmag: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.489; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -18,7 +18,7 @@ class CfgAmmo class B_556x45_Ball; class rhs_ammo_556x45_Mk318_Ball: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -31,7 +31,7 @@ class CfgAmmo }; class rhs_ammo_556x45_Mk262_Ball: B_556x45_Ball { - ACE_caliber=0.224; + ACE_caliber=0.00569; ACE_bulletLength=0.906; ACE_bulletMass=77; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -44,7 +44,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M80_Ball: BulletBase { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.14; ACE_bulletMass=146; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -57,7 +57,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M118_Special_Ball: rhs_ammo_762x51_M80_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -70,7 +70,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M993_Ball: rhs_ammo_762x51_M80_Ball { - ACE_caliber=0.308; + ACE_caliber=0.007823; ACE_bulletLength=1.24; ACE_bulletMass=127; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -83,7 +83,7 @@ class CfgAmmo }; class rhs_ammo_45ACP_MHP: BulletBase { - ACE_caliber=0.452; + ACE_caliber=0.011481; ACE_bulletLength=0.68; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; From b20c42398b0e88dc590dd0eeb768cef649e89184 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:27:40 +0200 Subject: [PATCH 0043/1101] Convert ACE_bulletLength to meters --- .../functions/fnc_handleFired.sqf | 2 +- addons/ballistics/CfgAmmo.hpp | 92 ++-- extras/CfgAmmoReference.hpp | 410 +++++++++--------- optionals/compat_cup/CfgAmmo.hpp | 64 +-- optionals/compat_hlcmods_core/CfgAmmo.hpp | 44 +- optionals/compat_rh_de/CfgAmmo.hpp | 24 +- optionals/compat_rh_m4/CfgAmmo.hpp | 30 +- optionals/compat_rh_pdw/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 18 +- optionals/compat_rhs_usf3/CfgAmmo.hpp | 14 +- 10 files changed, 350 insertions(+), 350 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 20235d2489..941a4c8284 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -92,7 +92,7 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { }; _caliber = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); -_bulletLength = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); +_bulletLength = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); _bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); _barrelTwist = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); _stabilityFactor = 1.5; diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 7d3e83230d..6486854f38 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -26,7 +26,7 @@ class CfgAmmo { tracerStartTime = 0.073; //M856 tracer burns out to 800m tracerEndTime = 1.579; //Time in seconds calculated with ballistics calculator ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -43,7 +43,7 @@ class CfgAmmo { hit=11; typicalSpeed=836; ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -60,7 +60,7 @@ class CfgAmmo { hit=9; typicalSpeed=886; ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -77,7 +77,7 @@ class CfgAmmo { hit=6; typicalSpeed=886; ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=46; 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.151}; @@ -98,7 +98,7 @@ class CfgAmmo { hit=7; typicalSpeed=880; ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -118,7 +118,7 @@ class CfgAmmo { tracerStartTime = 0.073; //7T3M tracer burns out to 850m tracerEndTime = 1.736; //Time in seconds calculated with ballistics calculator ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -132,7 +132,7 @@ class CfgAmmo { airFriction=-0.000785; typicalSpeed=800; ACE_caliber=0.006706; - ACE_bulletLength=1.295; + ACE_bulletLength=0.032893; ACE_bulletMass=123; 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.263}; @@ -155,7 +155,7 @@ class CfgAmmo { typicalSpeed=820 ; caliber=0.9; ACE_caliber=0.006706; - ACE_bulletLength=1.364; + ACE_bulletLength=0.034646; ACE_bulletMass=139; 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.290}; @@ -170,7 +170,7 @@ class CfgAmmo { typicalSpeed=860 ; caliber=1.1; ACE_caliber=0.006706; - ACE_bulletLength=1.426; + ACE_bulletLength=0.03622; ACE_bulletMass=140; 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.317}; @@ -187,7 +187,7 @@ class CfgAmmo { tracerStartTime = 0.073; //Based on the British L5A1 which burns out to 1000m tracerEndTime = 2.058; //Time in seconds calculated with ballistics calculator ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -207,7 +207,7 @@ class CfgAmmo { hit=16; typicalSpeed=790; ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.243}; @@ -223,7 +223,7 @@ class CfgAmmo { hit=16; typicalSpeed=790; ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.243}; @@ -239,7 +239,7 @@ class CfgAmmo { hit=14; typicalSpeed=900; ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=130; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; @@ -255,7 +255,7 @@ class CfgAmmo { hit=11; typicalSpeed=930; ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=127; 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.377}; @@ -271,7 +271,7 @@ class CfgAmmo { hit=6; typicalSpeed=320; ACE_caliber=0.007823; - ACE_bulletLength=1.340; + ACE_bulletLength=0.034036; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -287,7 +287,7 @@ class CfgAmmo { caliber=2.0; hit=10; ACE_caliber=0.007823; - ACE_bulletLength=1.21; + ACE_bulletLength=0.030734; ACE_bulletMass=174; 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.494}; @@ -303,7 +303,7 @@ class CfgAmmo { caliber=2.1; hit=8; ACE_caliber=0.007214; - ACE_bulletLength=1.529; + ACE_bulletLength=0.038837; ACE_bulletMass=180; 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.345}; @@ -319,7 +319,7 @@ class CfgAmmo { caliber=2.3; hit=6; ACE_caliber=0.006172; - ACE_bulletLength=1.282; + ACE_bulletLength=0.032563; ACE_bulletMass=180; 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.278}; @@ -335,7 +335,7 @@ class CfgAmmo { hit=17; typicalSpeed=900; ACE_caliber=0.007823; - ACE_bulletLength=1.353; + ACE_bulletLength=0.034366; ACE_bulletMass=190; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.268}; @@ -351,7 +351,7 @@ class CfgAmmo { hit=18; typicalSpeed=867; ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.310}; @@ -367,7 +367,7 @@ class CfgAmmo { hit=19; typicalSpeed=853; ACE_caliber=0.007823; - ACE_bulletLength=1.602; + ACE_bulletLength=0.040691; ACE_bulletMass=230; 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.368}; @@ -381,7 +381,7 @@ class CfgAmmo { airFriction=-0.001023; typicalSpeed=820; ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -397,7 +397,7 @@ class CfgAmmo { hit=15; typicalSpeed=820; ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -416,7 +416,7 @@ class CfgAmmo { tracerStartTime = 0.073; //Based on the 7T2 which burns three seconds tracerEndTime = 3; ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -432,7 +432,7 @@ class CfgAmmo { hit=11; typicalSpeed=790; ACE_caliber=0.007823; - ACE_bulletLength=1.153; + ACE_bulletLength=0.029286; ACE_bulletMass=125; 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.349, 0.338, 0.330, 0.310}; @@ -448,7 +448,7 @@ class CfgAmmo { caliber=1.5; typicalSpeed=716; ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -466,7 +466,7 @@ class CfgAmmo { tracerStartTime = 0.073; //57N231P tracer burns out to 800m tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -481,7 +481,7 @@ class CfgAmmo { typicalSpeed=390; hit=6; ACE_caliber=0.009042; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=115; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -496,7 +496,7 @@ class CfgAmmo { airFriction=-0.001234; typicalSpeed=298; ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -511,7 +511,7 @@ class CfgAmmo { typicalSpeed=370; hit=6; ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -526,7 +526,7 @@ class CfgAmmo { typicalSpeed=425; hit=7; ACE_caliber=0.0127; - ACE_bulletLength=0.764; + ACE_bulletLength=0.019406; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -541,7 +541,7 @@ class CfgAmmo { typicalSpeed=282; hit=7; ACE_caliber=0.007938; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -556,7 +556,7 @@ class CfgAmmo { typicalSpeed=761; caliber=2.0; ACE_caliber=0.007899; - ACE_bulletLength=1.227; + ACE_bulletLength=0.031166; ACE_bulletMass=174; 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.499, 0.493, 0.48}; @@ -570,7 +570,7 @@ class CfgAmmo { airFriction=-0.00106; typicalSpeed=880; ACE_caliber=0.009296; - ACE_bulletLength=1.350; + ACE_bulletLength=0.03429; ACE_bulletMass=230; 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.368}; @@ -585,7 +585,7 @@ class CfgAmmo { airFriction=-0.000395; typicalSpeed=910; ACE_caliber=0.010363; - ACE_bulletLength=2.126; + ACE_bulletLength=0.054; ACE_bulletMass=410; ACE_transonicStabilityCoef=1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -599,7 +599,7 @@ class CfgAmmo { class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; ACE_caliber=0.010566; - ACE_bulletLength=2.089; + ACE_bulletLength=0.053061; ACE_bulletMass=398; 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.72}; @@ -614,7 +614,7 @@ class CfgAmmo { airFriction=-0.000606; typicalSpeed=915; ACE_caliber=0.008585; - ACE_bulletLength=1.558; + ACE_bulletLength=0.039573; ACE_bulletMass=250; 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.322}; @@ -628,7 +628,7 @@ class CfgAmmo { airFriction=-0.000537; typicalSpeed=820; ACE_caliber=0.008585; - ACE_bulletLength=1.70; + ACE_bulletLength=0.04318; ACE_bulletMass=300; 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.381}; @@ -643,7 +643,7 @@ class CfgAmmo { airFriction=-0.000535; typicalSpeed=826; ACE_caliber=0.008585; - ACE_bulletLength=1.70; + ACE_bulletLength=0.04318; ACE_bulletMass=300; 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.381}; @@ -659,7 +659,7 @@ class CfgAmmo { caliber=2.8; typicalSpeed=826; ACE_caliber=0.008585; - ACE_bulletLength=1.535; + ACE_bulletLength=0.038989; ACE_bulletMass=253; 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.290}; @@ -673,7 +673,7 @@ class CfgAmmo { airFriction=-0.00014; typicalSpeed=300; ACE_caliber=0.012954; - ACE_bulletLength=2.540; + ACE_bulletLength=0.064516; ACE_bulletMass=750; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={1.050}; @@ -688,7 +688,7 @@ class CfgAmmo { airFriction=-0.0006; typicalSpeed=900; ACE_caliber=0.012954; - ACE_bulletLength=2.310; + ACE_bulletLength=0.058674; ACE_bulletMass=647; 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.670}; @@ -705,7 +705,7 @@ class CfgAmmo { hit=25; caliber=4.0; ACE_caliber=0.012954; - ACE_bulletLength=2.310; + ACE_bulletLength=0.058674; ACE_bulletMass=648; 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.670}; @@ -721,7 +721,7 @@ class CfgAmmo { typicalSpeed=860; caliber=3.0; ACE_caliber=0.012954; - ACE_bulletLength=2.540; + ACE_bulletLength=0.064516; ACE_bulletMass=750; 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[]={1.050}; @@ -736,7 +736,7 @@ class CfgAmmo { airFriction=-0.00064; typicalSpeed=820; ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -750,7 +750,7 @@ class CfgAmmo { airFriction=-0.0007182; typicalSpeed=250; ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp index 5a7e9302cf..de8429036f 100644 --- a/extras/CfgAmmoReference.hpp +++ b/extras/CfgAmmoReference.hpp @@ -6,7 +6,7 @@ class CfgAmmo hit=8; typicalSpeed=750; ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -23,7 +23,7 @@ class CfgAmmo hit=11; typicalSpeed=836; ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -40,7 +40,7 @@ class CfgAmmo hit=9; typicalSpeed=886; ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -61,7 +61,7 @@ class CfgAmmo hit=7; typicalSpeed=880; ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -79,7 +79,7 @@ class CfgAmmo hit=7; typicalSpeed=883; ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -93,7 +93,7 @@ class CfgAmmo airFriction=-0.000785; typicalSpeed=800; ACE_caliber=0.006706; - ACE_bulletLength=1.295; + ACE_bulletLength=0.032893; ACE_bulletMass=123; 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.263}; @@ -116,7 +116,7 @@ class CfgAmmo airFriction=-0.00078; typicalSpeed=820 ; ACE_caliber=0.006706; - ACE_bulletLength=1.364; + ACE_bulletLength=0.034646; ACE_bulletMass=139; 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.290}; @@ -131,7 +131,7 @@ class CfgAmmo typicalSpeed=833; hit=9; ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -151,7 +151,7 @@ class CfgAmmo hit=16; typicalSpeed=790; ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.243}; @@ -167,7 +167,7 @@ class CfgAmmo hit=14; typicalSpeed=890; ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=130; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; @@ -183,7 +183,7 @@ class CfgAmmo hit=6; typicalSpeed=790; ACE_caliber=0.007823; - ACE_bulletLength=1.340; + ACE_bulletLength=0.034036; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -199,7 +199,7 @@ class CfgAmmo hit=17; typicalSpeed=900; ACE_caliber=0.007823; - ACE_bulletLength=1.353; + ACE_bulletLength=0.034366; ACE_bulletMass=190; 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.268}; @@ -215,7 +215,7 @@ class CfgAmmo hit=18; typicalSpeed=867; ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.310}; @@ -231,7 +231,7 @@ class CfgAmmo hit=19; typicalSpeed=853; ACE_caliber=0.007823; - ACE_bulletLength=1.602; + ACE_bulletLength=0.040691; ACE_bulletMass=230; 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.368}; @@ -245,7 +245,7 @@ class CfgAmmo airFriction=-0.001023; typicalSpeed=820; ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -261,7 +261,7 @@ class CfgAmmo hit=15; typicalSpeed=820; ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -278,7 +278,7 @@ class CfgAmmo hit=15; typicalSpeed=800; ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -294,7 +294,7 @@ class CfgAmmo hit=11; typicalSpeed=790; ACE_caliber=0.007823; - ACE_bulletLength=1.153; + ACE_bulletLength=0.029286; ACE_bulletMass=125; 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.349, 0.338, 0.330, 0.310}; @@ -309,7 +309,7 @@ class CfgAmmo hit=12; typicalSpeed=716; ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -324,7 +324,7 @@ class CfgAmmo hit=12; typicalSpeed=716; ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -339,7 +339,7 @@ class CfgAmmo typicalSpeed=390; hit=6; ACE_caliber=0.009042; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=115; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -354,7 +354,7 @@ class CfgAmmo airFriction=-0.001234; typicalSpeed=298; ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -369,7 +369,7 @@ class CfgAmmo typicalSpeed=370; hit=6; ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -384,7 +384,7 @@ class CfgAmmo typicalSpeed=425; hit=7; ACE_caliber=0.0127; - ACE_bulletLength=0.764; + ACE_bulletLength=0.019406; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -399,7 +399,7 @@ class CfgAmmo typicalSpeed=282; hit=7; ACE_caliber=0.007938; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -413,7 +413,7 @@ class CfgAmmo airFriction=-0.00083; typicalSpeed=761; ACE_caliber=0.007899; - ACE_bulletLength=1.227; + ACE_bulletLength=0.031166; ACE_bulletMass=174; 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.499, 0.493, 0.48}; @@ -427,7 +427,7 @@ class CfgAmmo airFriction=-0.00106; typicalSpeed=880; ACE_caliber=0.009296; - ACE_bulletLength=1.350; + ACE_bulletLength=0.03429; ACE_bulletMass=230; ACE_transonicStabilityCoef=1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -443,7 +443,7 @@ class CfgAmmo airFriction=-0.000395; typicalSpeed=910; ACE_caliber=0.010363; - ACE_bulletLength=2.126; + ACE_bulletLength=0.054; ACE_bulletMass=410; ACE_transonicStabilityCoef=1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -457,7 +457,7 @@ class CfgAmmo class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; ACE_caliber=0.010566; - ACE_bulletLength=2.089; + ACE_bulletLength=0.053061; ACE_bulletMass=398; 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.72}; @@ -472,7 +472,7 @@ class CfgAmmo airFriction=-0.000606; typicalSpeed=915; ACE_caliber=0.008585; - ACE_bulletLength=1.558; + ACE_bulletLength=0.039573; ACE_bulletMass=250; 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.322}; @@ -486,7 +486,7 @@ class CfgAmmo airFriction=-0.000537; typicalSpeed=820; ACE_caliber=0.008585; - ACE_bulletLength=1.70; + ACE_bulletLength=0.04318; ACE_bulletMass=300; 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.381}; @@ -502,7 +502,7 @@ class CfgAmmo caliber=1.55; typicalSpeed=826; ACE_caliber=0.008585; - ACE_bulletLength=1.70; + ACE_bulletLength=0.04318; ACE_bulletMass=300; 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.381}; @@ -518,7 +518,7 @@ class CfgAmmo caliber=2.4; typicalSpeed=826; ACE_caliber=0.008585; - ACE_bulletLength=1.535; + ACE_bulletLength=0.038989; ACE_bulletMass=253; 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.290}; @@ -532,7 +532,7 @@ class CfgAmmo airFriction=-0.00014; typicalSpeed=300; ACE_caliber=0.012954; - ACE_bulletLength=2.540; + ACE_bulletLength=0.064516; ACE_bulletMass=750; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={1.050}; @@ -547,7 +547,7 @@ class CfgAmmo airFriction=-0.0006; typicalSpeed=853; ACE_caliber=0.012954; - ACE_bulletLength=2.310; + ACE_bulletLength=0.058674; ACE_bulletMass=647; 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.670}; @@ -562,7 +562,7 @@ class CfgAmmo airFriction=-0.000374; typicalSpeed=860; ACE_caliber=0.012954; - ACE_bulletLength=2.540; + ACE_bulletLength=0.064516; ACE_bulletMass=750; 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[]={1.050}; @@ -577,7 +577,7 @@ class CfgAmmo airFriction=-0.00064; typicalSpeed=820; ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -591,7 +591,7 @@ class CfgAmmo airFriction=-0.0007182; typicalSpeed=250; ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -605,7 +605,7 @@ class CfgAmmo class TMR_B_762x51_M118LR : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -619,7 +619,7 @@ class CfgAmmo class RH_50_AE_Ball: BulletBase { ACE_caliber=0.0127; - ACE_bulletLength=1.110; + ACE_bulletLength=0.028194; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.228}; @@ -632,7 +632,7 @@ class CfgAmmo class RH_454_Casull: BulletBase { ACE_caliber=0.011481; - ACE_bulletLength=0.895; + ACE_bulletLength=0.022733; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.171}; @@ -645,7 +645,7 @@ class CfgAmmo class RH_32ACP: BulletBase { ACE_caliber=0.007938; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -658,7 +658,7 @@ class CfgAmmo class RH_45ACP: BulletBase { ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -671,7 +671,7 @@ class CfgAmmo class RH_B_40SW: BulletBase { ACE_caliber=0.01016; - ACE_bulletLength=0.447; + ACE_bulletLength=0.011354; ACE_bulletMass=135; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.105, 0.115, 0.120, 0.105}; @@ -684,7 +684,7 @@ class CfgAmmo class RH_44mag_ball: BulletBase { ACE_caliber=0.010897; - ACE_bulletLength=0.804; + ACE_bulletLength=0.020422; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; @@ -697,7 +697,7 @@ class CfgAmmo class RH_357mag_ball: BulletBase { ACE_caliber=0.009068; - ACE_bulletLength=0.541; + ACE_bulletLength=0.013741; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.148}; @@ -710,7 +710,7 @@ class CfgAmmo class RH_762x25: BulletBase { ACE_caliber=0.007874; - ACE_bulletLength=0.5455; + ACE_bulletLength=0.013856; ACE_bulletMass=86; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -723,7 +723,7 @@ class CfgAmmo class RH_9x18_Ball: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -736,7 +736,7 @@ class CfgAmmo class RH_B_9x19_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -749,7 +749,7 @@ class CfgAmmo class RH_B_22LR_SD: BulletBase { ACE_caliber=0.005664; - ACE_bulletLength=0.45; + ACE_bulletLength=0.01143; ACE_bulletMass=38; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.111}; @@ -762,7 +762,7 @@ class CfgAmmo class RH_57x28mm: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.495; + ACE_bulletLength=0.012573; ACE_bulletMass=28; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; @@ -776,7 +776,7 @@ class CfgAmmo class RH_9x19_B_M822: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -789,7 +789,7 @@ class CfgAmmo class RH_9x19_B_HP: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -802,7 +802,7 @@ class CfgAmmo class RH_9x19_B_HPSB: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.603; + ACE_bulletLength=0.015316; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.212}; @@ -815,7 +815,7 @@ class CfgAmmo class RH_B_6x35: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.445; + ACE_bulletLength=0.011303; ACE_bulletMass=65; 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.26}; @@ -828,7 +828,7 @@ class CfgAmmo class RH_556x45_B_M855A1 : B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.152}; @@ -841,7 +841,7 @@ class CfgAmmo class RH_556x45_B_Mk262 : B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -854,7 +854,7 @@ class CfgAmmo class RH_556x45_B_Mk318 : B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -867,7 +867,7 @@ class CfgAmmo class RH_68x43_B_FMJ: B_65x39_Caseless { ACE_caliber=0.007036; - ACE_bulletLength=0.959; + ACE_bulletLength=0.024359; ACE_bulletMass=115; 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.162}; @@ -880,7 +880,7 @@ class CfgAmmo class RH_68x43_B_Match: B_65x39_Caseless { ACE_caliber=0.007036; - ACE_bulletLength=1.250; + ACE_bulletLength=0.03175; ACE_bulletMass=135; 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.253}; @@ -893,7 +893,7 @@ class CfgAmmo class RH_762x35_B_FMJ: B_65x39_Caseless { ACE_caliber=0.007823; - ACE_bulletLength=1.118; + ACE_bulletLength=0.028397; ACE_bulletMass=147; 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.398}; @@ -906,7 +906,7 @@ class CfgAmmo class RH_762x35_B_Match: B_65x39_Caseless { ACE_caliber=0.007823; - ACE_bulletLength=1.153; + ACE_bulletLength=0.029286; ACE_bulletMass=125; 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.349, 0.338, 0.330, 0.310}; @@ -919,7 +919,7 @@ class CfgAmmo class RH_762x35_B_MSB: B_65x39_Caseless { ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.608}; @@ -932,7 +932,7 @@ class CfgAmmo class RH_762x51_B_M80A1 : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -945,7 +945,7 @@ class CfgAmmo class RH_762x51_B_Mk316LR : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.243}; @@ -958,7 +958,7 @@ class CfgAmmo class RH_762x51_B_Mk319 : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.074; + ACE_bulletLength=0.02728; ACE_bulletMass=130; 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.277}; @@ -971,7 +971,7 @@ class CfgAmmo class RH_762x51_B_LFMJSB: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.340; + ACE_bulletLength=0.034036; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.252}; @@ -985,7 +985,7 @@ class CfgAmmo class HLC_556NATO_SOST: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -998,7 +998,7 @@ class CfgAmmo class HLC_556NATO_SPR: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -1011,7 +1011,7 @@ class CfgAmmo class HLC_556NATO_EPR: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.152}; @@ -1024,7 +1024,7 @@ class CfgAmmo class HLC_300Blackout_Ball: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.118; + ACE_bulletLength=0.028397; ACE_bulletMass=147; 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.398}; @@ -1037,7 +1037,7 @@ class CfgAmmo class HLC_300Blackout_SMK: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.608}; @@ -1050,7 +1050,7 @@ class CfgAmmo class HLC_762x51_BTSub: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.340; + ACE_bulletLength=0.034036; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -1063,7 +1063,7 @@ class CfgAmmo class HLC_762x54_ball: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -1076,7 +1076,7 @@ class CfgAmmo class HLC_762x54_tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -1089,7 +1089,7 @@ class CfgAmmo class HLC_303Brit_B: BulletBase { ACE_caliber=0.007899; - ACE_bulletLength=1.227; + ACE_bulletLength=0.031166; ACE_bulletMass=174; 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.499, 0.493, 0.48}; @@ -1102,7 +1102,7 @@ class CfgAmmo class HLC_792x57_Ball: BulletBase { ACE_caliber=0.008077; - ACE_bulletLength=1.128; + ACE_bulletLength=0.028651; ACE_bulletMass=196; 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.315}; @@ -1115,7 +1115,7 @@ class CfgAmmo class FH_545x39_Ball: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -1135,7 +1135,7 @@ class CfgAmmo class HLC_9x19_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1156,7 +1156,7 @@ class CfgAmmo class HLC_10mm_FMJ: HLC_9x19_Ball { ACE_caliber=0.0127; - ACE_bulletLength=0.764; + ACE_bulletLength=0.019406; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -1169,7 +1169,7 @@ class CfgAmmo class HLC_9x19_M882_SMG: HLC_9x19_Ball { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1183,7 +1183,7 @@ class CfgAmmo class M_mas_545x39_Ball_7N6M : BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -1196,7 +1196,7 @@ class CfgAmmo class M_mas_545x39_Ball_7T3M : BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -1209,7 +1209,7 @@ class CfgAmmo class B_mas_556x45_Ball_Mk262 : B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -1222,7 +1222,7 @@ class CfgAmmo class B_mas_9x18_Ball_57N181S : BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1235,7 +1235,7 @@ class CfgAmmo class B_mas_9x21p_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1248,7 +1248,7 @@ class CfgAmmo class B_mas_9x21_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1261,7 +1261,7 @@ class CfgAmmo class B_mas_9x21d_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1274,7 +1274,7 @@ class CfgAmmo class B_mas_765x17_Ball: BulletBase { ACE_caliber=0.007938; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -1287,7 +1287,7 @@ class CfgAmmo class B_mas_762x39_Ball: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -1300,7 +1300,7 @@ class CfgAmmo class B_mas_762x39_Ball_T: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -1313,7 +1313,7 @@ class CfgAmmo class B_mas_762x51_Ball_M118LR : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -1326,7 +1326,7 @@ class CfgAmmo class B_mas_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.353; + ACE_bulletLength=0.034366; ACE_bulletMass=190; 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.268}; @@ -1339,7 +1339,7 @@ class CfgAmmo class B_mas_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.310}; @@ -1352,7 +1352,7 @@ class CfgAmmo class B_mas_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.602; + ACE_bulletLength=0.040691; ACE_bulletMass=230; 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.368}; @@ -1365,7 +1365,7 @@ class CfgAmmo class B_mas_762x54_Ball : BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -1378,7 +1378,7 @@ class CfgAmmo class B_mas_762x54_Ball_T : BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -1391,7 +1391,7 @@ class CfgAmmo class BWA3_B_762x51_Ball_LR : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -1404,7 +1404,7 @@ class CfgAmmo class BWA3_B_762x51_Ball_SD : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.2}; @@ -1418,7 +1418,7 @@ class CfgAmmo class BWA3_B_46x30_Ball : BulletBase { ACE_caliber=0.004902; - ACE_bulletLength=0.512; + ACE_bulletLength=0.013005; ACE_bulletMass=31; 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.1455}; @@ -1432,7 +1432,7 @@ class CfgAmmo class Trixie_338_Ball : BulletBase { ACE_caliber=0.008585; - ACE_bulletLength=1.70; + ACE_bulletLength=0.04318; ACE_bulletMass=300; 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.381}; @@ -1445,7 +1445,7 @@ class CfgAmmo class Trixie_303_Ball : BulletBase { ACE_caliber=0.007899; - ACE_bulletLength=1.227; + ACE_bulletLength=0.031166; ACE_bulletMass=174; 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.499, 0.493, 0.48}; @@ -1459,7 +1459,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk318_Ball : BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -1472,7 +1472,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk262_Ball : BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -1485,7 +1485,7 @@ class CfgAmmo class rhsammo_762x51_Ball : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -1498,7 +1498,7 @@ class CfgAmmo class rhs_B_545x39_Ball : BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -1511,7 +1511,7 @@ class CfgAmmo class rhs_B_545x39_Ball_Tracer_Green : BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -1524,7 +1524,7 @@ class CfgAmmo class rhs_ammo_762x51_M118_Special_Ball : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.243}; @@ -1537,7 +1537,7 @@ class CfgAmmo class rhs_B_762x54_Ball : BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -1550,7 +1550,7 @@ class CfgAmmo class rhs_B_762x54_Ball_Tracer_Green : BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -1563,7 +1563,7 @@ class CfgAmmo class rhs_B_762x39_Ball : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -1576,7 +1576,7 @@ class CfgAmmo class rhs_B_762x39_Tracer : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -1589,7 +1589,7 @@ class CfgAmmo class rhs_ammo_762x51_M80_Ball : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -1602,7 +1602,7 @@ class CfgAmmo class rhsusf_B_300winmag : BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.310}; @@ -1616,7 +1616,7 @@ class CfgAmmo class R3F_9x19_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1629,7 +1629,7 @@ class CfgAmmo class R3F_556x45_Ball: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -1642,7 +1642,7 @@ class CfgAmmo class R3F_762x51_Ball: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -1655,7 +1655,7 @@ class CfgAmmo class R3F_762x51_Ball2: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -1668,7 +1668,7 @@ class CfgAmmo class R3F_127x99_Ball: BulletBase { ACE_caliber=0.012954; - ACE_bulletLength=2.310; + ACE_bulletLength=0.058674; ACE_bulletMass=647; 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.670}; @@ -1681,7 +1681,7 @@ class CfgAmmo class R3F_127x99_Ball2: BulletBase { ACE_caliber=0.012954; - ACE_bulletLength=2.310; + ACE_bulletLength=0.058674; ACE_bulletMass=647; 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.670}; @@ -1695,7 +1695,7 @@ class CfgAmmo class CUP_B_545x39_Ball: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -1708,7 +1708,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Green: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -1721,7 +1721,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -1734,7 +1734,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -1747,7 +1747,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -1760,7 +1760,7 @@ class CfgAmmo class CUP_B_762x39_Ball: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -1773,7 +1773,7 @@ class CfgAmmo class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -1786,7 +1786,7 @@ class CfgAmmo class B_762x39mm_KLT: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -1799,7 +1799,7 @@ class CfgAmmo class CUP_B_9x18_Ball: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1812,7 +1812,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Green: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1825,7 +1825,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Red: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1838,7 +1838,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1851,7 +1851,7 @@ class CfgAmmo class CUP_B_9x18_Ball_White_Tracer: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1864,7 +1864,7 @@ class CfgAmmo class CUP_B_9x19_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1877,7 +1877,7 @@ class CfgAmmo class CUP_B_762x51_noTracer: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -1890,7 +1890,7 @@ class CfgAmmo class CUP_B_762x51_Red_Tracer_3RndBurst: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -1903,7 +1903,7 @@ class CfgAmmo class CUP_B_762x51_White_Tracer_3RndBurst: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -1916,7 +1916,7 @@ class CfgAmmo class CUP_B_303_Ball: BulletBase { ACE_caliber=0.007899; - ACE_bulletLength=1.227; + ACE_bulletLength=0.031166; ACE_bulletMass=174; 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.499, 0.493, 0.48}; @@ -1929,7 +1929,7 @@ class CfgAmmo class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -1942,7 +1942,7 @@ class CfgAmmo class CUP_B_127x108_Ball_Green_Tracer: BulletBase { ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -1955,7 +1955,7 @@ class CfgAmmo class CUP_B_762x54_Ball_White_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -1968,7 +1968,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Red_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -1981,7 +1981,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Green_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -1994,7 +1994,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -2007,7 +2007,7 @@ class CfgAmmo class CUP_B_9x39_SP5: BulletBase { ACE_caliber=0.009246; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2020,7 +2020,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2033,7 +2033,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Red: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2046,7 +2046,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Yellow: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2059,7 +2059,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_White: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2072,7 +2072,7 @@ class CfgAmmo class B_127x107_Ball: BulletBase { ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -2085,7 +2085,7 @@ class CfgAmmo class CUP_B_9x18_SD: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2098,7 +2098,7 @@ class CfgAmmo class CUP_B_765x17_Ball: BulletBase { ACE_caliber=0.007938; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -2111,7 +2111,7 @@ class CfgAmmo class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=0.014884; - ACE_bulletLength=2.00; + ACE_bulletLength=0.0508; ACE_bulletMass=1010; 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.620}; @@ -2124,7 +2124,7 @@ class CfgAmmo class CUP_B_127x99_Ball_White_Tracer: BulletBase { ACE_caliber=0.012954; - ACE_bulletLength=2.310; + ACE_bulletLength=0.058674; ACE_bulletMass=647; 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.670}; @@ -2137,7 +2137,7 @@ class CfgAmmo class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=0.008585; - ACE_bulletLength=1.70; + ACE_bulletLength=0.04318; ACE_bulletMass=300; 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.381}; @@ -2151,7 +2151,7 @@ class CfgAmmo class VTN_9x18_Ball_FMJ: B_9x21_Ball { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2164,7 +2164,7 @@ class CfgAmmo class VTN_9x18_Ball_SC: VTN_9x18_Ball_FMJ { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2177,7 +2177,7 @@ class CfgAmmo class VTN_9x18_Ball_TRC: VTN_9x18_Ball_FMJ { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2190,7 +2190,7 @@ class CfgAmmo class VTN_9x18_Ball_AP1: VTN_9x18_Ball_FMJ { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2203,7 +2203,7 @@ class CfgAmmo class VTN_9x18_Ball_AP2: VTN_9x18_Ball_FMJ { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2216,7 +2216,7 @@ class CfgAmmo class VTN_9x18_Ball_PRS: VTN_9x18_Ball_FMJ { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2229,7 +2229,7 @@ class CfgAmmo class VTN_9x19_Ball_SC: VTN_9x18_Ball_FMJ { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2242,7 +2242,7 @@ class CfgAmmo class VTN_9x19_Ball_TRC: VTN_9x19_Ball_SC { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2255,7 +2255,7 @@ class CfgAmmo class VTN_9x19_Ball_AP: VTN_9x19_Ball_SC { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2268,7 +2268,7 @@ class CfgAmmo class VTN_9x19_Ball_PRS: VTN_9x19_Ball_SC { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2281,7 +2281,7 @@ class CfgAmmo class VTN_9x39_Ball_SC: B_9x21_Ball { ACE_caliber=0.009246; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2294,7 +2294,7 @@ class CfgAmmo class VTN_9x39_Ball_AP: VTN_9x39_Ball_SC { ACE_caliber=0.009246; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2307,7 +2307,7 @@ class CfgAmmo class VTN_545x39_Ball_SC: B_556x45_Ball { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -2320,7 +2320,7 @@ class CfgAmmo class VTN_545x39_Ball_TRC: VTN_545x39_Ball_SC { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -2333,7 +2333,7 @@ class CfgAmmo class VTN_545x39_Ball_AP: VTN_545x39_Ball_TRC { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -2346,7 +2346,7 @@ class CfgAmmo class VTN_545x39_Ball_AP2: VTN_545x39_Ball_AP { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -2359,7 +2359,7 @@ class CfgAmmo class VTN_545x39_Ball_SS: VTN_545x39_Ball_SC { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.168}; @@ -2372,7 +2372,7 @@ class CfgAmmo class VTN_762x39_Ball_SC: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -2385,7 +2385,7 @@ class CfgAmmo class VTN_762x39_Ball_TRC: VTN_762x39_Ball_SC { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -2398,7 +2398,7 @@ class CfgAmmo class VTN_762x39_Ball_AP: VTN_762x39_Ball_TRC { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -2411,7 +2411,7 @@ class CfgAmmo class VTN_762x39_Ball_INC: VTN_762x39_Ball_AP { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -2424,7 +2424,7 @@ class CfgAmmo class VTN_762x39_Ball_API: VTN_762x39_Ball_INC { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -2437,7 +2437,7 @@ class CfgAmmo class VTN_762x39_Ball_SS: VTN_762x39_Ball_SC { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2450,7 +2450,7 @@ class CfgAmmo class VTN_762x41_Ball_SS: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=0.53; + ACE_bulletLength=0.013462; ACE_bulletMass=143; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2463,7 +2463,7 @@ class CfgAmmo class VTN_762x54_Ball_SC: VTN_762x39_Ball_SC { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -2476,7 +2476,7 @@ class CfgAmmo class VTN_762x54_Ball_TRC: VTN_762x54_Ball_SC { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -2489,7 +2489,7 @@ class CfgAmmo class VTN_762x54_Ball_AP: VTN_762x54_Ball_TRC { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -2502,7 +2502,7 @@ class CfgAmmo class VTN_762x54_Ball_INC: VTN_762x54_Ball_AP { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -2515,7 +2515,7 @@ class CfgAmmo class VTN_762x54_Ball_API: VTN_762x54_Ball_INC { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -2528,7 +2528,7 @@ class CfgAmmo class VTN_145x114_Ball_APT: B_127x108_Ball { ACE_caliber=0.014884; - ACE_bulletLength=2.00; + ACE_bulletLength=0.0508; ACE_bulletMass=1010; 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.620}; @@ -2541,7 +2541,7 @@ class CfgAmmo class VTN_6mm_BB: B_65x39_Caseless { ACE_caliber=0.006096; - ACE_bulletLength=0.24; + ACE_bulletLength=0.006096; ACE_bulletMass=6; ACE_ammoTempMuzzleVelocityShifts[]={}; ACE_ballisticCoefficients[]={}; @@ -2554,7 +2554,7 @@ class CfgAmmo class VTN_9x19_Ball_FMJ: B_9x21_Ball { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2567,7 +2567,7 @@ class CfgAmmo class VTN_556x45_Ball_FMJ: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2580,7 +2580,7 @@ class CfgAmmo class VTN_556x45_Ball_TRC: VTN_556x45_Ball_FMJ { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2593,7 +2593,7 @@ class CfgAmmo class VTN_556x45_Ball_TRCN: VTN_556x45_Ball_TRC { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2606,7 +2606,7 @@ class CfgAmmo class VTN_556x45_Ball_SC: VTN_556x45_Ball_FMJ { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2619,7 +2619,7 @@ class CfgAmmo class VTN_556x45_Ball_AP: VTN_556x45_Ball_TRC { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2632,7 +2632,7 @@ class CfgAmmo class VTN_556x45_Ball_INC: VTN_556x45_Ball_AP { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2645,7 +2645,7 @@ class CfgAmmo class VTN_556x45_Ball_LR: VTN_556x45_Ball_FMJ { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -2658,7 +2658,7 @@ class CfgAmmo class VTN_556x45_Ball_SS: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.151}; @@ -2671,7 +2671,7 @@ class CfgAmmo class VTN_762x51_Ball_SC: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2684,7 +2684,7 @@ class CfgAmmo class VTN_762x51_Ball_TRC: VTN_762x51_Ball_SC { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2697,7 +2697,7 @@ class CfgAmmo class VTN_762x51_Ball_TRCN: VTN_762x51_Ball_TRC { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2710,7 +2710,7 @@ class CfgAmmo class VTN_762x51_Ball_AP: VTN_762x51_Ball_TRC { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -2723,7 +2723,7 @@ class CfgAmmo class VTN_762x51_Ball_LR: VTN_762x51_Ball_SC { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.243}; @@ -2736,7 +2736,7 @@ class CfgAmmo class VTN_1143x23_Ball_FMJ: B_408_Ball { ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -2749,7 +2749,7 @@ class CfgAmmo class VTN_1143x23_Ball_HP: VTN_1143x23_Ball_FMJ { ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -2762,7 +2762,7 @@ class CfgAmmo class VTN_1143x23_Ball_JHP: VTN_1143x23_Ball_FMJ { ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -2775,7 +2775,7 @@ class CfgAmmo class VTN_762x39_Ball_FMJ: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -2788,7 +2788,7 @@ class CfgAmmo class VTN_45_Pellet: B_762x51_Ball { ACE_caliber=0.005588; - ACE_bulletLength=0.23; + ACE_bulletLength=0.005842; ACE_bulletMass=3; ACE_ammoTempMuzzleVelocityShifts[]={}; ACE_ballisticCoefficients[]={}; diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 32e52aef30..793d2d03fb 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -6,7 +6,7 @@ class CfgAmmo class CUP_B_545x39_Ball: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -19,7 +19,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -32,7 +32,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -45,7 +45,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -58,7 +58,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -71,7 +71,7 @@ class CfgAmmo class CUP_B_762x39_Ball: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -84,7 +84,7 @@ class CfgAmmo class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -97,7 +97,7 @@ class CfgAmmo class CUP_B_9x18_Ball: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -110,7 +110,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Green: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -123,7 +123,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Red: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -136,7 +136,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -149,7 +149,7 @@ class CfgAmmo class CUP_B_9x18_Ball_White_Tracer: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -162,7 +162,7 @@ class CfgAmmo class CUP_B_9x19_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -175,7 +175,7 @@ class CfgAmmo class CUP_B_762x51_noTracer: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -188,7 +188,7 @@ class CfgAmmo class CUP_B_303_Ball: BulletBase { ACE_caliber=0.007899; - ACE_bulletLength=1.227; + ACE_bulletLength=0.031166; ACE_bulletMass=174; 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.499, 0.493, 0.48}; @@ -201,7 +201,7 @@ class CfgAmmo class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -214,7 +214,7 @@ class CfgAmmo class CUP_B_127x108_Ball_Green_Tracer: BulletBase { ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -227,7 +227,7 @@ class CfgAmmo class CUP_B_762x54_Ball_White_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -240,7 +240,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Red_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -253,7 +253,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Green_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -266,7 +266,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -279,7 +279,7 @@ class CfgAmmo class CUP_B_9x39_SP5: BulletBase { ACE_caliber=0.009246; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=250; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -292,7 +292,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -305,7 +305,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Red: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -318,7 +318,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Yellow: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -331,7 +331,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_White: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -344,7 +344,7 @@ class CfgAmmo class B_127x107_Ball: BulletBase { ACE_caliber=0.012979; - ACE_bulletLength=2.520; + ACE_bulletLength=0.064008; ACE_bulletMass=745; 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.63}; @@ -357,7 +357,7 @@ class CfgAmmo class CUP_B_9x18_SD: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -370,7 +370,7 @@ class CfgAmmo class CUP_B_765x17_Ball: BulletBase { ACE_caliber=0.007938; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -383,7 +383,7 @@ class CfgAmmo class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=0.014884; - ACE_bulletLength=2.00; + ACE_bulletLength=0.0508; ACE_bulletMass=1010; 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.620}; @@ -396,7 +396,7 @@ class CfgAmmo class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { ACE_caliber=0.012954; - ACE_bulletLength=2.310; + ACE_bulletLength=0.058674; ACE_bulletMass=647; 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.670}; @@ -409,7 +409,7 @@ class CfgAmmo class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=0.008585; - ACE_bulletLength=1.70; + ACE_bulletLength=0.04318; ACE_bulletMass=300; 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.381}; diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp index 6d0e36f0d3..9da1f56803 100644 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ b/optionals/compat_hlcmods_core/CfgAmmo.hpp @@ -9,7 +9,7 @@ class CfgAmmo class HLC_556NATO_EPR: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -22,7 +22,7 @@ class CfgAmmo class HLC_556NATO_SOST: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -35,7 +35,7 @@ class CfgAmmo class HLC_556NATO_SPR: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -48,7 +48,7 @@ class CfgAmmo class HLC_300Blackout_Ball: B_556x45_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.118; + ACE_bulletLength=0.028397; ACE_bulletMass=147; 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.398}; @@ -61,7 +61,7 @@ class CfgAmmo class HLC_300Blackout_SMK: HLC_300Blackout_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.608}; @@ -74,7 +74,7 @@ class CfgAmmo class HLC_762x39_Ball: HLC_300Blackout_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -87,7 +87,7 @@ class CfgAmmo class HLC_762x39_Tracer: HLC_762x39_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -100,7 +100,7 @@ class CfgAmmo class HLC_762x51_MK316_20in: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.243}; @@ -113,7 +113,7 @@ class CfgAmmo class HLC_762x51_BTSub: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.340; + ACE_bulletLength=0.034036; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -126,7 +126,7 @@ class CfgAmmo class HLC_762x54_ball: HLC_762x51_ball { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -139,7 +139,7 @@ class CfgAmmo class HLC_762x54_tracer: HLC_762x51_tracer { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -152,7 +152,7 @@ class CfgAmmo class HLC_303Brit_B: B_556x45_Ball { ACE_caliber=0.007899; - ACE_bulletLength=1.227; + ACE_bulletLength=0.031166; ACE_bulletMass=174; 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.499, 0.493, 0.48}; @@ -165,7 +165,7 @@ class CfgAmmo class HLC_792x57_Ball: HLC_303Brit_B { ACE_caliber=0.008077; - ACE_bulletLength=1.128; + ACE_bulletLength=0.028651; ACE_bulletMass=196; 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.315}; @@ -184,7 +184,7 @@ class CfgAmmo class FH_545x39_Ball: B_556x45_Ball { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -204,7 +204,7 @@ class CfgAmmo class HLC_57x28mm_JHP: FH_545x39_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.495; + ACE_bulletLength=0.012573; ACE_bulletMass=28; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; @@ -217,7 +217,7 @@ class CfgAmmo class HLC_9x19_Ball: B_556x45_Ball { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -230,7 +230,7 @@ class CfgAmmo class HLC_9x19_M882_SMG: B_556x45_Ball { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -251,7 +251,7 @@ class CfgAmmo class HLC_10mm_FMJ: HLC_9x19_Ball { ACE_caliber=0.0127; - ACE_bulletLength=0.764; + ACE_bulletLength=0.019406; ACE_bulletMass=165; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -264,7 +264,7 @@ class CfgAmmo class HLC_45ACP_Ball: B_556x45_Ball { ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -277,7 +277,7 @@ class CfgAmmo class FH_44Mag: HLC_45ACP_Ball { ACE_caliber=0.010897; - ACE_bulletLength=0.804; + ACE_bulletLength=0.020422; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; @@ -290,7 +290,7 @@ class CfgAmmo class FH_50BMG_SLAP: B_127x99_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.25; + ACE_bulletLength=0.03175; ACE_bulletMass=350; 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[]={1.056}; @@ -303,7 +303,7 @@ class CfgAmmo class FH_50BMG_Raufoss: B_127x99_Ball { ACE_caliber=0.012954; - ACE_bulletLength=2.380; + ACE_bulletLength=0.060452; ACE_bulletMass=660; 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.670}; diff --git a/optionals/compat_rh_de/CfgAmmo.hpp b/optionals/compat_rh_de/CfgAmmo.hpp index d57daad303..3204523bd8 100644 --- a/optionals/compat_rh_de/CfgAmmo.hpp +++ b/optionals/compat_rh_de/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class RH_50_AE_Ball: BulletBase { ACE_caliber=0.0127; - ACE_bulletLength=1.110; + ACE_bulletLength=0.028194; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.228}; @@ -18,7 +18,7 @@ class CfgAmmo class RH_454_Casull: BulletBase { ACE_caliber=0.011481; - ACE_bulletLength=0.895; + ACE_bulletLength=0.022733; ACE_bulletMass=325; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.171}; @@ -31,7 +31,7 @@ class CfgAmmo class RH_32ACP: BulletBase { ACE_caliber=0.007938; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=65; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -44,7 +44,7 @@ class CfgAmmo class RH_45ACP: BulletBase { ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -57,7 +57,7 @@ class CfgAmmo class RH_B_40SW: BulletBase { ACE_caliber=0.01016; - ACE_bulletLength=0.447; + ACE_bulletLength=0.011354; ACE_bulletMass=135; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.105, 0.115, 0.120, 0.105}; @@ -70,7 +70,7 @@ class CfgAmmo class RH_44mag_ball: BulletBase { ACE_caliber=0.010897; - ACE_bulletLength=0.804; + ACE_bulletLength=0.020422; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; @@ -83,7 +83,7 @@ class CfgAmmo class RH_357mag_ball: BulletBase { ACE_caliber=0.009068; - ACE_bulletLength=0.541; + ACE_bulletLength=0.013741; ACE_bulletMass=125; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.148}; @@ -96,7 +96,7 @@ class CfgAmmo class RH_762x25: BulletBase { ACE_caliber=0.007874; - ACE_bulletLength=0.5455; + ACE_bulletLength=0.013856; ACE_bulletMass=86; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -109,7 +109,7 @@ class CfgAmmo class RH_9x18_Ball: BulletBase { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -122,7 +122,7 @@ class CfgAmmo class RH_B_9x19_Ball: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -135,7 +135,7 @@ class CfgAmmo class RH_B_22LR_SD: BulletBase { ACE_caliber=0.005664; - ACE_bulletLength=0.45; + ACE_bulletLength=0.01143; ACE_bulletMass=38; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.111}; @@ -148,7 +148,7 @@ class CfgAmmo class RH_57x28mm: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.495; + ACE_bulletLength=0.012573; ACE_bulletMass=28; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; diff --git a/optionals/compat_rh_m4/CfgAmmo.hpp b/optionals/compat_rh_m4/CfgAmmo.hpp index 44ed3493d0..9d7f4eec9f 100644 --- a/optionals/compat_rh_m4/CfgAmmo.hpp +++ b/optionals/compat_rh_m4/CfgAmmo.hpp @@ -11,7 +11,7 @@ class CfgAmmo { class RH_9x19_B_M822: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -24,7 +24,7 @@ class CfgAmmo { class RH_9x19_B_HP: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=124; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -37,7 +37,7 @@ class CfgAmmo { class RH_9x19_B_HPSB: BulletBase { ACE_caliber=0.009017; - ACE_bulletLength=0.603; + ACE_bulletLength=0.015316; ACE_bulletMass=147; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.212}; @@ -50,7 +50,7 @@ class CfgAmmo { class RH_556x45_B_M855A1: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -63,7 +63,7 @@ class CfgAmmo { class RH_556x45_B_Mk318: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -76,7 +76,7 @@ class CfgAmmo { class RH_556x45_B_Mk262: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -89,7 +89,7 @@ class CfgAmmo { class RH_68x43_B_FMJ: B_65x39_Caseless { ACE_caliber=0.007036; - ACE_bulletLength=0.959; + ACE_bulletLength=0.024359; ACE_bulletMass=115; 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.162}; @@ -102,7 +102,7 @@ class CfgAmmo { class RH_68x43_B_Match: B_65x39_Caseless { ACE_caliber=0.007036; - ACE_bulletLength=1.250; + ACE_bulletLength=0.03175; ACE_bulletMass=135; 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.253}; @@ -115,7 +115,7 @@ class CfgAmmo { class RH_762x35_B_FMJ: B_65x39_Caseless { ACE_caliber=0.007823; - ACE_bulletLength=1.118; + ACE_bulletLength=0.028397; ACE_bulletMass=147; 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.398}; @@ -128,7 +128,7 @@ class CfgAmmo { class RH_762x35_B_Match: B_65x39_Caseless { ACE_caliber=0.007823; - ACE_bulletLength=1.153; + ACE_bulletLength=0.029286; ACE_bulletMass=125; 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.349, 0.338, 0.330, 0.310}; @@ -141,7 +141,7 @@ class CfgAmmo { class RH_762x35_B_MSB: B_65x39_Caseless { ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.608}; @@ -154,7 +154,7 @@ class CfgAmmo { class RH_762x51_B_M80A1: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -167,7 +167,7 @@ class CfgAmmo { class RH_762x51_B_Mk316LR: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.243}; @@ -180,7 +180,7 @@ class CfgAmmo { class RH_762x51_B_Mk319: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=130; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; @@ -193,7 +193,7 @@ class CfgAmmo { class RH_762x51_B_LFMJSB: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.340; + ACE_bulletLength=0.034036; ACE_bulletMass=200; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; diff --git a/optionals/compat_rh_pdw/CfgAmmo.hpp b/optionals/compat_rh_pdw/CfgAmmo.hpp index 4aad0f4614..76850acf7b 100644 --- a/optionals/compat_rh_pdw/CfgAmmo.hpp +++ b/optionals/compat_rh_pdw/CfgAmmo.hpp @@ -3,7 +3,7 @@ class BulletBase; class RH_B_6x35: BulletBase { ACE_caliber=0.00569; - ACE_bulletLength=0.445; + ACE_bulletLength=0.011303; ACE_bulletMass=65; 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.26}; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 1eabe3969d..1d7fc6bdae 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -6,7 +6,7 @@ class CfgAmmo class rhs_B_545x39_Ball: B_556x45_Ball { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=52.9; 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.168}; @@ -19,7 +19,7 @@ class CfgAmmo class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { ACE_caliber=0.005588; - ACE_bulletLength=0.85; + ACE_bulletLength=0.02159; ACE_bulletMass=49.8; 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.168}; @@ -33,7 +33,7 @@ class CfgAmmo class rhs_B_762x54_Ball: B_762x51_Ball { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -46,7 +46,7 @@ class CfgAmmo class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=149; 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.395}; @@ -59,7 +59,7 @@ class CfgAmmo class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { ACE_caliber=0.007925; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=152; 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.4}; @@ -72,7 +72,7 @@ class CfgAmmo class rhs_B_762x39_Ball: B_762x51_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=123; 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}; @@ -85,7 +85,7 @@ class CfgAmmo class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=117; 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}; @@ -99,7 +99,7 @@ class CfgAmmo class rhs_B_9x19_7N21: B_9x21_Ball { ACE_caliber=0.009017; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=80.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.14}; @@ -112,7 +112,7 @@ class CfgAmmo class rhs_B_9x18_57N181S: B_9x21_Ball { ACE_caliber=0.009271; - ACE_bulletLength=0.610; + ACE_bulletLength=0.015494; ACE_bulletMass=92.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 9a81abd2c3..14c3157adf 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class rhsusf_B_300winmag: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.489; + ACE_bulletLength=0.037821; ACE_bulletMass=220; 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.310}; @@ -19,7 +19,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk318_Ball: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=62; 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.307}; @@ -32,7 +32,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk262_Ball: B_556x45_Ball { ACE_caliber=0.00569; - ACE_bulletLength=0.906; + ACE_bulletLength=0.023012; ACE_bulletMass=77; 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.361}; @@ -45,7 +45,7 @@ class CfgAmmo class rhs_ammo_762x51_M80_Ball: BulletBase { ACE_caliber=0.007823; - ACE_bulletLength=1.14; + ACE_bulletLength=0.028956; ACE_bulletMass=146; 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.2}; @@ -58,7 +58,7 @@ class CfgAmmo class rhs_ammo_762x51_M118_Special_Ball: rhs_ammo_762x51_M80_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=175; 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.243}; @@ -71,7 +71,7 @@ class CfgAmmo class rhs_ammo_762x51_M993_Ball: rhs_ammo_762x51_M80_Ball { ACE_caliber=0.007823; - ACE_bulletLength=1.24; + ACE_bulletLength=0.031496; ACE_bulletMass=127; 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.377}; @@ -84,7 +84,7 @@ class CfgAmmo class rhs_ammo_45ACP_MHP: BulletBase { ACE_caliber=0.011481; - ACE_bulletLength=0.68; + ACE_bulletLength=0.017272; ACE_bulletMass=230; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; From 27c8255987f3e8f82ac86191999cd325adb2cd23 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:33:17 +0200 Subject: [PATCH 0044/1101] Convert ACE_bulletMass to grams --- .../functions/fnc_handleFired.sqf | 2 +- addons/ballistics/CfgAmmo.hpp | 92 ++-- addons/overheating/functions/fnc_overheat.sqf | 2 +- extras/CfgAmmoReference.hpp | 412 +++++++++--------- optionals/compat_cup/CfgAmmo.hpp | 64 +-- optionals/compat_hlcmods_core/CfgAmmo.hpp | 46 +- optionals/compat_rh_de/CfgAmmo.hpp | 24 +- optionals/compat_rh_m4/CfgAmmo.hpp | 30 +- optionals/compat_rh_pdw/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 18 +- optionals/compat_rhs_usf3/CfgAmmo.hpp | 14 +- 11 files changed, 353 insertions(+), 353 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 941a4c8284..8f68ce6678 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -93,7 +93,7 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { _caliber = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); _bulletLength = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); -_bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); +_bulletMass = 15.432 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); _barrelTwist = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); _stabilityFactor = 1.5; diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 6486854f38..753c5ba8a1 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -27,7 +27,7 @@ class CfgAmmo { tracerEndTime = 1.579; //Time in seconds calculated with ballistics calculator ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -44,7 +44,7 @@ class CfgAmmo { typicalSpeed=836; ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -61,7 +61,7 @@ class CfgAmmo { typicalSpeed=886; ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -78,7 +78,7 @@ class CfgAmmo { typicalSpeed=886; ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=46; + ACE_bulletMass=2.9808; 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.151}; ACE_velocityBoundaries[]={}; @@ -99,7 +99,7 @@ class CfgAmmo { typicalSpeed=880; ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -119,7 +119,7 @@ class CfgAmmo { tracerEndTime = 1.736; //Time in seconds calculated with ballistics calculator ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -133,7 +133,7 @@ class CfgAmmo { typicalSpeed=800; ACE_caliber=0.006706; ACE_bulletLength=0.032893; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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.263}; ACE_velocityBoundaries[]={}; @@ -156,7 +156,7 @@ class CfgAmmo { caliber=0.9; ACE_caliber=0.006706; ACE_bulletLength=0.034646; - ACE_bulletMass=139; + ACE_bulletMass=9.0072; 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.290}; ACE_velocityBoundaries[]={}; @@ -171,7 +171,7 @@ class CfgAmmo { caliber=1.1; ACE_caliber=0.006706; ACE_bulletLength=0.03622; - ACE_bulletMass=140; + ACE_bulletMass=9.072; 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.317}; ACE_velocityBoundaries[]={}; @@ -188,7 +188,7 @@ class CfgAmmo { tracerEndTime = 2.058; //Time in seconds calculated with ballistics calculator ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -208,7 +208,7 @@ class CfgAmmo { typicalSpeed=790; ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.243}; ACE_velocityBoundaries[]={}; @@ -224,7 +224,7 @@ class CfgAmmo { typicalSpeed=790; ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.243}; ACE_velocityBoundaries[]={}; @@ -240,7 +240,7 @@ class CfgAmmo { typicalSpeed=900; ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=130; + ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; ACE_velocityBoundaries[]={}; @@ -256,7 +256,7 @@ class CfgAmmo { typicalSpeed=930; ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=127; + ACE_bulletMass=8.2296; 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.377}; ACE_velocityBoundaries[]={}; @@ -272,7 +272,7 @@ class CfgAmmo { typicalSpeed=320; ACE_caliber=0.007823; ACE_bulletLength=0.034036; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; ACE_velocityBoundaries[]={}; @@ -288,7 +288,7 @@ class CfgAmmo { hit=10; ACE_caliber=0.007823; ACE_bulletLength=0.030734; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.494}; ACE_velocityBoundaries[]={}; @@ -304,7 +304,7 @@ class CfgAmmo { hit=8; ACE_caliber=0.007214; ACE_bulletLength=0.038837; - ACE_bulletMass=180; + ACE_bulletMass=11.664; 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.345}; ACE_velocityBoundaries[]={}; @@ -320,7 +320,7 @@ class CfgAmmo { hit=6; ACE_caliber=0.006172; ACE_bulletLength=0.032563; - ACE_bulletMass=180; + ACE_bulletMass=11.664; 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.278}; ACE_velocityBoundaries[]={}; @@ -336,7 +336,7 @@ class CfgAmmo { typicalSpeed=900; ACE_caliber=0.007823; ACE_bulletLength=0.034366; - ACE_bulletMass=190; + ACE_bulletMass=12.312; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.268}; ACE_velocityBoundaries[]={}; @@ -352,7 +352,7 @@ class CfgAmmo { typicalSpeed=867; ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.310}; ACE_velocityBoundaries[]={}; @@ -368,7 +368,7 @@ class CfgAmmo { typicalSpeed=853; ACE_caliber=0.007823; ACE_bulletLength=0.040691; - ACE_bulletMass=230; + ACE_bulletMass=14.904; 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.368}; ACE_velocityBoundaries[]={}; @@ -382,7 +382,7 @@ class CfgAmmo { typicalSpeed=820; ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -398,7 +398,7 @@ class CfgAmmo { typicalSpeed=820; ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -417,7 +417,7 @@ class CfgAmmo { tracerEndTime = 3; ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -433,7 +433,7 @@ class CfgAmmo { typicalSpeed=790; ACE_caliber=0.007823; ACE_bulletLength=0.029286; - ACE_bulletMass=125; + ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; ACE_velocityBoundaries[]={792, 610, 488}; @@ -449,7 +449,7 @@ class CfgAmmo { typicalSpeed=716; ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -467,7 +467,7 @@ class CfgAmmo { tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -482,7 +482,7 @@ class CfgAmmo { hit=6; ACE_caliber=0.009042; ACE_bulletLength=0.015494; - ACE_bulletMass=115; + ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; ACE_velocityBoundaries[]={}; @@ -497,7 +497,7 @@ class CfgAmmo { typicalSpeed=298; ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -512,7 +512,7 @@ class CfgAmmo { hit=6; ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -527,7 +527,7 @@ class CfgAmmo { hit=7; ACE_caliber=0.0127; ACE_bulletLength=0.019406; - ACE_bulletMass=165; + ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; ACE_velocityBoundaries[]={}; @@ -542,7 +542,7 @@ class CfgAmmo { hit=7; ACE_caliber=0.007938; ACE_bulletLength=0.015494; - ACE_bulletMass=65; + ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; ACE_velocityBoundaries[]={}; @@ -557,7 +557,7 @@ class CfgAmmo { caliber=2.0; ACE_caliber=0.007899; ACE_bulletLength=0.031166; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; ACE_velocityBoundaries[]={671, 549}; @@ -571,7 +571,7 @@ class CfgAmmo { typicalSpeed=880; ACE_caliber=0.009296; ACE_bulletLength=0.03429; - ACE_bulletMass=230; + ACE_bulletMass=14.904; 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.368}; ACE_velocityBoundaries[]={}; @@ -586,7 +586,7 @@ class CfgAmmo { typicalSpeed=910; ACE_caliber=0.010363; ACE_bulletLength=0.054; - ACE_bulletMass=410; + ACE_bulletMass=26.568; ACE_transonicStabilityCoef=1; 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.97}; @@ -600,7 +600,7 @@ class CfgAmmo { timeToLive=10; ACE_caliber=0.010566; ACE_bulletLength=0.053061; - ACE_bulletMass=398; + ACE_bulletMass=25.7904; 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.72}; ACE_velocityBoundaries[]={}; @@ -615,7 +615,7 @@ class CfgAmmo { typicalSpeed=915; ACE_caliber=0.008585; ACE_bulletLength=0.039573; - ACE_bulletMass=250; + ACE_bulletMass=16.2; 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.322}; ACE_velocityBoundaries[]={}; @@ -629,7 +629,7 @@ class CfgAmmo { typicalSpeed=820; ACE_caliber=0.008585; ACE_bulletLength=0.04318; - ACE_bulletMass=300; + ACE_bulletMass=19.44; 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.381}; ACE_velocityBoundaries[]={}; @@ -644,7 +644,7 @@ class CfgAmmo { typicalSpeed=826; ACE_caliber=0.008585; ACE_bulletLength=0.04318; - ACE_bulletMass=300; + ACE_bulletMass=19.44; 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.381}; ACE_velocityBoundaries[]={}; @@ -660,7 +660,7 @@ class CfgAmmo { typicalSpeed=826; ACE_caliber=0.008585; ACE_bulletLength=0.038989; - ACE_bulletMass=253; + ACE_bulletMass=16.3944; 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.290}; ACE_velocityBoundaries[]={}; @@ -674,7 +674,7 @@ class CfgAmmo { typicalSpeed=300; ACE_caliber=0.012954; ACE_bulletLength=0.064516; - ACE_bulletMass=750; + ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={1.050}; ACE_velocityBoundaries[]={}; @@ -689,7 +689,7 @@ class CfgAmmo { typicalSpeed=900; ACE_caliber=0.012954; ACE_bulletLength=0.058674; - ACE_bulletMass=647; + ACE_bulletMass=41.9256; 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.670}; ACE_velocityBoundaries[]={}; @@ -706,7 +706,7 @@ class CfgAmmo { caliber=4.0; ACE_caliber=0.012954; ACE_bulletLength=0.058674; - ACE_bulletMass=648; + ACE_bulletMass=41.9904; 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.670}; ACE_velocityBoundaries[]={}; @@ -722,7 +722,7 @@ class CfgAmmo { caliber=3.0; ACE_caliber=0.012954; ACE_bulletLength=0.064516; - ACE_bulletMass=750; + ACE_bulletMass=48.6; 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[]={1.050}; ACE_velocityBoundaries[]={}; @@ -737,7 +737,7 @@ class CfgAmmo { typicalSpeed=820; ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -751,7 +751,7 @@ class CfgAmmo { typicalSpeed=250; ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; diff --git a/addons/overheating/functions/fnc_overheat.sqf b/addons/overheating/functions/fnc_overheat.sqf index 05e5bbba9c..0d52d9102f 100644 --- a/addons/overheating/functions/fnc_overheat.sqf +++ b/addons/overheating/functions/fnc_overheat.sqf @@ -41,7 +41,7 @@ if (_bulletMass == 0) then { // If the bullet mass is not configured, estimate it directly in grams _bulletMass = 3.4334 + 0.5171 * (getNumber (configFile >> "CfgAmmo" >> _ammo >> "hit") + getNumber (configFile >> "CfgAmmo" >> _ammo >> "caliber")); }; -_energyIncrement = 0.75 * 0.0005 * _bulletMass * (vectorMagnitudeSqr _velocity); +_energyIncrement = 0.75 * 0.0005 * 15.4323 * _bulletMass * (vectorMagnitudeSqr _velocity); _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; // Calculate cooling diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp index de8429036f..409109d25b 100644 --- a/extras/CfgAmmoReference.hpp +++ b/extras/CfgAmmoReference.hpp @@ -7,7 +7,7 @@ class CfgAmmo typicalSpeed=750; ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -24,7 +24,7 @@ class CfgAmmo typicalSpeed=836; ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -41,7 +41,7 @@ class CfgAmmo typicalSpeed=886; ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -62,7 +62,7 @@ class CfgAmmo typicalSpeed=880; ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -80,7 +80,7 @@ class CfgAmmo typicalSpeed=883; ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -94,7 +94,7 @@ class CfgAmmo typicalSpeed=800; ACE_caliber=0.006706; ACE_bulletLength=0.032893; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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.263}; ACE_velocityBoundaries[]={}; @@ -117,7 +117,7 @@ class CfgAmmo typicalSpeed=820 ; ACE_caliber=0.006706; ACE_bulletLength=0.034646; - ACE_bulletMass=139; + ACE_bulletMass=9.0072; 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.290}; ACE_velocityBoundaries[]={}; @@ -132,7 +132,7 @@ class CfgAmmo hit=9; ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -152,7 +152,7 @@ class CfgAmmo typicalSpeed=790; ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.243}; ACE_velocityBoundaries[]={}; @@ -168,7 +168,7 @@ class CfgAmmo typicalSpeed=890; ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=130; + ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; ACE_velocityBoundaries[]={}; @@ -184,7 +184,7 @@ class CfgAmmo typicalSpeed=790; ACE_caliber=0.007823; ACE_bulletLength=0.034036; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; ACE_velocityBoundaries[]={}; @@ -200,7 +200,7 @@ class CfgAmmo typicalSpeed=900; ACE_caliber=0.007823; ACE_bulletLength=0.034366; - ACE_bulletMass=190; + ACE_bulletMass=12.312; 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.268}; ACE_velocityBoundaries[]={}; @@ -216,7 +216,7 @@ class CfgAmmo typicalSpeed=867; ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.310}; ACE_velocityBoundaries[]={}; @@ -232,7 +232,7 @@ class CfgAmmo typicalSpeed=853; ACE_caliber=0.007823; ACE_bulletLength=0.040691; - ACE_bulletMass=230; + ACE_bulletMass=14.904; 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.368}; ACE_velocityBoundaries[]={}; @@ -246,7 +246,7 @@ class CfgAmmo typicalSpeed=820; ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -262,7 +262,7 @@ class CfgAmmo typicalSpeed=820; ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -279,7 +279,7 @@ class CfgAmmo typicalSpeed=800; ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -295,7 +295,7 @@ class CfgAmmo typicalSpeed=790; ACE_caliber=0.007823; ACE_bulletLength=0.029286; - ACE_bulletMass=125; + ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; ACE_velocityBoundaries[]={792, 610, 488}; @@ -310,7 +310,7 @@ class CfgAmmo typicalSpeed=716; ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -325,7 +325,7 @@ class CfgAmmo typicalSpeed=716; ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -340,7 +340,7 @@ class CfgAmmo hit=6; ACE_caliber=0.009042; ACE_bulletLength=0.015494; - ACE_bulletMass=115; + ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; ACE_velocityBoundaries[]={}; @@ -355,7 +355,7 @@ class CfgAmmo typicalSpeed=298; ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -370,7 +370,7 @@ class CfgAmmo hit=6; ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -385,7 +385,7 @@ class CfgAmmo hit=7; ACE_caliber=0.0127; ACE_bulletLength=0.019406; - ACE_bulletMass=165; + ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; ACE_velocityBoundaries[]={}; @@ -400,7 +400,7 @@ class CfgAmmo hit=7; ACE_caliber=0.007938; ACE_bulletLength=0.015494; - ACE_bulletMass=65; + ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; ACE_velocityBoundaries[]={}; @@ -414,7 +414,7 @@ class CfgAmmo typicalSpeed=761; ACE_caliber=0.007899; ACE_bulletLength=0.031166; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; ACE_velocityBoundaries[]={671, 549}; @@ -428,7 +428,7 @@ class CfgAmmo typicalSpeed=880; ACE_caliber=0.009296; ACE_bulletLength=0.03429; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_transonicStabilityCoef=1; 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.368}; @@ -444,7 +444,7 @@ class CfgAmmo typicalSpeed=910; ACE_caliber=0.010363; ACE_bulletLength=0.054; - ACE_bulletMass=410; + ACE_bulletMass=26.568; ACE_transonicStabilityCoef=1; 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.97}; @@ -458,7 +458,7 @@ class CfgAmmo timeToLive=10; ACE_caliber=0.010566; ACE_bulletLength=0.053061; - ACE_bulletMass=398; + ACE_bulletMass=25.7904; 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.72}; ACE_velocityBoundaries[]={}; @@ -473,7 +473,7 @@ class CfgAmmo typicalSpeed=915; ACE_caliber=0.008585; ACE_bulletLength=0.039573; - ACE_bulletMass=250; + ACE_bulletMass=16.2; 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.322}; ACE_velocityBoundaries[]={}; @@ -487,7 +487,7 @@ class CfgAmmo typicalSpeed=820; ACE_caliber=0.008585; ACE_bulletLength=0.04318; - ACE_bulletMass=300; + ACE_bulletMass=19.44; 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.381}; ACE_velocityBoundaries[]={}; @@ -503,7 +503,7 @@ class CfgAmmo typicalSpeed=826; ACE_caliber=0.008585; ACE_bulletLength=0.04318; - ACE_bulletMass=300; + ACE_bulletMass=19.44; 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.381}; ACE_velocityBoundaries[]={}; @@ -519,7 +519,7 @@ class CfgAmmo typicalSpeed=826; ACE_caliber=0.008585; ACE_bulletLength=0.038989; - ACE_bulletMass=253; + ACE_bulletMass=16.3944; 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.290}; ACE_velocityBoundaries[]={}; @@ -533,7 +533,7 @@ class CfgAmmo typicalSpeed=300; ACE_caliber=0.012954; ACE_bulletLength=0.064516; - ACE_bulletMass=750; + ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={1.050}; ACE_velocityBoundaries[]={}; @@ -548,7 +548,7 @@ class CfgAmmo typicalSpeed=853; ACE_caliber=0.012954; ACE_bulletLength=0.058674; - ACE_bulletMass=647; + ACE_bulletMass=41.9256; 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.670}; ACE_velocityBoundaries[]={}; @@ -563,7 +563,7 @@ class CfgAmmo typicalSpeed=860; ACE_caliber=0.012954; ACE_bulletLength=0.064516; - ACE_bulletMass=750; + ACE_bulletMass=48.6; 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[]={1.050}; ACE_velocityBoundaries[]={}; @@ -578,7 +578,7 @@ class CfgAmmo typicalSpeed=820; ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -592,7 +592,7 @@ class CfgAmmo typicalSpeed=250; ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; @@ -606,7 +606,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; ACE_velocityBoundaries[]={853, 549, 549, 549}; @@ -620,7 +620,7 @@ class CfgAmmo { ACE_caliber=0.0127; ACE_bulletLength=0.028194; - ACE_bulletMass=325; + ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.228}; ACE_velocityBoundaries[]={}; @@ -633,7 +633,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.022733; - ACE_bulletMass=325; + ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.171}; ACE_velocityBoundaries[]={}; @@ -646,7 +646,7 @@ class CfgAmmo { ACE_caliber=0.007938; ACE_bulletLength=0.015494; - ACE_bulletMass=65; + ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; ACE_velocityBoundaries[]={}; @@ -659,7 +659,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; @@ -672,7 +672,7 @@ class CfgAmmo { ACE_caliber=0.01016; ACE_bulletLength=0.011354; - ACE_bulletMass=135; + ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.105, 0.115, 0.120, 0.105}; ACE_velocityBoundaries[]={365, 305, 259}; @@ -685,7 +685,7 @@ class CfgAmmo { ACE_caliber=0.010897; ACE_bulletLength=0.020422; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; ACE_velocityBoundaries[]={}; @@ -698,7 +698,7 @@ class CfgAmmo { ACE_caliber=0.009068; ACE_bulletLength=0.013741; - ACE_bulletMass=125; + ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.148}; ACE_velocityBoundaries[]={}; @@ -711,7 +711,7 @@ class CfgAmmo { ACE_caliber=0.007874; ACE_bulletLength=0.013856; - ACE_bulletMass=86; + ACE_bulletMass=5.5728; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; ACE_velocityBoundaries[]={}; @@ -724,7 +724,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -737,7 +737,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -750,7 +750,7 @@ class CfgAmmo { ACE_caliber=0.005664; ACE_bulletLength=0.01143; - ACE_bulletMass=38; + ACE_bulletMass=2.4624; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.111}; ACE_velocityBoundaries[]={}; @@ -763,7 +763,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.012573; - ACE_bulletMass=28; + ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; ACE_velocityBoundaries[]={}; @@ -777,7 +777,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -790,7 +790,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -803,7 +803,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015316; - ACE_bulletMass=147; + ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.212}; ACE_velocityBoundaries[]={}; @@ -816,7 +816,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.011303; - ACE_bulletMass=65; + ACE_bulletMass=4.212; 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.26}; ACE_velocityBoundaries[]={}; @@ -829,7 +829,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.152}; ACE_velocityBoundaries[]={}; @@ -842,7 +842,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -855,7 +855,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -868,7 +868,7 @@ class CfgAmmo { ACE_caliber=0.007036; ACE_bulletLength=0.024359; - ACE_bulletMass=115; + ACE_bulletMass=7.452; 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.162}; ACE_velocityBoundaries[]={}; @@ -881,7 +881,7 @@ class CfgAmmo { ACE_caliber=0.007036; ACE_bulletLength=0.03175; - ACE_bulletMass=135; + ACE_bulletMass=8.748; 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.253}; ACE_velocityBoundaries[]={}; @@ -894,7 +894,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028397; - ACE_bulletMass=147; + ACE_bulletMass=9.5256; 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.398}; ACE_velocityBoundaries[]={}; @@ -907,7 +907,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.029286; - ACE_bulletMass=125; + ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; ACE_velocityBoundaries[]={792, 610, 488}; @@ -920,7 +920,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.608}; ACE_velocityBoundaries[]={}; @@ -933,7 +933,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -946,7 +946,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.243}; ACE_velocityBoundaries[]={}; @@ -959,7 +959,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.02728; - ACE_bulletMass=130; + ACE_bulletMass=8.424; 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.277}; ACE_velocityBoundaries[]={}; @@ -972,7 +972,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.034036; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.252}; ACE_velocityBoundaries[]={}; @@ -986,7 +986,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -999,7 +999,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -1012,7 +1012,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.152}; ACE_velocityBoundaries[]={}; @@ -1025,7 +1025,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028397; - ACE_bulletMass=147; + ACE_bulletMass=9.5256; 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.398}; ACE_velocityBoundaries[]={}; @@ -1038,7 +1038,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.608}; ACE_velocityBoundaries[]={}; @@ -1051,7 +1051,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.034036; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; ACE_velocityBoundaries[]={}; @@ -1064,7 +1064,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -1077,7 +1077,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -1090,7 +1090,7 @@ class CfgAmmo { ACE_caliber=0.007899; ACE_bulletLength=0.031166; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; ACE_velocityBoundaries[]={671, 549}; @@ -1103,7 +1103,7 @@ class CfgAmmo { ACE_caliber=0.008077; ACE_bulletLength=0.028651; - ACE_bulletMass=196; + ACE_bulletMass=12.7008; 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.315}; ACE_velocityBoundaries[]={}; @@ -1116,7 +1116,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -1127,7 +1127,7 @@ class CfgAmmo }; class FH_545x39_7u1: FH_545x39_Ball { - ACE_bulletMass=80; + ACE_bulletMass=5.184; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_muzzleVelocities[]={260, 303, 320}; ACE_barrelLengths[]={10, 16.3, 20}; @@ -1136,7 +1136,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -1157,7 +1157,7 @@ class CfgAmmo { ACE_caliber=0.0127; ACE_bulletLength=0.019406; - ACE_bulletMass=165; + ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; ACE_velocityBoundaries[]={}; @@ -1170,7 +1170,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -1184,7 +1184,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -1197,7 +1197,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -1210,7 +1210,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -1223,7 +1223,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -1236,7 +1236,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -1249,7 +1249,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -1262,7 +1262,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -1275,7 +1275,7 @@ class CfgAmmo { ACE_caliber=0.007938; ACE_bulletLength=0.015494; - ACE_bulletMass=65; + ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; ACE_velocityBoundaries[]={}; @@ -1288,7 +1288,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -1301,7 +1301,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -1314,7 +1314,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; ACE_velocityBoundaries[]={853, 549, 549, 549}; @@ -1327,7 +1327,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.034366; - ACE_bulletMass=190; + ACE_bulletMass=12.312; 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.268}; ACE_velocityBoundaries[]={}; @@ -1340,7 +1340,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.310}; ACE_velocityBoundaries[]={}; @@ -1353,7 +1353,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.040691; - ACE_bulletMass=230; + ACE_bulletMass=14.904; 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.368}; ACE_velocityBoundaries[]={}; @@ -1366,7 +1366,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -1379,7 +1379,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -1392,7 +1392,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; ACE_velocityBoundaries[]={853, 549, 549, 549}; @@ -1405,7 +1405,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.2}; ACE_velocityBoundaries[]={}; @@ -1419,7 +1419,7 @@ class CfgAmmo { ACE_caliber=0.004902; ACE_bulletLength=0.013005; - ACE_bulletMass=31; + ACE_bulletMass=2.0088; 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.1455}; ACE_velocityBoundaries[]={}; @@ -1433,7 +1433,7 @@ class CfgAmmo { ACE_caliber=0.008585; ACE_bulletLength=0.04318; - ACE_bulletMass=300; + ACE_bulletMass=19.44; 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.381}; ACE_velocityBoundaries[]={}; @@ -1446,7 +1446,7 @@ class CfgAmmo { ACE_caliber=0.007899; ACE_bulletLength=0.031166; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; ACE_velocityBoundaries[]={671, 549}; @@ -1460,7 +1460,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -1473,7 +1473,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -1486,7 +1486,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -1499,7 +1499,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -1512,7 +1512,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -1525,7 +1525,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.243}; ACE_velocityBoundaries[]={}; @@ -1538,7 +1538,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -1551,7 +1551,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -1564,7 +1564,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -1577,7 +1577,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -1590,7 +1590,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -1603,7 +1603,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.310}; ACE_velocityBoundaries[]={}; @@ -1617,7 +1617,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -1630,7 +1630,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -1643,7 +1643,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -1656,7 +1656,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; ACE_velocityBoundaries[]={853, 549, 549, 549}; @@ -1669,7 +1669,7 @@ class CfgAmmo { ACE_caliber=0.012954; ACE_bulletLength=0.058674; - ACE_bulletMass=647; + ACE_bulletMass=41.9256; 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.670}; ACE_velocityBoundaries[]={}; @@ -1682,7 +1682,7 @@ class CfgAmmo { ACE_caliber=0.012954; ACE_bulletLength=0.058674; - ACE_bulletMass=647; + ACE_bulletMass=41.9256; 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.670}; ACE_velocityBoundaries[]={}; @@ -1696,7 +1696,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -1709,7 +1709,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -1722,7 +1722,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -1735,7 +1735,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -1748,7 +1748,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -1761,7 +1761,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -1774,7 +1774,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -1787,7 +1787,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -1800,7 +1800,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -1813,7 +1813,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -1826,7 +1826,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -1839,7 +1839,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -1852,7 +1852,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -1865,7 +1865,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -1878,7 +1878,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -1891,7 +1891,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -1904,7 +1904,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -1917,7 +1917,7 @@ class CfgAmmo { ACE_caliber=0.007899; ACE_bulletLength=0.031166; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; ACE_velocityBoundaries[]={671, 549}; @@ -1930,7 +1930,7 @@ class CfgAmmo { ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -1943,7 +1943,7 @@ class CfgAmmo { ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -1956,7 +1956,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -1969,7 +1969,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -1982,7 +1982,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -1995,7 +1995,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -2008,7 +2008,7 @@ class CfgAmmo { ACE_caliber=0.009246; ACE_bulletLength=0.031496; - ACE_bulletMass=250; + ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; ACE_velocityBoundaries[]={}; @@ -2021,7 +2021,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2034,7 +2034,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2047,7 +2047,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2060,7 +2060,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2073,7 +2073,7 @@ class CfgAmmo { ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -2086,7 +2086,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -2099,7 +2099,7 @@ class CfgAmmo { ACE_caliber=0.007938; ACE_bulletLength=0.015494; - ACE_bulletMass=65; + ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; ACE_velocityBoundaries[]={}; @@ -2112,7 +2112,7 @@ class CfgAmmo { ACE_caliber=0.014884; ACE_bulletLength=0.0508; - ACE_bulletMass=1010; + ACE_bulletMass=65.448; 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.620}; ACE_velocityBoundaries[]={}; @@ -2125,7 +2125,7 @@ class CfgAmmo { ACE_caliber=0.012954; ACE_bulletLength=0.058674; - ACE_bulletMass=647; + ACE_bulletMass=41.9256; 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.670}; ACE_velocityBoundaries[]={}; @@ -2138,7 +2138,7 @@ class CfgAmmo { ACE_caliber=0.008585; ACE_bulletLength=0.04318; - ACE_bulletMass=300; + ACE_bulletMass=19.44; 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.381}; ACE_velocityBoundaries[]={}; @@ -2152,7 +2152,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -2165,7 +2165,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -2178,7 +2178,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -2191,7 +2191,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -2204,7 +2204,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -2217,7 +2217,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -2230,7 +2230,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -2243,7 +2243,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -2256,7 +2256,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -2269,7 +2269,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -2282,7 +2282,7 @@ class CfgAmmo { ACE_caliber=0.009246; ACE_bulletLength=0.031496; - ACE_bulletMass=250; + ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; ACE_velocityBoundaries[]={}; @@ -2295,7 +2295,7 @@ class CfgAmmo { ACE_caliber=0.009246; ACE_bulletLength=0.031496; - ACE_bulletMass=250; + ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; ACE_velocityBoundaries[]={}; @@ -2308,7 +2308,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -2321,7 +2321,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -2334,7 +2334,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -2347,7 +2347,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -2360,7 +2360,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.168}; ACE_velocityBoundaries[]={}; @@ -2373,7 +2373,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -2386,7 +2386,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -2399,7 +2399,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -2412,7 +2412,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -2425,7 +2425,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -2438,7 +2438,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; ACE_velocityBoundaries[]={}; @@ -2451,7 +2451,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.013462; - ACE_bulletMass=143; + ACE_bulletMass=9.2664; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; ACE_velocityBoundaries[]={}; @@ -2464,7 +2464,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -2477,7 +2477,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -2490,7 +2490,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -2503,7 +2503,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -2516,7 +2516,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -2529,7 +2529,7 @@ class CfgAmmo { ACE_caliber=0.014884; ACE_bulletLength=0.0508; - ACE_bulletMass=1010; + ACE_bulletMass=65.448; 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.620}; ACE_velocityBoundaries[]={}; @@ -2542,7 +2542,7 @@ class CfgAmmo { ACE_caliber=0.006096; ACE_bulletLength=0.006096; - ACE_bulletMass=6; + ACE_bulletMass=0.3888; ACE_ammoTempMuzzleVelocityShifts[]={}; ACE_ballisticCoefficients[]={}; ACE_velocityBoundaries[]={}; @@ -2555,7 +2555,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -2568,7 +2568,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -2581,7 +2581,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -2594,7 +2594,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -2607,7 +2607,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -2620,7 +2620,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -2633,7 +2633,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -2646,7 +2646,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -2659,7 +2659,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -2672,7 +2672,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2685,7 +2685,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2698,7 +2698,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2711,7 +2711,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -2724,7 +2724,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.243}; ACE_velocityBoundaries[]={}; @@ -2737,7 +2737,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; @@ -2750,7 +2750,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; @@ -2763,7 +2763,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; @@ -2776,7 +2776,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -2789,7 +2789,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.005842; - ACE_bulletMass=3; + ACE_bulletMass=0.1944; ACE_ammoTempMuzzleVelocityShifts[]={}; ACE_ballisticCoefficients[]={}; ACE_velocityBoundaries[]={}; diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 793d2d03fb..00151cddb8 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -7,7 +7,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -20,7 +20,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -33,7 +33,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -46,7 +46,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -59,7 +59,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -72,7 +72,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -85,7 +85,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -98,7 +98,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -111,7 +111,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -124,7 +124,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -137,7 +137,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -150,7 +150,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -163,7 +163,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -176,7 +176,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -189,7 +189,7 @@ class CfgAmmo { ACE_caliber=0.007899; ACE_bulletLength=0.031166; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; ACE_velocityBoundaries[]={671, 549}; @@ -202,7 +202,7 @@ class CfgAmmo { ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -215,7 +215,7 @@ class CfgAmmo { ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -228,7 +228,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -241,7 +241,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -254,7 +254,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -267,7 +267,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -280,7 +280,7 @@ class CfgAmmo { ACE_caliber=0.009246; ACE_bulletLength=0.031496; - ACE_bulletMass=250; + ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; ACE_velocityBoundaries[]={}; @@ -293,7 +293,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -306,7 +306,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -319,7 +319,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -332,7 +332,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -345,7 +345,7 @@ class CfgAmmo { ACE_caliber=0.012979; ACE_bulletLength=0.064008; - ACE_bulletMass=745; + ACE_bulletMass=48.276; 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.63}; ACE_velocityBoundaries[]={}; @@ -358,7 +358,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -371,7 +371,7 @@ class CfgAmmo { ACE_caliber=0.007938; ACE_bulletLength=0.015494; - ACE_bulletMass=65; + ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; ACE_velocityBoundaries[]={}; @@ -384,7 +384,7 @@ class CfgAmmo { ACE_caliber=0.014884; ACE_bulletLength=0.0508; - ACE_bulletMass=1010; + ACE_bulletMass=65.448; 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.620}; ACE_velocityBoundaries[]={}; @@ -397,7 +397,7 @@ class CfgAmmo { ACE_caliber=0.012954; ACE_bulletLength=0.058674; - ACE_bulletMass=647; + ACE_bulletMass=41.9256; 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.670}; ACE_velocityBoundaries[]={}; @@ -410,7 +410,7 @@ class CfgAmmo { ACE_caliber=0.008585; ACE_bulletLength=0.04318; - ACE_bulletMass=300; + ACE_bulletMass=19.44; 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.381}; ACE_velocityBoundaries[]={}; diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp index 9da1f56803..680afacfd6 100644 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ b/optionals/compat_hlcmods_core/CfgAmmo.hpp @@ -10,7 +10,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -23,7 +23,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -36,7 +36,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -49,7 +49,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028397; - ACE_bulletMass=147; + ACE_bulletMass=9.5256; 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.398}; ACE_velocityBoundaries[]={}; @@ -62,7 +62,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.608}; ACE_velocityBoundaries[]={}; @@ -75,7 +75,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -88,7 +88,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -101,7 +101,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.243}; ACE_velocityBoundaries[]={}; @@ -114,7 +114,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.034036; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; ACE_velocityBoundaries[]={}; @@ -127,7 +127,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -140,7 +140,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -153,7 +153,7 @@ class CfgAmmo { ACE_caliber=0.007899; ACE_bulletLength=0.031166; - ACE_bulletMass=174; + ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; ACE_velocityBoundaries[]={671, 549}; @@ -166,7 +166,7 @@ class CfgAmmo { ACE_caliber=0.008077; ACE_bulletLength=0.028651; - ACE_bulletMass=196; + ACE_bulletMass=12.7008; 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.315}; ACE_velocityBoundaries[]={}; @@ -185,7 +185,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -196,7 +196,7 @@ class CfgAmmo }; class FH_545x39_7u1: FH_545x39_Ball { - ACE_bulletMass=80; + ACE_bulletMass=5.184; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_muzzleVelocities[]={260, 303, 320}; ACE_barrelLengths[]={10, 16.3, 20}; @@ -205,7 +205,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.012573; - ACE_bulletMass=28; + ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; ACE_velocityBoundaries[]={}; @@ -218,7 +218,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -231,7 +231,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -252,7 +252,7 @@ class CfgAmmo { ACE_caliber=0.0127; ACE_bulletLength=0.019406; - ACE_bulletMass=165; + ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; ACE_velocityBoundaries[]={}; @@ -265,7 +265,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; @@ -278,7 +278,7 @@ class CfgAmmo { ACE_caliber=0.010897; ACE_bulletLength=0.020422; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; ACE_velocityBoundaries[]={}; @@ -291,7 +291,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.03175; - ACE_bulletMass=350; + ACE_bulletMass=22.68; 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[]={1.056}; ACE_velocityBoundaries[]={}; @@ -304,7 +304,7 @@ class CfgAmmo { ACE_caliber=0.012954; ACE_bulletLength=0.060452; - ACE_bulletMass=660; + ACE_bulletMass=42.768; 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.670}; ACE_velocityBoundaries[]={}; diff --git a/optionals/compat_rh_de/CfgAmmo.hpp b/optionals/compat_rh_de/CfgAmmo.hpp index 3204523bd8..10547b04fd 100644 --- a/optionals/compat_rh_de/CfgAmmo.hpp +++ b/optionals/compat_rh_de/CfgAmmo.hpp @@ -6,7 +6,7 @@ class CfgAmmo { ACE_caliber=0.0127; ACE_bulletLength=0.028194; - ACE_bulletMass=325; + ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.228}; ACE_velocityBoundaries[]={}; @@ -19,7 +19,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.022733; - ACE_bulletMass=325; + ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.171}; ACE_velocityBoundaries[]={}; @@ -32,7 +32,7 @@ class CfgAmmo { ACE_caliber=0.007938; ACE_bulletLength=0.015494; - ACE_bulletMass=65; + ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; ACE_velocityBoundaries[]={}; @@ -45,7 +45,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; @@ -58,7 +58,7 @@ class CfgAmmo { ACE_caliber=0.01016; ACE_bulletLength=0.011354; - ACE_bulletMass=135; + ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.105, 0.115, 0.120, 0.105}; ACE_velocityBoundaries[]={365, 305, 259}; @@ -71,7 +71,7 @@ class CfgAmmo { ACE_caliber=0.010897; ACE_bulletLength=0.020422; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; ACE_velocityBoundaries[]={}; @@ -84,7 +84,7 @@ class CfgAmmo { ACE_caliber=0.009068; ACE_bulletLength=0.013741; - ACE_bulletMass=125; + ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.148}; ACE_velocityBoundaries[]={}; @@ -97,7 +97,7 @@ class CfgAmmo { ACE_caliber=0.007874; ACE_bulletLength=0.013856; - ACE_bulletMass=86; + ACE_bulletMass=5.5728; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; ACE_velocityBoundaries[]={}; @@ -110,7 +110,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; @@ -123,7 +123,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -136,7 +136,7 @@ class CfgAmmo { ACE_caliber=0.005664; ACE_bulletLength=0.01143; - ACE_bulletMass=38; + ACE_bulletMass=2.4624; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.111}; ACE_velocityBoundaries[]={}; @@ -149,7 +149,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.012573; - ACE_bulletMass=28; + ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; ACE_velocityBoundaries[]={}; diff --git a/optionals/compat_rh_m4/CfgAmmo.hpp b/optionals/compat_rh_m4/CfgAmmo.hpp index 9d7f4eec9f..8f8a5f3cf2 100644 --- a/optionals/compat_rh_m4/CfgAmmo.hpp +++ b/optionals/compat_rh_m4/CfgAmmo.hpp @@ -12,7 +12,7 @@ class CfgAmmo { { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -25,7 +25,7 @@ class CfgAmmo { { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=124; + ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; ACE_velocityBoundaries[]={}; @@ -38,7 +38,7 @@ class CfgAmmo { { ACE_caliber=0.009017; ACE_bulletLength=0.015316; - ACE_bulletMass=147; + ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.212}; ACE_velocityBoundaries[]={}; @@ -51,7 +51,7 @@ class CfgAmmo { { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; ACE_velocityBoundaries[]={}; @@ -64,7 +64,7 @@ class CfgAmmo { { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -77,7 +77,7 @@ class CfgAmmo { { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -90,7 +90,7 @@ class CfgAmmo { { ACE_caliber=0.007036; ACE_bulletLength=0.024359; - ACE_bulletMass=115; + ACE_bulletMass=7.452; 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.162}; ACE_velocityBoundaries[]={}; @@ -103,7 +103,7 @@ class CfgAmmo { { ACE_caliber=0.007036; ACE_bulletLength=0.03175; - ACE_bulletMass=135; + ACE_bulletMass=8.748; 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.253}; ACE_velocityBoundaries[]={}; @@ -116,7 +116,7 @@ class CfgAmmo { { ACE_caliber=0.007823; ACE_bulletLength=0.028397; - ACE_bulletMass=147; + ACE_bulletMass=9.5256; 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.398}; ACE_velocityBoundaries[]={}; @@ -129,7 +129,7 @@ class CfgAmmo { { ACE_caliber=0.007823; ACE_bulletLength=0.029286; - ACE_bulletMass=125; + ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; ACE_velocityBoundaries[]={792, 610, 488}; @@ -142,7 +142,7 @@ class CfgAmmo { { ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.608}; ACE_velocityBoundaries[]={}; @@ -155,7 +155,7 @@ class CfgAmmo { { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -168,7 +168,7 @@ class CfgAmmo { { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.243}; ACE_velocityBoundaries[]={}; @@ -181,7 +181,7 @@ class CfgAmmo { { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=130; + ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; ACE_velocityBoundaries[]={}; @@ -194,7 +194,7 @@ class CfgAmmo { { ACE_caliber=0.007823; ACE_bulletLength=0.034036; - ACE_bulletMass=200; + ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; ACE_velocityBoundaries[]={}; diff --git a/optionals/compat_rh_pdw/CfgAmmo.hpp b/optionals/compat_rh_pdw/CfgAmmo.hpp index 76850acf7b..e5877127c3 100644 --- a/optionals/compat_rh_pdw/CfgAmmo.hpp +++ b/optionals/compat_rh_pdw/CfgAmmo.hpp @@ -4,7 +4,7 @@ class RH_B_6x35: BulletBase { ACE_caliber=0.00569; ACE_bulletLength=0.011303; - ACE_bulletMass=65; + ACE_bulletMass=4.212; 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.26}; ACE_velocityBoundaries[]={}; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 1d7fc6bdae..914b2c7fef 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -7,7 +7,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=52.9; + ACE_bulletMass=3.42792; 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.168}; ACE_velocityBoundaries[]={}; @@ -20,7 +20,7 @@ class CfgAmmo { ACE_caliber=0.005588; ACE_bulletLength=0.02159; - ACE_bulletMass=49.8; + ACE_bulletMass=3.22704; 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.168}; ACE_velocityBoundaries[]={}; @@ -34,7 +34,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -47,7 +47,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=149; + ACE_bulletMass=9.6552; 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.395}; ACE_velocityBoundaries[]={}; @@ -60,7 +60,7 @@ class CfgAmmo { ACE_caliber=0.007925; ACE_bulletLength=0.028956; - ACE_bulletMass=152; + ACE_bulletMass=9.8496; 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.4}; ACE_velocityBoundaries[]={}; @@ -73,7 +73,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=123; + ACE_bulletMass=7.9704; 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[]={}; @@ -86,7 +86,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=117; + 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[]={}; @@ -100,7 +100,7 @@ class CfgAmmo { ACE_caliber=0.009017; ACE_bulletLength=0.015494; - ACE_bulletMass=80.2; + ACE_bulletMass=5.19696; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.14}; ACE_velocityBoundaries[]={}; @@ -113,7 +113,7 @@ class CfgAmmo { ACE_caliber=0.009271; ACE_bulletLength=0.015494; - ACE_bulletMass=92.6; + ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 14c3157adf..c6cb7c0097 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -6,7 +6,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.037821; - ACE_bulletMass=220; + ACE_bulletMass=14.256; 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.310}; ACE_velocityBoundaries[]={}; @@ -20,7 +20,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=62; + ACE_bulletMass=4.0176; 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.307}; ACE_velocityBoundaries[]={}; @@ -33,7 +33,7 @@ class CfgAmmo { ACE_caliber=0.00569; ACE_bulletLength=0.023012; - ACE_bulletMass=77; + ACE_bulletMass=4.9896; 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.361}; ACE_velocityBoundaries[]={}; @@ -46,7 +46,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.028956; - ACE_bulletMass=146; + ACE_bulletMass=9.4608; 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.2}; ACE_velocityBoundaries[]={}; @@ -59,7 +59,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=175; + ACE_bulletMass=11.34; 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.243}; ACE_velocityBoundaries[]={}; @@ -72,7 +72,7 @@ class CfgAmmo { ACE_caliber=0.007823; ACE_bulletLength=0.031496; - ACE_bulletMass=127; + ACE_bulletMass=8.2296; 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.377}; ACE_velocityBoundaries[]={}; @@ -85,7 +85,7 @@ class CfgAmmo { ACE_caliber=0.011481; ACE_bulletLength=0.017272; - ACE_bulletMass=230; + ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; ACE_velocityBoundaries[]={}; From 68c912775304069c5cf7f7abe499ffe0b8e2157f Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:39:57 +0200 Subject: [PATCH 0045/1101] Convert ACE_barrelLengths to meters --- addons/ballistics/CfgAmmo.hpp | 92 ++--- extras/CfgAmmoReference.hpp | 412 +++++++++++----------- optionals/compat_cup/CfgAmmo.hpp | 64 ++-- optionals/compat_hlcmods_core/CfgAmmo.hpp | 46 +-- optionals/compat_rh_de/CfgAmmo.hpp | 24 +- optionals/compat_rh_m4/CfgAmmo.hpp | 30 +- optionals/compat_rh_pdw/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 18 +- optionals/compat_rhs_usf3/CfgAmmo.hpp | 14 +- 9 files changed, 351 insertions(+), 351 deletions(-) diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 753c5ba8a1..8c47af9ac3 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -34,7 +34,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class ACE_556x45_Ball_Mk262 : B_556x45_Ball { airFriction=-0.001125; @@ -51,7 +51,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class ACE_556x45_Ball_Mk318 : B_556x45_Ball { airFriction=-0.001120; @@ -68,7 +68,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class ACE_556x45_Ball_M995_AP : B_556x45_Ball { airFriction=-0.001120; @@ -85,7 +85,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={950, 1030, 1040}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class B_556x45_Ball_Tracer_Red; class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red { @@ -106,7 +106,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_556x45_Ball_Tracer_Green; class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green { @@ -126,7 +126,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_65x39_Caseless : BulletBase { airFriction=-0.000785; @@ -140,7 +140,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 788, 800, 810, 830}; - ACE_barrelLengths[]={10, 16, 20, 24, 26, 30}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604, 0.762}; }; class B_65x39_Case_yellow; class ACE_65x39_Caseless_Tracer_Dim : B_65x39_Case_yellow { @@ -163,7 +163,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 790, 820, 830}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_65_Creedmor_Ball: B_65x39_Caseless { airFriction=-0.000651; @@ -178,7 +178,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 820, 840, 852, 860}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class B_762x51_Ball : BulletBase { airFriction=-0.001035; @@ -195,7 +195,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class B_762x51_Tracer_Yellow; class ACE_B_762x51_Tracer_Dim: B_762x51_Tracer_Yellow { @@ -215,7 +215,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball { airFriction=-0.0008525; @@ -231,7 +231,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={775, 790, 805, 810}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball { airFriction=-0.00103; @@ -247,7 +247,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 910}; - ACE_barrelLengths[]={13, 16, 20}; + ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; }; class ACE_762x51_Ball_M993_AP : B_762x51_Ball { airFriction=-0.00103; @@ -263,7 +263,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={875, 910, 930}; - ACE_barrelLengths[]={13, 16, 20}; + ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; }; class ACE_762x51_Ball_Subsonic : B_762x51_Ball { airFriction=-0.000535; @@ -279,7 +279,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_30_06_M1_Ball : B_762x51_Ball { airFriction=-0.0009; @@ -295,7 +295,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 785, 800, 830, 840}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_7_Remington_Magnum_Ball : B_762x51_Ball { airFriction=-0.0008; @@ -311,7 +311,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={720, 780, 812, 822, 830}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_243_Winchester_Ball : B_762x51_Ball { airFriction=-0.00095; @@ -327,7 +327,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={830, 875, 900, 915, 920}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { airFriction=-0.000830; @@ -343,7 +343,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={865, 900, 924}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { airFriction=-0.000815; @@ -359,7 +359,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { airFriction=-0.00076; @@ -375,7 +375,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 853, 884}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; @@ -389,7 +389,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x54_Ball_7N14 : B_762x51_Ball { airFriction=-0.001023; @@ -405,7 +405,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class B_762x54_Tracer_Green; class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green { @@ -424,7 +424,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x35_Ball : B_762x51_Ball { airFriction=-0.000821; @@ -440,7 +440,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={620, 655, 675}; - ACE_barrelLengths[]={9, 16, 20}; + ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; }; class ACE_762x39_Ball : B_762x51_Ball { airFriction=-0.0015168; @@ -456,7 +456,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green { airFriction=-0.0015168; @@ -474,7 +474,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_9x21_Ball : BulletBase { airFriction=-0.00125; @@ -489,7 +489,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={440, 460, 480}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class ACE_9x18_Ball_57N181S : B_9x21_Ball { hit=5; @@ -504,7 +504,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class ACE_9x19_Ball : B_9x21_Ball { airFriction=-0.001234; @@ -519,7 +519,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class ACE_10x25_Ball : B_9x21_Ball { airFriction=-0.00168; @@ -534,7 +534,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={4, 4.61, 9}; + ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; }; class ACE_765x17_Ball: B_9x21_Ball { airFriction=-0.001213; @@ -549,7 +549,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class ACE_303_Ball : ACE_762x51_Ball_M118LR { airFriction=-0.00083; @@ -564,7 +564,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_93x64_Ball : BulletBase { airFriction=-0.00106; @@ -578,7 +578,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={850, 870, 880}; - ACE_barrelLengths[]={20, 24.41, 26}; + ACE_barrelLengths[]={0.508, 0.620014, 0.6604}; }; class B_408_Ball : BulletBase { timeToLive=10; @@ -594,7 +594,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={910}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; @@ -607,7 +607,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={960}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class B_338_Ball : BulletBase { timeToLive=10; @@ -622,7 +622,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={20, 26, 28}; + ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; }; class B_338_NM_Ball : BulletBase { airFriction=-0.000537; @@ -636,7 +636,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={790, 807, 820}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class ACE_338_Ball : B_338_Ball { timeToLive=10; @@ -651,7 +651,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 820, 826, 830}; - ACE_barrelLengths[]={20, 24, 26.5, 28}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6731, 0.7112}; }; class ACE_338_Ball_API526 : B_338_Ball { timeToLive=10; @@ -667,7 +667,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={20, 26, 28}; + ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; }; class B_127x54_Ball : BulletBase { airFriction=-0.00014; @@ -681,7 +681,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={300}; - ACE_barrelLengths[]={17.2}; + ACE_barrelLengths[]={0.43688}; }; class B_127x99_Ball : BulletBase { timeToLive=10; @@ -696,7 +696,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={900}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class ACE_127x99_API : BulletBase { timeToLive=10; @@ -713,7 +713,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={900}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class ACE_127x99_Ball_AMAX : B_127x99_Ball { timeToLive=10; @@ -729,7 +729,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={860}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class B_127x108_Ball : BulletBase { timeToLive=10; @@ -744,7 +744,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; @@ -758,6 +758,6 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; }; diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp index 409109d25b..1d2d5b2700 100644 --- a/extras/CfgAmmoReference.hpp +++ b/extras/CfgAmmoReference.hpp @@ -14,7 +14,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class ACE_556x45_Ball_Mk262 : B_556x45_Ball { airFriction=-0.001125; @@ -31,7 +31,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class ACE_556x45_Ball_Mk318 : B_556x45_Ball { airFriction=-0.001120; @@ -48,7 +48,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class B_556x45_Ball_Tracer_Red; class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red { @@ -69,7 +69,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_556x45_Ball_Tracer_Yellow; class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Yellow { @@ -87,7 +87,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_65x39_Caseless : BulletBase { airFriction=-0.000785; @@ -101,7 +101,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 788, 800, 810, 830}; - ACE_barrelLengths[]={10, 16, 20, 24, 26, 30}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604, 0.762}; }; class B_65x39_Case_yellow; class ACE_65x39_Caseless_Tracer_Dim : B_65x39_Case_yellow { @@ -124,7 +124,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 790, 820, 830}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class B_762x51_Ball : BulletBase { airFriction=-0.001035; @@ -139,7 +139,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class B_762x51_Tracer_Yellow; class ACE_B_762x51_Tracer_Dim: B_762x51_Tracer_Yellow { @@ -159,7 +159,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball { airFriction=-0.00103; @@ -175,7 +175,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 910}; - ACE_barrelLengths[]={13, 16, 20}; + ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; }; class ACE_762x51_Ball_Subsonic : B_762x51_Ball { airFriction=-0.000535; @@ -191,7 +191,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { airFriction=-0.000830; @@ -207,7 +207,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={865, 900, 924}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { airFriction=-0.000815; @@ -223,7 +223,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { airFriction=-0.00076; @@ -239,7 +239,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 853, 884}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; @@ -253,7 +253,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x54_Ball_7N14 : B_762x51_Ball { airFriction=-0.001023; @@ -269,7 +269,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class B_762x54_Tracer_Green; class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green { @@ -286,7 +286,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class ACE_762x35_Ball : B_762x51_Ball { airFriction=-0.000821; @@ -302,7 +302,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={620, 655, 675}; - ACE_barrelLengths[]={9, 16, 20}; + ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; }; class ACE_762x39_Ball : B_762x51_Ball { airFriction=-0.0015168; @@ -317,7 +317,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class ACE_762x39_Ball_57N231P : B_762x51_Tracer_Yellow { airFriction=-0.0015168; @@ -332,7 +332,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_9x21_Ball : BulletBase { airFriction=-0.00125; @@ -347,7 +347,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={440, 460, 480}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class ACE_9x18_Ball_57N181S : B_9x21_Ball { hit=5; @@ -362,7 +362,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class ACE_9x19_Ball : B_9x21_Ball { airFriction=-0.001234; @@ -377,7 +377,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class ACE_10x25_Ball : B_9x21_Ball { airFriction=-0.00168; @@ -392,7 +392,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={4, 4.61, 9}; + ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; }; class ACE_765x17_Ball: B_9x21_Ball { airFriction=-0.001213; @@ -407,7 +407,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class ACE_303_Ball : ACE_762x51_Ball_M118LR { airFriction=-0.00083; @@ -421,7 +421,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_93x64_Ball : BulletBase { airFriction=-0.00106; @@ -436,7 +436,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={850, 870, 880}; - ACE_barrelLengths[]={20, 24.41, 26}; + ACE_barrelLengths[]={0.508, 0.620014, 0.6604}; }; class B_408_Ball : BulletBase { timeToLive=10; @@ -452,7 +452,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={910}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; @@ -465,7 +465,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={960}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class B_338_Ball : BulletBase { timeToLive=10; @@ -480,7 +480,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={20, 26, 28}; + ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; }; class B_338_NM_Ball : BulletBase { airFriction=-0.000537; @@ -494,7 +494,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={790, 807, 820}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class ACE_338_Ball : B_338_Ball { timeToLive=10; @@ -510,7 +510,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 820, 826, 830}; - ACE_barrelLengths[]={20, 24, 26.5, 28}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6731, 0.7112}; }; class ACE_338_Ball_API526 : B_338_Ball { timeToLive=10; @@ -526,7 +526,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={20, 26, 28}; + ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; }; class B_127x54_Ball : BulletBase { airFriction=-0.00014; @@ -540,7 +540,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={300}; - ACE_barrelLengths[]={17.2}; + ACE_barrelLengths[]={0.43688}; }; class B_127x99_Ball : BulletBase { timeToLive=10; @@ -555,7 +555,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class ACE_127x99_Ball_AMAX : B_127x99_Ball { timeToLive=10; @@ -570,7 +570,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={860}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class B_127x108_Ball : BulletBase { timeToLive=10; @@ -585,7 +585,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; @@ -599,7 +599,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class TMR_B_762x51_M118LR : B_762x51_Ball @@ -613,7 +613,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class RH_50_AE_Ball: BulletBase @@ -627,7 +627,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 398, 420}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_454_Casull: BulletBase { @@ -640,7 +640,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={450, 490, 500}; - ACE_barrelLengths[]={4, 7.5, 9}; + ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; }; class RH_32ACP: BulletBase { @@ -653,7 +653,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_45ACP: BulletBase { @@ -666,7 +666,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_B_40SW: BulletBase { @@ -679,7 +679,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_44mag_ball: BulletBase { @@ -692,7 +692,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 390, 420}; - ACE_barrelLengths[]={4, 7.5, 9}; + ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; }; class RH_357mag_ball: BulletBase { @@ -705,7 +705,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={490, 510, 535}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_762x25: BulletBase { @@ -718,7 +718,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_9x18_Ball: BulletBase { @@ -731,7 +731,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class RH_B_9x19_Ball: BulletBase { @@ -744,7 +744,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_B_22LR_SD: BulletBase { @@ -757,7 +757,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={330, 340, 360}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_57x28mm: BulletBase { @@ -770,7 +770,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={550, 625, 720}; - ACE_barrelLengths[]={4, 6, 10.35}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.26289}; }; class RH_9x19_B_M822: BulletBase @@ -784,7 +784,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_9x19_B_HP: BulletBase { @@ -797,7 +797,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_9x19_B_HPSB: BulletBase { @@ -810,7 +810,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={295, 310, 330}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_B_6x35: BulletBase { @@ -823,7 +823,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={730, 750, 760}; - ACE_barrelLengths[]={8, 10, 12}; + ACE_barrelLengths[]={0.2032, 0.254, 0.3048}; }; class RH_556x45_B_M855A1 : B_556x45_Ball { @@ -836,7 +836,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class RH_556x45_B_Mk262 : B_556x45_Ball { @@ -849,7 +849,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class RH_556x45_B_Mk318 : B_556x45_Ball { @@ -862,7 +862,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class RH_68x43_B_FMJ: B_65x39_Caseless { @@ -875,7 +875,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={713, 785, 810, 850}; - ACE_barrelLengths[]={12, 16, 20, 24}; + ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; }; class RH_68x43_B_Match: B_65x39_Caseless { @@ -888,7 +888,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 732, 750, 780}; - ACE_barrelLengths[]={12, 16, 20, 24}; + ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; }; class RH_762x35_B_FMJ: B_65x39_Caseless { @@ -901,7 +901,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={6, 16, 20}; + ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; }; class RH_762x35_B_Match: B_65x39_Caseless { @@ -914,7 +914,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={590, 650, 665}; - ACE_barrelLengths[]={6, 16, 20}; + ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; }; class RH_762x35_B_MSB: B_65x39_Caseless { @@ -927,7 +927,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={9, 16, 20}; + ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; }; class RH_762x51_B_M80A1 : B_762x51_Ball { @@ -940,7 +940,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class RH_762x51_B_Mk316LR : B_762x51_Ball { @@ -953,7 +953,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class RH_762x51_B_Mk319 : B_762x51_Ball { @@ -966,7 +966,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 920}; - ACE_barrelLengths[]={13, 16, 20}; + ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; }; class RH_762x51_B_LFMJSB: B_762x51_Ball { @@ -979,7 +979,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_556NATO_SOST: BulletBase @@ -993,7 +993,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class HLC_556NATO_SPR: BulletBase { @@ -1006,7 +1006,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class HLC_556NATO_EPR: BulletBase { @@ -1019,7 +1019,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class HLC_300Blackout_Ball: BulletBase { @@ -1032,7 +1032,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={6, 16, 20}; + ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; }; class HLC_300Blackout_SMK: BulletBase { @@ -1045,7 +1045,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={9, 16, 20}; + ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; }; class HLC_762x51_BTSub: BulletBase { @@ -1058,7 +1058,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_762x54_ball: BulletBase { @@ -1071,7 +1071,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_762x54_tracer: BulletBase { @@ -1084,7 +1084,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_303Brit_B: BulletBase { @@ -1097,7 +1097,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class HLC_792x57_Ball: BulletBase { @@ -1110,7 +1110,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={785, 800, 815}; - ACE_barrelLengths[]={20, 23.62, 26}; + ACE_barrelLengths[]={0.508, 0.599948, 0.6604}; }; class FH_545x39_Ball: BulletBase { @@ -1123,14 +1123,14 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class FH_545x39_7u1: FH_545x39_Ball { ACE_bulletMass=5.184; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_muzzleVelocities[]={260, 303, 320}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class HLC_9x19_Ball: BulletBase { @@ -1143,7 +1143,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class HLC_9x19_GoldDot: HLC_9x19_Ball { @@ -1164,7 +1164,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={4, 4.61, 9}; + ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; }; class HLC_9x19_M882_SMG: HLC_9x19_Ball { @@ -1177,7 +1177,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class M_mas_545x39_Ball_7N6M : BulletBase @@ -1191,7 +1191,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class M_mas_545x39_Ball_7T3M : BulletBase { @@ -1204,7 +1204,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_mas_556x45_Ball_Mk262 : B_556x45_Ball { @@ -1217,7 +1217,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class B_mas_9x18_Ball_57N181S : BulletBase { @@ -1230,7 +1230,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class B_mas_9x21p_Ball: BulletBase { @@ -1243,7 +1243,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class B_mas_9x21_Ball: BulletBase { @@ -1256,7 +1256,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class B_mas_9x21d_Ball: BulletBase { @@ -1269,7 +1269,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={210, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class B_mas_765x17_Ball: BulletBase { @@ -1282,7 +1282,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class B_mas_762x39_Ball: BulletBase { @@ -1295,7 +1295,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_mas_762x39_Ball_T: BulletBase { @@ -1308,7 +1308,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_mas_762x51_Ball_M118LR : B_762x51_Ball { @@ -1321,7 +1321,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class B_mas_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { @@ -1334,7 +1334,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={865, 900, 924}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_mas_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { @@ -1347,7 +1347,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 867, 900}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_mas_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { @@ -1360,7 +1360,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 853, 884}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_mas_762x54_Ball : BulletBase { @@ -1373,7 +1373,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class B_mas_762x54_Ball_T : BulletBase { @@ -1386,7 +1386,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class BWA3_B_762x51_Ball_LR : BulletBase { @@ -1399,7 +1399,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class BWA3_B_762x51_Ball_SD : BulletBase { @@ -1412,7 +1412,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={300, 340}; - ACE_barrelLengths[]={16, 24}; + ACE_barrelLengths[]={0.4064, 0.6096}; }; class BWA3_B_46x30_Ball : BulletBase @@ -1426,7 +1426,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 720, 730, 740}; - ACE_barrelLengths[]={4, 7, 9, 12}; + ACE_barrelLengths[]={0.1016, 0.1778, 0.2286, 0.3048}; }; class Trixie_338_Ball : BulletBase @@ -1440,7 +1440,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; - ACE_barrelLengths[]={24, 26.5, 28}; + ACE_barrelLengths[]={0.6096, 0.6731, 0.7112}; }; class Trixie_303_Ball : BulletBase { @@ -1453,7 +1453,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class rhs_ammo_556x45_Mk318_Ball : BulletBase @@ -1467,7 +1467,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class rhs_ammo_556x45_Mk262_Ball : BulletBase { @@ -1480,7 +1480,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class rhsammo_762x51_Ball : BulletBase { @@ -1493,7 +1493,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_B_545x39_Ball : BulletBase { @@ -1506,7 +1506,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class rhs_B_545x39_Ball_Tracer_Green : BulletBase { @@ -1519,7 +1519,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class rhs_ammo_762x51_M118_Special_Ball : BulletBase { @@ -1532,7 +1532,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_B_762x54_Ball : BulletBase { @@ -1545,7 +1545,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_B_762x54_Ball_Tracer_Green : BulletBase { @@ -1558,7 +1558,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_B_762x39_Ball : BulletBase { @@ -1571,7 +1571,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class rhs_B_762x39_Tracer : BulletBase { @@ -1584,7 +1584,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class rhs_ammo_762x51_M80_Ball : BulletBase { @@ -1597,7 +1597,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class rhsusf_B_300winmag : BulletBase { @@ -1610,7 +1610,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class R3F_9x19_Ball: BulletBase @@ -1624,7 +1624,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class R3F_556x45_Ball: BulletBase { @@ -1637,7 +1637,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class R3F_762x51_Ball: BulletBase { @@ -1650,7 +1650,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class R3F_762x51_Ball2: BulletBase { @@ -1663,7 +1663,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class R3F_127x99_Ball: BulletBase { @@ -1676,7 +1676,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class R3F_127x99_Ball2: BulletBase { @@ -1689,7 +1689,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class CUP_B_545x39_Ball: BulletBase @@ -1703,7 +1703,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_Green: BulletBase { @@ -1716,7 +1716,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { @@ -1729,7 +1729,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { @@ -1742,7 +1742,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { @@ -1755,7 +1755,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_762x39_Ball: BulletBase { @@ -1768,7 +1768,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { @@ -1781,7 +1781,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_762x39mm_KLT: BulletBase { @@ -1794,7 +1794,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_9x18_Ball: BulletBase { @@ -1807,7 +1807,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { @@ -1820,7 +1820,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { @@ -1833,7 +1833,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { @@ -1846,7 +1846,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { @@ -1859,7 +1859,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x19_Ball: BulletBase { @@ -1872,7 +1872,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class CUP_B_762x51_noTracer: BulletBase { @@ -1885,7 +1885,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_Red_Tracer_3RndBurst: BulletBase { @@ -1898,7 +1898,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_White_Tracer_3RndBurst: BulletBase { @@ -1911,7 +1911,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_303_Ball: BulletBase { @@ -1924,7 +1924,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { @@ -1937,7 +1937,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { @@ -1950,7 +1950,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { @@ -1963,7 +1963,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { @@ -1976,7 +1976,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { @@ -1989,7 +1989,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { @@ -2002,7 +2002,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_9x39_SP5: BulletBase { @@ -2015,7 +2015,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_762x51_Tracer_Green: BulletBase { @@ -2028,7 +2028,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_Tracer_Red: BulletBase { @@ -2041,7 +2041,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_Tracer_Yellow: BulletBase { @@ -2054,7 +2054,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_Tracer_White: BulletBase { @@ -2067,7 +2067,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class B_127x107_Ball: BulletBase { @@ -2080,7 +2080,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class CUP_B_9x18_SD: BulletBase { @@ -2093,7 +2093,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 340}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_765x17_Ball: BulletBase { @@ -2106,7 +2106,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { @@ -2119,7 +2119,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; - ACE_barrelLengths[]={53}; + ACE_barrelLengths[]={1.3462}; }; class CUP_B_127x99_Ball_White_Tracer: BulletBase { @@ -2132,7 +2132,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class CUP_B_86x70_Ball_noTracer: BulletBase { @@ -2145,7 +2145,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; - ACE_barrelLengths[]={24, 26.5, 28}; + ACE_barrelLengths[]={0.6096, 0.6731, 0.7112}; }; class VTN_9x18_Ball_FMJ: B_9x21_Ball @@ -2159,7 +2159,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class VTN_9x18_Ball_SC: VTN_9x18_Ball_FMJ { @@ -2172,7 +2172,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class VTN_9x18_Ball_TRC: VTN_9x18_Ball_FMJ { @@ -2185,7 +2185,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class VTN_9x18_Ball_AP1: VTN_9x18_Ball_FMJ { @@ -2198,7 +2198,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class VTN_9x18_Ball_AP2: VTN_9x18_Ball_FMJ { @@ -2211,7 +2211,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class VTN_9x18_Ball_PRS: VTN_9x18_Ball_FMJ { @@ -2224,7 +2224,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class VTN_9x19_Ball_SC: VTN_9x18_Ball_FMJ { @@ -2237,7 +2237,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_9x19_Ball_TRC: VTN_9x19_Ball_SC { @@ -2250,7 +2250,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_9x19_Ball_AP: VTN_9x19_Ball_SC { @@ -2263,7 +2263,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_9x19_Ball_PRS: VTN_9x19_Ball_SC { @@ -2276,7 +2276,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_9x39_Ball_SC: B_9x21_Ball { @@ -2289,7 +2289,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_9x39_Ball_AP: VTN_9x39_Ball_SC { @@ -2302,7 +2302,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_545x39_Ball_SC: B_556x45_Ball { @@ -2315,7 +2315,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_545x39_Ball_TRC: VTN_545x39_Ball_SC { @@ -2328,7 +2328,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_545x39_Ball_AP: VTN_545x39_Ball_TRC { @@ -2341,7 +2341,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_545x39_Ball_AP2: VTN_545x39_Ball_AP { @@ -2354,7 +2354,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_545x39_Ball_SS: VTN_545x39_Ball_SC { @@ -2367,7 +2367,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_762x39_Ball_SC: B_762x51_Ball { @@ -2380,7 +2380,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_762x39_Ball_TRC: VTN_762x39_Ball_SC { @@ -2393,7 +2393,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_762x39_Ball_AP: VTN_762x39_Ball_TRC { @@ -2406,7 +2406,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_762x39_Ball_INC: VTN_762x39_Ball_AP { @@ -2419,7 +2419,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_762x39_Ball_API: VTN_762x39_Ball_INC { @@ -2432,7 +2432,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_762x39_Ball_SS: VTN_762x39_Ball_SC { @@ -2445,7 +2445,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_762x41_Ball_SS: B_762x51_Ball { @@ -2458,7 +2458,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={200, 210, 220}; - ACE_barrelLengths[]={4, 6, 8}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2032}; }; class VTN_762x54_Ball_SC: VTN_762x39_Ball_SC { @@ -2471,7 +2471,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x54_Ball_TRC: VTN_762x54_Ball_SC { @@ -2484,7 +2484,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x54_Ball_AP: VTN_762x54_Ball_TRC { @@ -2497,7 +2497,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x54_Ball_INC: VTN_762x54_Ball_AP { @@ -2510,7 +2510,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x54_Ball_API: VTN_762x54_Ball_INC { @@ -2523,7 +2523,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_145x114_Ball_APT: B_127x108_Ball { @@ -2536,7 +2536,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; - ACE_barrelLengths[]={53}; + ACE_barrelLengths[]={1.3462}; }; class VTN_6mm_BB: B_65x39_Caseless { @@ -2549,7 +2549,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={100}; - ACE_barrelLengths[]={15}; + ACE_barrelLengths[]={0.381}; }; class VTN_9x19_Ball_FMJ: B_9x21_Ball { @@ -2562,7 +2562,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_556x45_Ball_FMJ: B_556x45_Ball { @@ -2575,7 +2575,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class VTN_556x45_Ball_TRC: VTN_556x45_Ball_FMJ { @@ -2588,7 +2588,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class VTN_556x45_Ball_TRCN: VTN_556x45_Ball_TRC { @@ -2601,7 +2601,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class VTN_556x45_Ball_SC: VTN_556x45_Ball_FMJ { @@ -2614,7 +2614,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class VTN_556x45_Ball_AP: VTN_556x45_Ball_TRC { @@ -2627,7 +2627,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class VTN_556x45_Ball_INC: VTN_556x45_Ball_AP { @@ -2640,7 +2640,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class VTN_556x45_Ball_LR: VTN_556x45_Ball_FMJ { @@ -2653,7 +2653,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class VTN_556x45_Ball_SS: B_556x45_Ball { @@ -2666,7 +2666,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={10, 20.0, 24.0}; + ACE_barrelLengths[]={0.254, 0.508, 0.6096}; }; class VTN_762x51_Ball_SC: B_762x51_Ball { @@ -2679,7 +2679,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x51_Ball_TRC: VTN_762x51_Ball_SC { @@ -2692,7 +2692,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x51_Ball_TRCN: VTN_762x51_Ball_TRC { @@ -2705,7 +2705,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x51_Ball_AP: VTN_762x51_Ball_TRC { @@ -2718,7 +2718,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_762x51_Ball_LR: VTN_762x51_Ball_SC { @@ -2731,7 +2731,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class VTN_1143x23_Ball_FMJ: B_408_Ball { @@ -2744,7 +2744,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_1143x23_Ball_HP: VTN_1143x23_Ball_FMJ { @@ -2757,7 +2757,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_1143x23_Ball_JHP: VTN_1143x23_Ball_FMJ { @@ -2770,7 +2770,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class VTN_762x39_Ball_FMJ: B_762x51_Ball { @@ -2783,7 +2783,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class VTN_45_Pellet: B_762x51_Ball { @@ -2796,6 +2796,6 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={100, 138, 150}; - ACE_barrelLengths[]={5, 10, 16}; + ACE_barrelLengths[]={0.127, 0.254, 0.4064}; }; }; \ No newline at end of file diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 00151cddb8..a03d38bf03 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -14,7 +14,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { @@ -27,7 +27,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { @@ -40,7 +40,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { @@ -53,7 +53,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { @@ -66,7 +66,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_762x39_Ball: BulletBase { @@ -79,7 +79,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { @@ -92,7 +92,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_9x18_Ball: BulletBase { @@ -105,7 +105,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { @@ -118,7 +118,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { @@ -131,7 +131,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { @@ -144,7 +144,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { @@ -157,7 +157,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_9x19_Ball: BulletBase { @@ -170,7 +170,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class CUP_B_762x51_noTracer: B_762x51_Ball { @@ -183,7 +183,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_303_Ball: BulletBase { @@ -196,7 +196,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { @@ -209,7 +209,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { @@ -222,7 +222,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { @@ -235,7 +235,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { @@ -248,7 +248,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { @@ -261,7 +261,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { @@ -274,7 +274,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_9x39_SP5: BulletBase { @@ -287,7 +287,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class CUP_B_762x51_Tracer_Green: BulletBase { @@ -300,7 +300,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_Tracer_Red: BulletBase { @@ -313,7 +313,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_Tracer_Yellow: BulletBase { @@ -326,7 +326,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class CUP_B_762x51_Tracer_White: BulletBase { @@ -339,7 +339,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class B_127x107_Ball: BulletBase { @@ -352,7 +352,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={28.7}; + ACE_barrelLengths[]={0.72898}; }; class CUP_B_9x18_SD: BulletBase { @@ -365,7 +365,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 340}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class CUP_B_765x17_Ball: BulletBase { @@ -378,7 +378,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { @@ -391,7 +391,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; - ACE_barrelLengths[]={53}; + ACE_barrelLengths[]={1.3462}; }; class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { @@ -404,7 +404,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class CUP_B_86x70_Ball_noTracer: BulletBase { @@ -417,6 +417,6 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; - ACE_barrelLengths[]={24, 26.5, 28}; + ACE_barrelLengths[]={0.6096, 0.6731, 0.7112}; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp index 680afacfd6..fdc4e538b7 100644 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ b/optionals/compat_hlcmods_core/CfgAmmo.hpp @@ -17,7 +17,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class HLC_556NATO_SOST: B_556x45_Ball { @@ -30,7 +30,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class HLC_556NATO_SPR: B_556x45_Ball { @@ -43,7 +43,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class HLC_300Blackout_Ball: B_556x45_Ball { @@ -56,7 +56,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={6, 16, 20}; + ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; }; class HLC_300Blackout_SMK: HLC_300Blackout_Ball { @@ -69,7 +69,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={9, 16, 20}; + ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; }; class HLC_762x39_Ball: HLC_300Blackout_Ball { @@ -82,7 +82,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class HLC_762x39_Tracer: HLC_762x39_Ball { @@ -95,7 +95,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class HLC_762x51_MK316_20in: B_762x51_Ball { @@ -108,7 +108,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_762x51_BTSub: B_762x51_Ball { @@ -121,7 +121,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_762x54_ball: HLC_762x51_ball { @@ -134,7 +134,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_762x54_tracer: HLC_762x51_tracer { @@ -147,7 +147,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class HLC_303Brit_B: B_556x45_Ball { @@ -160,7 +160,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class HLC_792x57_Ball: HLC_303Brit_B { @@ -173,7 +173,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={785, 800, 815}; - ACE_barrelLengths[]={20, 23.62, 26}; + ACE_barrelLengths[]={0.508, 0.599948, 0.6604}; }; class HLC_542x42_ball: HLC_303Brit_B { @@ -192,14 +192,14 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class FH_545x39_7u1: FH_545x39_Ball { ACE_bulletMass=5.184; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_muzzleVelocities[]={260, 303, 320}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class HLC_57x28mm_JHP: FH_545x39_Ball { @@ -212,7 +212,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={550, 625, 720}; - ACE_barrelLengths[]={4, 6, 10.35}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.26289}; }; class HLC_9x19_Ball: B_556x45_Ball { @@ -225,7 +225,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class HLC_9x19_M882_SMG: B_556x45_Ball { @@ -238,7 +238,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class HLC_9x19_GoldDot: HLC_9x19_Ball { @@ -259,7 +259,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={4, 4.61, 9}; + ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; }; class HLC_45ACP_Ball: B_556x45_Ball { @@ -272,7 +272,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class FH_44Mag: HLC_45ACP_Ball { @@ -285,7 +285,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 390, 420}; - ACE_barrelLengths[]={4, 7.5, 9}; + ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; }; class FH_50BMG_SLAP: B_127x99_Ball { @@ -298,7 +298,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1204}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; class FH_50BMG_Raufoss: B_127x99_Ball { @@ -311,6 +311,6 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={817}; - ACE_barrelLengths[]={29}; + ACE_barrelLengths[]={0.7366}; }; }; diff --git a/optionals/compat_rh_de/CfgAmmo.hpp b/optionals/compat_rh_de/CfgAmmo.hpp index 10547b04fd..cceef5ef4f 100644 --- a/optionals/compat_rh_de/CfgAmmo.hpp +++ b/optionals/compat_rh_de/CfgAmmo.hpp @@ -13,7 +13,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 398, 420}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_454_Casull: BulletBase { @@ -26,7 +26,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={450, 490, 500}; - ACE_barrelLengths[]={4, 7.5, 9}; + ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; }; class RH_32ACP: BulletBase { @@ -39,7 +39,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_45ACP: BulletBase { @@ -52,7 +52,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_B_40SW: BulletBase { @@ -65,7 +65,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_44mag_ball: BulletBase { @@ -78,7 +78,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 390, 420}; - ACE_barrelLengths[]={4, 7.5, 9}; + ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; }; class RH_357mag_ball: BulletBase { @@ -91,7 +91,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={490, 510, 535}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_762x25: BulletBase { @@ -104,7 +104,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_9x18_Ball: BulletBase { @@ -117,7 +117,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; class RH_B_9x19_Ball: BulletBase { @@ -130,7 +130,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_B_22LR_SD: BulletBase { @@ -143,7 +143,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={330, 340, 360}; - ACE_barrelLengths[]={4, 6, 9}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; }; class RH_57x28mm: BulletBase { @@ -156,6 +156,6 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={550, 625, 720}; - ACE_barrelLengths[]={4, 6, 10.35}; + ACE_barrelLengths[]={0.1016, 0.1524, 0.26289}; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_m4/CfgAmmo.hpp b/optionals/compat_rh_m4/CfgAmmo.hpp index 8f8a5f3cf2..3138de15f0 100644 --- a/optionals/compat_rh_m4/CfgAmmo.hpp +++ b/optionals/compat_rh_m4/CfgAmmo.hpp @@ -19,7 +19,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_9x19_B_HP: BulletBase { @@ -32,7 +32,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_9x19_B_HPSB: BulletBase { @@ -45,7 +45,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={295, 310, 330}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class RH_556x45_B_M855A1: B_556x45_Ball { @@ -58,7 +58,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0}; + ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; }; class RH_556x45_B_Mk318: B_556x45_Ball { @@ -71,7 +71,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class RH_556x45_B_Mk262: B_556x45_Ball { @@ -84,7 +84,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class RH_68x43_B_FMJ: B_65x39_Caseless { @@ -97,7 +97,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={713, 785, 810, 850}; - ACE_barrelLengths[]={12, 16, 20, 24}; + ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; }; class RH_68x43_B_Match: B_65x39_Caseless { @@ -110,7 +110,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 732, 750, 780}; - ACE_barrelLengths[]={12, 16, 20, 24}; + ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; }; class RH_762x35_B_FMJ: B_65x39_Caseless { @@ -123,7 +123,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={6, 16, 20}; + ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; }; class RH_762x35_B_Match: B_65x39_Caseless { @@ -136,7 +136,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={572, 676, 700}; - ACE_barrelLengths[]={6, 16, 20}; + ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; }; class RH_762x35_B_MSB: B_65x39_Caseless { @@ -149,7 +149,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={9, 16, 20}; + ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; }; class RH_762x51_B_M80A1: B_762x51_Ball { @@ -162,7 +162,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class RH_762x51_B_Mk316LR: B_762x51_Ball { @@ -175,7 +175,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={775, 790, 805, 810}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class RH_762x51_B_Mk319: B_762x51_Ball { @@ -188,7 +188,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 910}; - ACE_barrelLengths[]={13, 16, 20}; + ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; }; class RH_762x51_B_LFMJSB: B_762x51_Ball { @@ -201,6 +201,6 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; }; diff --git a/optionals/compat_rh_pdw/CfgAmmo.hpp b/optionals/compat_rh_pdw/CfgAmmo.hpp index e5877127c3..dad1d093d4 100644 --- a/optionals/compat_rh_pdw/CfgAmmo.hpp +++ b/optionals/compat_rh_pdw/CfgAmmo.hpp @@ -11,5 +11,5 @@ class RH_B_6x35: BulletBase ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={730, 750, 760}; - ACE_barrelLengths[]={8, 10, 12}; + ACE_barrelLengths[]={0.2032, 0.254, 0.3048}; }; \ No newline at end of file diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 914b2c7fef..486fc265f6 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -14,7 +14,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { @@ -27,7 +27,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_762x51_Ball; class rhs_B_762x54_Ball: B_762x51_Ball @@ -41,7 +41,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { @@ -54,7 +54,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { @@ -67,7 +67,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_B_762x39_Ball: B_762x51_Ball { @@ -80,7 +80,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { @@ -93,7 +93,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={10, 16.3, 20}; + ACE_barrelLengths[]={0.254, 0.41402, 0.508}; }; class B_9x21_Ball; class rhs_B_9x19_7N21: B_9x21_Ball @@ -107,7 +107,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={445, 460, 480}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; class rhs_B_9x18_57N181S: B_9x21_Ball { @@ -120,6 +120,6 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={3.8, 5, 9}; + ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; }; }; \ No newline at end of file diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index c6cb7c0097..58b50b68cf 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -13,7 +13,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={20, 24, 26}; + ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; }; class B_556x45_Ball; class rhs_ammo_556x45_Mk318_Ball: B_556x45_Ball @@ -27,7 +27,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={10, 15.5, 20}; + ACE_barrelLengths[]={0.254, 0.3937, 0.508}; }; class rhs_ammo_556x45_Mk262_Ball: B_556x45_Ball { @@ -40,7 +40,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={7.5, 14.5, 18, 20}; + ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; }; class rhs_ammo_762x51_M80_Ball: BulletBase { @@ -53,7 +53,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={10, 16, 20, 24, 26}; + ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_ammo_762x51_M118_Special_Ball: rhs_ammo_762x51_M80_Ball { @@ -66,7 +66,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; }; class rhs_ammo_762x51_M993_Ball: rhs_ammo_762x51_M80_Ball { @@ -79,7 +79,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={875, 910, 930}; - ACE_barrelLengths[]={13, 16, 20}; + ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; }; class rhs_ammo_45ACP_MHP: BulletBase { @@ -92,6 +92,6 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={4, 5, 9}; + ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; }; }; \ No newline at end of file From 3313582aece017c9b2a4a7028aa4af3a49356632 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:41:54 +0200 Subject: [PATCH 0046/1101] Convert ACE_barrelTwist to meters --- .../functions/fnc_handleFired.sqf | 2 +- addons/ballistics/CfgWeapons.hpp | 82 +- extras/CfgWeaponsReference.hpp | 736 +++++++++--------- optionals/compat_hlc_ar15/CfgWeapons.hpp | 24 +- optionals/compat_hlc_wp_mp5/CfgWeapons.hpp | 22 +- optionals/compat_hlcmods_ak/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_aug/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_fal/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_g3/CfgWeapons.hpp | 16 +- optionals/compat_hlcmods_m14/CfgWeapons.hpp | 4 +- optionals/compat_hlcmods_m60e4/CfgWeapons.hpp | 4 +- optionals/compat_rh_de/CfgWeapons.hpp | 54 +- optionals/compat_rh_m4/CfgWeapons.hpp | 50 +- optionals/compat_rh_pdw/CfgWeapons.hpp | 2 +- optionals/compat_rhs_afrf3/CfgWeapons.hpp | 20 +- optionals/compat_rhs_usf3/CfgWeapons.hpp | 24 +- 16 files changed, 547 insertions(+), 547 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 8f68ce6678..23da76ad2c 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -94,7 +94,7 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { _caliber = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); _bulletLength = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); _bulletMass = 15.432 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); -_barrelTwist = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); +_barrelTwist = 39.37 * getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); _stabilityFactor = 1.5; if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 0f9dbcfbe4..dbc9293296 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -65,7 +65,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -1.0; - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16.0; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -92,7 +92,7 @@ class CfgWeapons { "ACE_30Rnd_65_Creedmor_mag" }; initSpeed = -1.018; - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=18; class Single: Single { dispersion = 0.00029; // radians. Equal to 1 MOA. @@ -137,7 +137,7 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_H"}; }; }; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; class manual: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. @@ -154,7 +154,7 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_B"}; }; }; - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18.1; class FullAuto: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. @@ -241,7 +241,7 @@ class CfgWeapons { class hgun_P07_F: Pistol_Base_F { initSpeed = -0.9778; - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -253,7 +253,7 @@ class CfgWeapons { class hgun_Rook40_F: Pistol_Base_F { initSpeed = -1.0; - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.4; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -265,7 +265,7 @@ class CfgWeapons { class hgun_ACPC2_F: Pistol_Base_F { initSpeed = -1.0; - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -276,7 +276,7 @@ class CfgWeapons { class hgun_Pistol_heavy_01_F: Pistol_Base_F { initSpeed = -0.96; - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -287,7 +287,7 @@ class CfgWeapons { class hgun_Pistol_heavy_02_F: Pistol_Base_F { initSpeed = -0.92; - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=3; /* class WeaponSlotsInfo: WeaponSlotsInfo { @@ -300,7 +300,7 @@ class CfgWeapons { }; class hgun_PDW2000_F: pdw2000_base_F { initSpeed = -1.157; - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=7; }; class arifle_Katiba_F: arifle_katiba_Base_F { @@ -310,7 +310,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; initSpeed = -1.08; - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=28.7; }; class arifle_Katiba_C_F: arifle_katiba_Base_F { @@ -320,7 +320,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; initSpeed = -1.07; - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=26.8; }; class arifle_Katiba_GL_F: arifle_katiba_Base_F { @@ -330,7 +330,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; initSpeed = -1.08; - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=28.7; }; class arifle_MX_F: arifle_MX_Base_F { @@ -340,7 +340,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -0.99; - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=14.5; }; class arifle_MX_GL_F: arifle_MX_Base_F { @@ -350,12 +350,12 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -0.99; - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=14.5; }; /* class arifle_MX_SW_F: arifle_MX_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16.0; }; */ @@ -366,12 +366,12 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -0.965; - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=10.5; }; /* class arifle_MXM_F: arifle_MX_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=18; }; */ @@ -388,12 +388,12 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.989; - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=18; }; class SMG_02_F: SMG_02_base_F { initSpeed = -1.054; - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=7.7; }; class arifle_TRG20_F: Tavor_base_F { @@ -408,7 +408,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.95; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=15; }; class arifle_TRG21_F: Tavor_base_F { @@ -423,7 +423,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.989; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18.1; }; class arifle_TRG21_GL_F: arifle_TRG21_F { @@ -438,12 +438,12 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.989; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18.1; }; /* class LMG_Zafir_F: Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18.1; }; */ @@ -459,7 +459,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.98; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=17.4; }; class arifle_Mk20C_F: mk20_base_F { @@ -474,7 +474,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.956; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16; }; class arifle_Mk20_GL_F: mk20_base_F { @@ -489,12 +489,12 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.956; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16; }; class SMG_01_F: SMG_01_Base { initSpeed = -1.016; - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5.5; }; class srifle_DMR_01_F: DMR_01_base_F { @@ -503,7 +503,7 @@ class CfgWeapons { "ACE_10Rnd_762x54_Tracer_mag" }; initSpeed = -1.025; - ACE_barrelTwist=9.5; + ACE_barrelTwist=0.2413; ACE_barrelLength=24; }; class srifle_EBR_F: EBR_base_F { @@ -518,19 +518,19 @@ class CfgWeapons { "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9724; - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; /* class LMG_Mk200_F: Rifle_Long_Base_F { initSpeed = -1.0; - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; */ class srifle_LRR_F: LRR_base_F { initSpeed = -1.0; - ACE_barrelTwist=13; + ACE_barrelTwist=0.3302; ACE_barrelLength=29; }; class srifle_GM6_F: GM6_base_F { @@ -542,7 +542,7 @@ class CfgWeapons { "ACE_5Rnd_127x99_AMAX_Mag" }; initSpeed = -1.0; - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=36.6; }; class srifle_DMR_02_F: DMR_02_base_F { @@ -555,7 +555,7 @@ class CfgWeapons { "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag" }; initSpeed = -0.962; - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=20; }; class srifle_DMR_03_F: DMR_03_base_F { @@ -570,17 +570,17 @@ class CfgWeapons { "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9843; - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=20; }; class srifle_DMR_04_F: DMR_04_base_F { initSpeed = -1.0; - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=17.72; }; class srifle_DMR_05_blk_F: DMR_05_base_F { initSpeed = -1.0; - ACE_barrelTwist=14.17; + ACE_barrelTwist=0.359918; ACE_barrelLength=24.41; }; class srifle_DMR_06_camo_F: DMR_06_base_F { @@ -595,17 +595,17 @@ class CfgWeapons { "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9916; - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class MMG_01_hex_F: MMG_01_base_F { initSpeed = -1.0; - ACE_barrelTwist=14.17; + ACE_barrelTwist=0.359918; ACE_barrelLength=21.65; }; class MMG_02_camo_F: MMG_02_base_F { initSpeed = -1.0; - ACE_barrelTwist=9.25; + ACE_barrelTwist=0.23495; ACE_barrelLength=24; }; @@ -615,7 +615,7 @@ class CfgWeapons { }; class HMG_M2: HMG_01 { initSpeed = -1.0; - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=45; }; diff --git a/extras/CfgWeaponsReference.hpp b/extras/CfgWeaponsReference.hpp index 4821d53813..4aae239073 100644 --- a/extras/CfgWeaponsReference.hpp +++ b/extras/CfgWeaponsReference.hpp @@ -27,1863 +27,1863 @@ class CfgWeapons class MMG_02_base_F; class hgun_P07_F : Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4; }; class hgun_Rook40_F : Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.4; }; class hgun_Pistol_heavy_01_F : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; }; class hgun_Pistol_heavy_02_F : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=3; }; class hgun_ACPC2_F : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; class hgun_PDW2000_F : PDW2000_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=7; }; class arifle_Katiba_F : arifle_Katiba_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=28.7; }; class arifle_Katiba_C_F : arifle_Katiba_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=26.8; }; class arifle_Katiba_GL_F : arifle_Katiba_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=28.7; }; class arifle_MX_F: arifle_MX_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=14.5; }; class arifle_MX_GL_F: arifle_MX_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=14.5; }; class arifle_MX_SW_F: arifle_MX_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16.0; }; class arifle_MXC_F: arifle_MX_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=10.5; }; class arifle_MXM_F: arifle_MX_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=18; }; class arifle_SDAR_F : SDAR_base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=18; }; class SMG_02_F : SMG_02_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=7.7; }; class arifle_TRG20_F : Tavor_base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=15; }; class arifle_TRG21_F : Tavor_base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18.1; }; class LMG_Zafir_F : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18.1; }; class arifle_Mk20_F : Mk20_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=17.4; }; class arifle_Mk20C_F : Mk20_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16; }; class arifle_Mk20_GL_F : Mk20_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16; }; class SMG_01_F : SMG_01_Base { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5.5; }; class srifle_DMR_01_F : DMR_01_base_F { - ACE_barrelTwist=9.5; + ACE_barrelTwist=0.2413; ACE_barrelLength=24; }; class srifle_EBR_F : EBR_base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24; }; class LMG_Mk200_F : Rifle_Long_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class srifle_LRR_F : LRR_base_F { - ACE_barrelTwist=13; + ACE_barrelTwist=0.3302; ACE_barrelLength=29; }; class srifle_GM6_F : GM6_base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=43.3; }; class srifle_DMR_02_F: DMR_02_base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=26; }; class srifle_DMR_03_F: DMR_03_base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=20; }; class srifle_DMR_04_F: DMR_04_base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=17.72; }; class srifle_DMR_05_blk_F: DMR_05_base_F { - ACE_barrelTwist=14.17; + ACE_barrelTwist=0.359918; ACE_barrelLength=24.41; }; class srifle_DMR_06_camo_F: DMR_06_base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class MMG_01_hex_F: MMG_01_base_F { - ACE_barrelTwist=14.17; + ACE_barrelTwist=0.359918; ACE_barrelLength=21.65; }; class MMG_02_camo_F: MMG_02_base_F { - ACE_barrelTwist=9.25; + ACE_barrelTwist=0.23495; ACE_barrelLength=24; }; class HMG_M2 : HMG_127 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=45; }; class RH_deagle : Pistol_Base_F { - ACE_barrelTwist=19; + ACE_barrelTwist=0.4826; ACE_barrelLength=6; }; class RH_sw659 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=7.44; }; class RH_usp : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.41; }; class RH_uspm : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=6; }; class RH_mak : Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=3.68; }; class RH_m1911 : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; class RH_kimber : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; class RH_m9 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.9; }; class RH_vz61 : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; }; class RH_tec9 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=5; }; class RH_muzi : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=5; }; class RH_g18 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.49; }; class RH_g17 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.49; }; class RH_tt33 : Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=4.6; }; class RH_mk2 : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4; }; class RH_p226 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.4; }; class RH_g19 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4; }; class RH_gsh18 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.1; }; class RH_mateba : Pistol_Base_F { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=6; }; class RH_python : Pistol_Base_F { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=6; }; class RH_bull : Pistol_Base_F { - ACE_barrelTwist=24; + ACE_barrelTwist=0.6096; ACE_barrelLength=6.5; }; class RH_ttracker : Pistol_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=4; }; class RH_mp412 : Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=6; }; class RH_fnp45 : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; }; class RH_fn57 : Pistol_Base_F { - ACE_barrelTwist=9.1; + ACE_barrelTwist=0.23114; ACE_barrelLength=4.8; }; class RH_vp70 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.6; }; class RH_cz75 : Pistol_Base_F { - ACE_barrelTwist=9.7; + ACE_barrelTwist=0.24638; ACE_barrelLength=4.7; }; class RH_PDW : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10; }; class RH_hb : Rifle_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=6; }; class RH_sbr9 : Rifle_Base_F { - ACE_barrelTwist=9.7; + ACE_barrelTwist=0.24638; ACE_barrelLength=9; }; class RH_ar10 : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=20.8; }; class RH_m4 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class RH_M4m : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.5; }; class RH_M4sbr : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.5; }; class RH_M16a1 : Rifle_Base_F { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=20; }; class RH_M16A2 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_M16A3 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_M16A4 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_M16A6 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_hk416 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class RH_hk416c : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=9; }; class RH_hk416s : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.4; }; class RH_m27iar : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16.5; }; class RH_Mk12mod1 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class RH_SAMR : Rifle_Base_F { - ACE_barrelTwist=7.7; + ACE_barrelTwist=0.19558; ACE_barrelLength=20; }; class RH_m110 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=20; }; class RH_mk11 : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class RH_sr25ec : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=20; }; class hlc_rifle_ak74 : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class hlc_rifle_aks74u : Rifle_Base_F { - ACE_barrelTwist=6.3; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3; }; class hlc_rifle_ak47 : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=16.3; }; class hlc_rifle_akm : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class hlc_rifle_rpk : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=23.2; }; class hlc_rifle_aek971 : Rifle_Base_F { - ACE_barrelTwist=9.5; + ACE_barrelTwist=0.2413; ACE_barrelLength=17; }; class hlc_rifle_saiga12k : Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=16.9; }; class hlc_ar15_base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=11.5; }; class hlc_rifle_bcmjack : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class hlc_rifle_Bushmaster300 : Rifle_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=16; }; class hlc_rifle_SAMR : Rifle_Base_F { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16; }; class hlc_rifle_honeybase : Rifle_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=6; }; class hlc_rifle_SLRchopmod : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class hlc_rifle_LAR : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class hlc_rifle_c1A1 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21.7; }; class hlc_rifle_FAL5061 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; class hlc_rifle_STG58F : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class hlc_rifle_SLR : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21.7; }; class hlc_rifle_falosw : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=13; }; class hlc_rifle_psg1 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=25.6; }; class hlc_rifle_g3sg1 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17.7; }; class hlc_rifle_hk51 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=8.31; }; class hlc_rifle_hk53 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=8.31; }; class hlc_rifle_g3a3 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17.7; }; class hlc_M14_base : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class hlc_rifle_m14sopmod : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; class hlc_lmg_M60E4 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17; }; class hlc_lmg_m60 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class hlc_smg_mp5k_PDW : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.5; }; class hlc_smg_mp5a2 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=8.9; }; class hlc_smg_mp5a4 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=8.9; }; class hlc_smg_mp5n : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=8.9; }; class hlc_smg_mp5sd5 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=5.7; }; class hlc_smg_mp5sd6 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=5.7; }; class hlc_smg_9mmar : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=8.9; }; class hlc_smg_mp510 : Rifle_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=8.9; }; class hlc_smg_mp5a3 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=8.9; }; class hgun_mas_usp_F: Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.41; }; class hgun_mas_m23_F: Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5.87; }; class hgun_mas_acp_F: Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5.03; }; class hgun_mas_m9_F: Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.9; }; class hgun_mas_bhp_F: Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.7; }; class hgun_mas_glock_F: Pistol_Base_F { - ACE_barrelTwist=9.84; + ACE_barrelTwist=0.249936; ACE_barrelLength=4.48; }; class hgun_mas_glocksf_F: Pistol_Base_F { - ACE_barrelTwist=15.75; + ACE_barrelTwist=0.40005; ACE_barrelLength=4.60; }; class hgun_mas_grach_F: Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.4; }; class hgun_mas_mak_F: Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=3.68; }; class hgun_mas_sa61_F: Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; }; class hgun_mas_uzi_F: Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=5.28; }; class arifle_mas_mk16 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=13.8; }; class arifle_mas_mk16_l : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class arifle_mas_mk17 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=16; }; class srifle_mas_m110 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=20; }; class arifle_mas_ak_74m : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.34; }; class arifle_mas_ak_74m_gl : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.34; }; class srifle_mas_svd : Rifle_Base_F { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=24.4; }; class srifle_mas_m91 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=29; }; class srifle_mas_ksvk : Rifle_Base_F { - ACE_barrelTwist=18; + ACE_barrelTwist=0.4572; ACE_barrelLength=39.37; }; class LMG_mas_rpk_F : Rifle_Base_F { - ACE_barrelTwist=7.68; + ACE_barrelTwist=0.195072; ACE_barrelLength=23.2; }; class LMG_mas_pkm_F : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.4; }; class arifle_mas_aks74u : Rifle_Base_F { - ACE_barrelTwist=6.3; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3; }; class arifle_mas_bizon : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=9.1; }; class arifle_mas_saiga : Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=16.93; }; class arifle_mas_hk416 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class arifle_mas_hk416_gl : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class arifle_mas_hk416c : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=9.0; }; class arifle_mas_hk416_m203c : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=9.0; }; class arifle_mas_hk417c : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=13; }; class arifle_mas_m4 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class arifle_mas_m4c : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.3; }; class arifle_mas_l119 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16; }; class arifle_mas_l119_gl : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16; }; class arifle_mas_l119_m203 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16; }; class arifle_mas_m16 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class arifle_mas_m16_gl : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class srifle_mas_hk417 : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=16.5; }; class srifle_mas_sr25 : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class srifle_mas_ebr : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; class srifle_mas_m24 : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class arifle_mas_mp5 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=8.9; }; class arifle_mas_mp5sd : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=5.7; }; class srifle_mas_m107 : Rifle_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=29; }; class LMG_mas_M249_F : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16.3; }; class LMG_mas_M249a_F : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class LMG_mas_mk48_F : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=19.75; }; class LMG_mas_m240_F : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class LMG_mas_mg3_F : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22.2; }; class arifle_mas_g3 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17.7; }; class arifle_mas_g3_m203 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17.7; }; class arifle_mas_fal : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class arifle_mas_fal_m203 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class arifle_mas_m1014 : Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=18.5; }; class BWA3_P8 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.25; }; class BWA3_MP7 : Pistol_Base_F { - ACE_barrelTwist=6.3; + ACE_barrelTwist=0.16002; ACE_barrelLength=7.1; }; class BWA3_G36 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18.9; }; class BWA3_G36K : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class BWA3_G28_Standard : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=16.5; }; class BWA3_G27 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=16; }; class BWA3_MG4 : Rifle_Long_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18.9; }; class BWA3_MG5 : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21.6; }; class BWA3_G82 : Rifle_Long_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=29; }; class Trixie_L131A1 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.5; }; class Trixie_XM8_Carbine : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class Trixie_XM8_Compact : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=9; }; class Trixie_XM8_SAW : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class Trixie_XM8_SAW_NB : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class Trixie_XM8_DMR : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class Trixie_XM8_DMR_NB : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class L129A1_base : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=16; }; class Trixie_Enfield : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=25.2; }; class Trixie_CZ550_Rail : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=23.622; }; class Trixie_FNFAL_Rail : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class Trixie_M110 : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=20; }; class Trixie_MK12 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class Trixie_LM308MWS : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=16; }; class Trixie_M14DMR : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class Trixie_M14DMR_NG_Black_Short : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; class Trixie_M14DMR_NG_Short : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; class Trixie_M14 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class Trixie_M40A3 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24; }; class Trixie_CZ750 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=26; }; class Trixie_M24 : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class Trixie_AWM338 : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=27; }; class Trixie_M107 : Rifle_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=29; }; class Trixie_AS50 : Rifle_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=29; }; class L110A1_base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=13.7; }; class Trixie_L86A2_base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=25.4; }; class Trixie_l85a2_base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20.4; }; class L7A2_base : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class rhs_weap_pya : Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.4; }; class rhs_weap_pkp : Rifle_Long_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.9; }; class rhs_weap_pkm : Rifle_Long_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.4; }; class rhs_weap_rpk74m : Rifle_Long_Base_F { - ACE_barrelTwist=7.68; + ACE_barrelTwist=0.195072; ACE_barrelLength=23.2; }; class rhs_weap_rpk74 : Rifle_Long_Base_F { - ACE_barrelTwist=7.68; + ACE_barrelTwist=0.195072; ACE_barrelLength=23.2; }; class rhs_weap_ak74m : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class rhs_weap_aks74u : Rifle_Base_F { - ACE_barrelTwist=6.3; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3; }; class rhs_weap_akm : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class rhs_weap_svd : Rifle_Base_F { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=24.4; }; class rhs_weap_svds : Rifle_Base_F { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=22.2; }; class rhs_weap_m4_Base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class rhs_weap_m16a4 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class rhs_weap_m16a4_carryhandle : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class rhs_weap_m16a4_grip : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class rhs_weap_m240B : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class rhs_weap_m249_pip : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16.3; }; class rhs_weap_mk18 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.3; }; class rhs_weap_M590_5RD : Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=18.5; }; class rhs_weap_M590_8RD : Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=20; }; class rhs_weap_sr25 : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class rhs_weap_sr25_ec : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=20; }; class rhs_weap_XM2010_Base_F: Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=24; }; class R3F_PAMAS : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.9; }; class R3F_Famas_F1: Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=19.2; }; class R3F_Famas_surb: Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=15.9; }; class R3F_Minimi: Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=13.7; }; class R3F_Minimi_762: Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=19.8; }; class R3F_FRF2: Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=25.59; }; class R3F_PGM_Hecate_II: Rifle_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=27.6; }; class R3F_HK417S_HG : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=12; }; class R3F_HK417M : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=16; }; class R3F_HK417L : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=20; }; class R3F_M107 : Rifle_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=29; }; class R3F_HK416M : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14; }; class R3F_MP5SD : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=5.7; }; class CUP_hgun_Colt1911 : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; class CUP_sgun_AA12 : Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=18; }; class CUP_arifle_AK_Base : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=16.3; }; class CUP_arifle_AK107_Base : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class CUP_arifle_AKS_Base : Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class CUP_arifle_AKS74U : Rifle_Base_F { - ACE_barrelTwist=6.3; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3; }; class CUP_arifle_RPK74 : Rifle_Long_Base_F { - ACE_barrelTwist=7.68; + ACE_barrelTwist=0.195072; ACE_barrelLength=23.2; }; class CUP_srifle_AS50 : Rifle_Long_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=29; }; class CUP_srifle_AWM_Base : Rifle_Long_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=27; }; class CUP_smg_bizon : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=9.1; }; class CUP_hgun_Compact : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=3.74; }; class CUP_srifle_CZ750 : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=26; }; class CUP_arifle_CZ805_Base : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=14; }; class CUP_arifle_CZ805_A1 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=14; }; class CUP_arifle_CZ805_A2 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=10.9; }; class CUP_srifle_DMR : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class CUP_hgun_Duty : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=3.74; }; class CUP_arifle_FNFAL : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class CUP_arifle_G36A : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18.9; }; class CUP_arifle_G36K : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class CUP_arifle_G36C : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=9; }; class CUP_arifle_MG36 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18.9; }; class CUP_hgun_Glock17 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.49; }; class CUP_srifle_CZ550 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=23.622; }; class CUP_srifle_ksvk : Rifle_Long_Base_F { - ACE_barrelTwist=18; + ACE_barrelTwist=0.4572; ACE_barrelLength=39.37; }; class CUP_lmg_L7A2 : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class CUP_arifle_L85A2_Base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20.4; }; class CUP_lmg_L110A1 : Rifle_Long_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=13.7; }; class CUP_srifle_LeeEnfield : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=25.2; }; class CUP_hgun_M9 : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.9; }; class CUP_srifle_M14 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class CUP_arifle_M16_Base : Rifle_Base_F { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=20; }; class CUP_arifle_M4_Base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class CUP_srifle_Mk12SPR : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class CUP_srifle_M24_des : Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class CUP_lmg_M60A4 : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17; }; class CUP_srifle_M107_Base : Rifle_Long_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=29; }; class CUP_srifle_M110 : Rifle_Base_F { - ACE_barrelTwist=11; + ACE_barrelTwist=0.2794; ACE_barrelLength=20; }; class CUP_lmg_M240 : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class CUP_lmg_M249_para : Rifle_Long_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16.3; }; class CUP_lmg_M249 : Rifle_Long_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class CUP_sgun_M1014 : Rifle_Base_F { ACE_twistDirection=0; - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_barrelLength=18.5; }; class CUP_hgun_Makarov : Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=3.68; }; class CUP_hgun_MicroUzi : Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=5; }; class CUP_lmg_Mk48_Base : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=19.75; }; class CUP_smg_MP5SD6 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=5.7; }; class CUP_smg_MP5A5 : Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=8.9; }; class CUP_hgun_PB6P9 : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=4.1; }; class CUP_hgun_Phantom : Rifle_Base_F { - ACE_barrelTwist=9.7; + ACE_barrelTwist=0.24638; ACE_barrelLength=4.7; }; class CUP_lmg_PKM : Rifle_Long_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.4; }; class CUP_lmg_Pecheneg : Rifle_Long_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.9; }; class CUP_hgun_TaurusTracker455 : Pistol_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=4; }; class CUP_arifle_Sa58P : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=15.4; }; class CUP_arifle_Sa58V : Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=15.4; }; class CUP_hgun_SA61 : Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; }; class CUP_sgun_Saiga12K: Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=16.9; } class CUP_arifle_Mk16_CQC : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10; }; class CUP_arifle_Mk16_STD : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14; }; class CUP_arifle_Mk16_SV : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class CUP_arifle_Mk17_CQC : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=13; }; class CUP_arifle_Mk17_STD : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=16; }; class CUP_arifle_Mk20 : Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=20; }; class CUP_srifle_SVD : Rifle_Base_F { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=24.4; }; class CUP_lmg_UK59 : Rifle_Long_Base_F { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=21.7; }; class CUP_DSHKM_W : MGun { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=42.1; }; class CUP_KPVT_W : MGun { - ACE_barrelTwist=17.91; + ACE_barrelTwist=0.454914; ACE_barrelLength=53; }; class CUP_KPVB_W : MGun { - ACE_barrelTwist=17.91; + ACE_barrelTwist=0.454914; ACE_barrelLength=53; }; class CUP_M134 : MGunCore { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class CUP_M240_veh_W : Rifle_Long_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class CUP_PKT_W : MGun { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=28.43; }; class CUP_srifle_VSSVintorez : Rifle_Base_F { - ACE_barrelTwist=8.3; + ACE_barrelTwist=0.21082; ACE_barrelLength=7.9; }; class CUP_arifle_XM8_Base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class CUP_arifle_XM8_Carbine : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class CUP_arifle_xm8_sharpshooter : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class CUP_arifle_xm8_SAW : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class CUP_arifle_XM8_Compact : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=9; }; class CUP_arifle_XM8_Railed_Base : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class CUP_arifle_XM8_Carbine_FG : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=12.5; }; class VTN_AK_BASE: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AK74M: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AK74M_GP25: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AK74M_GP30M: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AKS74: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AKS74N: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AKS74N_76: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AK74_76: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AKMS_aa: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=10.3; }; class VTN_AKS74U_BASE: Rifle_Base_F { - ACE_barrelTwist=6.3; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3; }; class VTN_AKM_BASE: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AKMS: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AKMS_T_P: Rifle_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class VTN_AK103_BASE: Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=16.3; }; class VTN_AK104_BASE: Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=12.4; }; class VTN_AK105_BASE: Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=12.4; }; class VTN_AK105_P_BASE: Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=12.4; }; class VTN_SVD_BASE: Rifle_Base_F { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=24.4; }; class VTN_SVD_63: Rifle_Base_F { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=24.4; }; class VTN_SVD_86: Rifle_Base_F { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=24.4; }; class VTN_SV98_BASE: Rifle_Base_F { - ACE_barrelTwist=12.6; + ACE_barrelTwist=0.32004; ACE_barrelLength=25.59; }; class VTN_PKM_BAS: Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.4; }; class VTN_PKP: Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.9; }; class VTN_PYA: Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.4; }; class VTN_PM: Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=3.68; }; class VTN_PB: Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=4.1; }; class VTN_GSH18: Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.1; }; class VTN_PSS: Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=1.4; }; class VTN_PKT: Rifle_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=28.43; }; class VTN_KORD: Rifle_Base_F { - ACE_barrelTwist=17.91; + ACE_barrelTwist=0.454914; ACE_barrelLength=53; }; class VTN_KPVT: Rifle_Base_F { - ACE_barrelTwist=17.91; + ACE_barrelTwist=0.454914; ACE_barrelLength=53; }; class VTN_C_M4A1 : Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class VTN_MK18MOD0: Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.3; }; class VTN_M16_BASE: Rifle_Base_F { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=20; }; class VTN_FN_SAMR_BASE: Rifle_Base_F { - ACE_barrelTwist=7.7; + ACE_barrelTwist=0.19558; ACE_barrelLength=20; }; class VTN_M249_SAW_BASE: Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class VTN_M249_PARA: Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16.3; }; class VTN_M240G_BASE: Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class VTN_M9: Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.9; }; class VTN_M45A1: Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; class VTN_M24: Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class VTN_M240: Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class VTN_KO44: Rifle_Base_F { - ACE_barrelTwist=9.5; + ACE_barrelTwist=0.2413; ACE_barrelLength=20.2; }; class VTN_SAIGA_MK03: Rifle_Base_F diff --git a/optionals/compat_hlc_ar15/CfgWeapons.hpp b/optionals/compat_hlc_ar15/CfgWeapons.hpp index d57de932e6..d203ee90d0 100644 --- a/optionals/compat_hlc_ar15/CfgWeapons.hpp +++ b/optionals/compat_hlc_ar15/CfgWeapons.hpp @@ -4,62 +4,62 @@ class CfgWeapons class Rifle_Base_F; class hlc_ar15_base: Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=11.5; }; class hlc_rifle_RU556: hlc_ar15_base { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.3; }; class hlc_rifle_RU5562: hlc_rifle_RU556 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.3; }; class hlc_rifle_CQBR: hlc_rifle_RU556 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10; }; class hlc_rifle_M4: hlc_rifle_RU556 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class hlc_rifle_bcmjack: hlc_ar15_base { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class hlc_rifle_Colt727: hlc_ar15_base { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class hlc_rifle_Colt727_GL: hlc_rifle_Colt727 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class hlc_rifle_Bushmaster300: hlc_rifle_Colt727 { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=14.5; }; class hlc_rifle_vendimus: hlc_rifle_Bushmaster300 { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=16; }; class hlc_rifle_SAMR: hlc_rifle_RU556 { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16; }; class hlc_rifle_honeybase: hlc_rifle_RU556 { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=6; }; }; \ No newline at end of file diff --git a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp index bb2762d1bc..3957b837d9 100644 --- a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp +++ b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp @@ -4,57 +4,57 @@ class CfgWeapons class Rifle_Base_F; class hlc_MP5_base: Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; class hlc_smg_mp5k_PDW: hlc_MP5_base { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.5; }; class hlc_smg_mp5k: hlc_smg_mp5k_PDW { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.5; }; class hlc_smg_mp5a2: hlc_MP5_base { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; class hlc_smg_MP5N: hlc_MP5_base { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; class hlc_smg_9mmar: hlc_smg_MP5N { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; class hlc_smg_mp5a4: hlc_MP5_base { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; class hlc_smg_mp510: hlc_smg_MP5N { - ACE_barrelTwist=15; + ACE_barrelTwist=0.381; ACE_barrelLength=9; }; class hlc_smg_mp5sd5: hlc_MP5_base { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; class hlc_smg_mp5a3: hlc_smg_mp5a2 { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; class hlc_smg_mp5sd6: hlc_smg_mp5sd5 { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=9; }; }; diff --git a/optionals/compat_hlcmods_ak/CfgWeapons.hpp b/optionals/compat_hlcmods_ak/CfgWeapons.hpp index 390d3e6177..5cc8ebfd67 100644 --- a/optionals/compat_hlcmods_ak/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_ak/CfgWeapons.hpp @@ -6,12 +6,12 @@ class CfgWeapons class InventoryOpticsItem_Base_F; class hlc_rifle_ak74: hlc_ak_base { - ACE_barrelTwist=7.8699999; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.299999; }; class hlc_rifle_aku12: hlc_rifle_ak12 { - ACE_barrelTwist=6.3000002; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3000002; }; class hlc_rifle_RPK12: hlc_rifle_ak12 @@ -20,37 +20,37 @@ class CfgWeapons }; class hlc_rifle_aks74u: hlc_rifle_ak74 { - ACE_barrelTwist=6.3000002; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3000002; }; class hlc_rifle_ak47: hlc_rifle_ak74 { - ACE_barrelTwist=9.4499998; + ACE_barrelTwist=0.24003; ACE_barrelLength=16.299999; }; class hlc_rifle_akm: hlc_rifle_ak47 { - ACE_barrelTwist=7.8699999; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.299999; }; class hlc_rifle_rpk: hlc_rifle_ak47 { - ACE_barrelTwist=9.4499998; + ACE_barrelTwist=0.24003; ACE_barrelLength=23.200001; }; class hlc_rifle_rpk74n: hlc_rifle_rpk { - ACE_barrelTwist=9.4499998; + ACE_barrelTwist=0.24003; ACE_barrelLength=23.200001; }; class hlc_rifle_aek971: hlc_rifle_ak74 { - ACE_barrelTwist=9.5; + ACE_barrelTwist=0.2413; ACE_barrelLength=17; }; class hlc_rifle_saiga12k: hlc_rifle_ak47 { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=16.9; }; diff --git a/optionals/compat_hlcmods_aug/CfgWeapons.hpp b/optionals/compat_hlcmods_aug/CfgWeapons.hpp index b46cf485e1..6f96f5bfc0 100644 --- a/optionals/compat_hlcmods_aug/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_aug/CfgWeapons.hpp @@ -5,47 +5,47 @@ class CfgWeapons class hlc_aug_base; class hlc_rifle_aug: hlc_aug_base { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=20; }; class hlc_rifle_auga1carb: hlc_rifle_aug { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16; }; class hlc_rifle_aughbar: hlc_rifle_aug { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=24; }; class hlc_rifle_augpara: hlc_rifle_aug { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16.5; }; class hlc_rifle_auga2: hlc_rifle_aug { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=20; }; class hlc_rifle_auga2para: hlc_rifle_auga2 { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=16.5; }; class hlc_rifle_auga2carb: hlc_rifle_auga2 { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=18; }; class hlc_rifle_auga2lsw: hlc_rifle_aughbar { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=24; }; class hlc_rifle_auga3: hlc_rifle_aug { - ACE_barrelTwist=9; + ACE_barrelTwist=0.2286; ACE_barrelLength=18; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_fal/CfgWeapons.hpp b/optionals/compat_hlcmods_fal/CfgWeapons.hpp index 05a17d8eb4..af79bf2a38 100644 --- a/optionals/compat_hlcmods_fal/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_fal/CfgWeapons.hpp @@ -4,47 +4,47 @@ class CfgWeapons class hlc_fal_base; class hlc_rifle_falosw: hlc_fal_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=13; }; class hlc_rifle_osw_GL: hlc_rifle_falosw { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=13; }; class hlc_rifle_SLR: hlc_fal_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21.700001; }; class hlc_rifle_STG58F: hlc_fal_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class hlc_rifle_FAL5061: hlc_fal_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; class hlc_rifle_L1A1SLR: hlc_rifle_SLR { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21.700001; }; class hlc_rifle_c1A1: hlc_rifle_SLR { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21.700001; }; class hlc_rifle_LAR: hlc_rifle_FAL5061 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=21; }; class hlc_rifle_SLRchopmod: hlc_rifle_FAL5061 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_g3/CfgWeapons.hpp b/optionals/compat_hlcmods_g3/CfgWeapons.hpp index e45fe34048..8cb407d88b 100644 --- a/optionals/compat_hlcmods_g3/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_g3/CfgWeapons.hpp @@ -4,42 +4,42 @@ class CfgWeapons class hlc_g3_base; class hlc_rifle_g3sg1: hlc_g3_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17.700001; }; class hlc_rifle_psg1: hlc_rifle_g3sg1 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=25.6; }; class hlc_rifle_g3a3: hlc_rifle_g3sg1 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17.700001; }; class hlc_rifle_g3a3ris: hlc_rifle_g3a3 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17.700001; }; class hlc_rifle_g3ka4: hlc_rifle_g3a3 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=12.4; }; class HLC_Rifle_g3ka4_GL: hlc_rifle_g3ka4 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=12.4; }; class hlc_rifle_hk51: hlc_rifle_g3sg1 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=8.3100004; }; class hlc_rifle_hk53: hlc_rifle_g3sg1 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=8.3100004; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_m14/CfgWeapons.hpp b/optionals/compat_hlcmods_m14/CfgWeapons.hpp index 01a67ff063..867a2caed8 100644 --- a/optionals/compat_hlcmods_m14/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m14/CfgWeapons.hpp @@ -5,12 +5,12 @@ class CfgWeapons class hlc_rifle_M14; class hlc_M14_base: Rifle_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class hlc_rifle_m14sopmod: hlc_rifle_M14 { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=18; }; }; diff --git a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp index 9532c1968d..90108a8d68 100644 --- a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp @@ -4,12 +4,12 @@ class CfgWeapons class hlc_M60e4_base; class hlc_lmg_M60E4: hlc_M60e4_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=17; }; class hlc_lmg_m60: hlc_M60e4_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; }; diff --git a/optionals/compat_rh_de/CfgWeapons.hpp b/optionals/compat_rh_de/CfgWeapons.hpp index 8fdff293c9..1a70e3ef26 100644 --- a/optionals/compat_rh_de/CfgWeapons.hpp +++ b/optionals/compat_rh_de/CfgWeapons.hpp @@ -4,137 +4,137 @@ class CfgWeapons class RH_Pistol_Base_F; class RH_deagle: RH_Pistol_Base_F { - ACE_barrelTwist=19; + ACE_barrelTwist=0.4826; ACE_barrelLength=6; }; class RH_mateba: Pistol_Base_F { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=6; }; class RH_mp412: Pistol_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=6; }; class RH_python: Pistol_Base_F { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=6; }; class RH_bull: RH_python { - ACE_barrelTwist=24; + ACE_barrelTwist=0.6096; ACE_barrelLength=6.5; }; class RH_ttracker: Pistol_Base_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=4; }; class RH_cz75: RH_Pistol_Base_F { - ACE_barrelTwist=9.7; + ACE_barrelTwist=0.24638; ACE_barrelLength=4.7; }; class RH_p226: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.4; }; class RH_sw659: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=7.44; }; class RH_usp: RH_Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.41; }; class RH_uspm: RH_Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=6; }; class RH_kimber: RH_Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; class RH_m1911: RH_Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; class RH_tt33: RH_Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=4.6; }; class RH_mak: RH_Pistol_Base_F { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=3.68; }; class RH_mk2: RH_Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4; }; class RH_m9: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.9; }; class RH_g18: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.49; }; class RH_g17: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.49; }; class RH_g19: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4; }; class RH_gsh18: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.1; }; class RH_fnp45: RH_Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; }; class RH_fn57: RH_fnp45 { - ACE_barrelTwist=9.1; + ACE_barrelTwist=0.23114; ACE_barrelLength=4.8; }; class RH_vp70: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=4.6; }; class RH_vz61: RH_Pistol_Base_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=4.5; }; class RH_tec9: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=5; }; class RH_muzi: RH_Pistol_Base_F { - ACE_barrelTwist=9.8; + ACE_barrelTwist=0.24892; ACE_barrelLength=5; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_m4/CfgWeapons.hpp b/optionals/compat_rh_m4/CfgWeapons.hpp index 69536e9302..94f69a3562 100644 --- a/optionals/compat_rh_m4/CfgWeapons.hpp +++ b/optionals/compat_rh_m4/CfgWeapons.hpp @@ -4,127 +4,127 @@ class CfgWeapons class Rifle_Base_F; class RH_ar10: Rifle_Base_F { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=20.8; }; class RH_m110: Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=20; }; class RH_Mk11: RH_m110 { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class RH_SR25EC: RH_m110 { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=20; }; class RH_m4: Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class RH_M4_ris: RH_m4 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class RH_M4A1_ris: RH_M4_ris { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class RH_M4m: RH_M4A1_ris { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.5; }; class RH_M4sbr: RH_M4A1_ris { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.5; }; class RH_hb: Rifle_Base_F { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=6; }; class RH_hb_b: RH_hb { - ACE_barrelTwist=8; + ACE_barrelTwist=0.2032; ACE_barrelLength=6; }; class RH_sbr9: Rifle_Base_F { - ACE_barrelTwist=9.7; + ACE_barrelTwist=0.24638; ACE_barrelLength=9; }; class RH_M4A6: RH_M4A1_ris { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=14.5; }; class RH_M16a1: RH_m4 { - ACE_barrelTwist=14; + ACE_barrelTwist=0.3556; ACE_barrelLength=20; }; class RH_M16A2: RH_m4 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_M16A4 : RH_M4_ris { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_M16A3: RH_M16A4 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_M16A4_m: RH_M16A4 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_M16A6: RH_M16A4 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class RH_Mk12mod1: RH_M16A4 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=18; }; class RH_SAMR: RH_Mk12mod1 { - ACE_barrelTwist=7.7; + ACE_barrelTwist=0.19558; ACE_barrelLength=20; }; class RH_Hk416: RH_M4A1_ris { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class RH_Hk416s: RH_M4sbr { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.4; }; class RH_Hk416c: RH_M4sbr { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=9; }; class RH_M27IAR: RH_Mk12mod1 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16.5; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_pdw/CfgWeapons.hpp b/optionals/compat_rh_pdw/CfgWeapons.hpp index b009a202ce..27a5a23493 100644 --- a/optionals/compat_rh_pdw/CfgWeapons.hpp +++ b/optionals/compat_rh_pdw/CfgWeapons.hpp @@ -4,7 +4,7 @@ class CfgWeapons class Rifle_Base_F; class RH_PDW: Rifle_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10; }; }; diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp index 49573b164a..b8bd997a58 100644 --- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp @@ -4,57 +4,57 @@ class CfgWeapons class hgun_Rook40_F; class rhs_weap_pya: hgun_Rook40_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=4.4; }; class Pistol_Base_F; class rhs_weap_makarov_pmm: rhs_weap_pya { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=3.68; }; class rhs_weap_ak74m_Base_F; class rhs_weap_ak74m: rhs_weap_ak74m_Base_F { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class rhs_weap_akm: rhs_weap_ak74m { - ACE_barrelTwist=7.87; + ACE_barrelTwist=0.199898; ACE_barrelLength=16.3; }; class rhs_weap_aks74; class rhs_weap_aks74u: rhs_weap_aks74 { - ACE_barrelTwist=6.3; + ACE_barrelTwist=0.16002; ACE_barrelLength=8.3; }; class rhs_weap_svd: rhs_weap_ak74m { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=24.4; }; class rhs_weap_svdp; class rhs_weap_svds: rhs_weap_svdp { - ACE_barrelTwist=9.4; + ACE_barrelTwist=0.23876; ACE_barrelLength=22.2; }; class rhs_pkp_base; class rhs_weap_pkp: rhs_pkp_base { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.9; }; class rhs_weap_pkm: rhs_weap_pkp { - ACE_barrelTwist=9.45; + ACE_barrelTwist=0.24003; ACE_barrelLength=25.4; }; class rhs_weap_rpk74m: rhs_weap_pkp { - ACE_barrelTwist=7.68; + ACE_barrelTwist=0.195072; ACE_barrelLength=23.2; }; diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index a9791cd6b8..e394762bfe 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -6,69 +6,69 @@ class CfgWeapons class srifle_EBR_F; class rhs_weap_XM2010_Base_F: Rifle_Base_F { - ACE_barrelTwist=10; + ACE_barrelTwist=0.254; ACE_barrelLength=24; }; class arifle_MX_Base_F; class rhs_weap_m4_Base: arifle_MX_Base_F { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=14.5; }; class rhs_weap_m4a1; class rhs_weap_mk18: rhs_weap_m4a1 { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=10.3; }; class rhs_weap_m16a4: rhs_weap_m4_Base { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=20; }; class rhs_M249_base; class rhs_weap_m249_pip: rhs_M249_base { - ACE_barrelTwist=7; + ACE_barrelTwist=0.1778; ACE_barrelLength=16.3; }; class weap_m240_base; class rhs_weap_m240B: weap_m240_base { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=24.8; }; class rhs_weap_m14ebrri: srifle_EBR_F { - ACE_barrelTwist=12; + ACE_barrelTwist=0.3048; ACE_barrelLength=22; }; class rhs_weap_sr25: rhs_weap_m14ebrri { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=24; }; class rhs_weap_sr25_ec: rhs_weap_sr25 { - ACE_barrelTwist=11.25; + ACE_barrelTwist=0.28575; ACE_barrelLength=20; }; class rhs_weap_M590_5RD: Rifle_Base_F { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=18.5; }; class rhs_weap_M590_8RD: rhs_weap_M590_5RD { - ACE_barrelTwist=0; + ACE_barrelTwist=0.0; ACE_twistDirection=0; ACE_barrelLength=20; }; class hgun_ACPC2_F; class rhsusf_weap_m1911a1: hgun_ACPC2_F { - ACE_barrelTwist=16; + ACE_barrelTwist=0.4064; ACE_barrelLength=5; }; From 4b3a11168114ce199caf22e9a6001c7695f707b5 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:44:01 +0200 Subject: [PATCH 0047/1101] Convert ACE_barrelLength to meters --- addons/ballistics/CfgWeapons.hpp | 82 +- extras/CfgWeaponsReference.hpp | 738 +++++++++--------- optionals/compat_hlc_ar15/CfgWeapons.hpp | 24 +- optionals/compat_hlc_wp_mp5/CfgWeapons.hpp | 22 +- optionals/compat_hlcmods_ak/CfgWeapons.hpp | 20 +- optionals/compat_hlcmods_aug/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_fal/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_g3/CfgWeapons.hpp | 16 +- optionals/compat_hlcmods_m14/CfgWeapons.hpp | 4 +- optionals/compat_hlcmods_m60e4/CfgWeapons.hpp | 4 +- optionals/compat_rh_de/CfgWeapons.hpp | 54 +- optionals/compat_rh_m4/CfgWeapons.hpp | 50 +- optionals/compat_rh_pdw/CfgWeapons.hpp | 2 +- optionals/compat_rhs_afrf3/CfgWeapons.hpp | 20 +- optionals/compat_rhs_usf3/CfgWeapons.hpp | 24 +- 15 files changed, 548 insertions(+), 548 deletions(-) diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index dbc9293296..59589f73be 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -66,7 +66,7 @@ class CfgWeapons { }; initSpeed = -1.0; ACE_barrelTwist=0.2286; - ACE_barrelLength=16.0; + ACE_barrelLength=0.4064; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { // Shit is broken again @@ -93,7 +93,7 @@ class CfgWeapons { }; initSpeed = -1.018; ACE_barrelTwist=0.2286; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; class Single: Single { dispersion = 0.00029; // radians. Equal to 1 MOA. // 6.5mm is easily capable of this in a half-tuned rifle. @@ -138,7 +138,7 @@ class CfgWeapons { }; }; ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; class manual: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. }; @@ -155,7 +155,7 @@ class CfgWeapons { }; }; ACE_barrelTwist=0.3048; - ACE_barrelLength=18.1; + ACE_barrelLength=0.45974; class FullAuto: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. }; @@ -242,7 +242,7 @@ class CfgWeapons { class hgun_P07_F: Pistol_Base_F { initSpeed = -0.9778; ACE_barrelTwist=0.254; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; @@ -254,7 +254,7 @@ class CfgWeapons { class hgun_Rook40_F: Pistol_Base_F { initSpeed = -1.0; ACE_barrelTwist=0.254; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; @@ -266,7 +266,7 @@ class CfgWeapons { class hgun_ACPC2_F: Pistol_Base_F { initSpeed = -1.0; ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; @@ -277,7 +277,7 @@ class CfgWeapons { class hgun_Pistol_heavy_01_F: Pistol_Base_F { initSpeed = -0.96; ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; @@ -288,7 +288,7 @@ class CfgWeapons { class hgun_Pistol_heavy_02_F: Pistol_Base_F { initSpeed = -0.92; ACE_barrelTwist=0.4064; - ACE_barrelLength=3; + ACE_barrelLength=0.0762; /* class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot { @@ -301,7 +301,7 @@ class CfgWeapons { class hgun_PDW2000_F: pdw2000_base_F { initSpeed = -1.157; ACE_barrelTwist=0.2286; - ACE_barrelLength=7; + ACE_barrelLength=0.1778; }; class arifle_Katiba_F: arifle_katiba_Base_F { magazines[] = { @@ -311,7 +311,7 @@ class CfgWeapons { }; initSpeed = -1.08; ACE_barrelTwist=0.2032; - ACE_barrelLength=28.7; + ACE_barrelLength=0.72898; }; class arifle_Katiba_C_F: arifle_katiba_Base_F { magazines[] = { @@ -321,7 +321,7 @@ class CfgWeapons { }; initSpeed = -1.07; ACE_barrelTwist=0.2032; - ACE_barrelLength=26.8; + ACE_barrelLength=0.68072; }; class arifle_Katiba_GL_F: arifle_katiba_Base_F { magazines[] = { @@ -331,7 +331,7 @@ class CfgWeapons { }; initSpeed = -1.08; ACE_barrelTwist=0.2032; - ACE_barrelLength=28.7; + ACE_barrelLength=0.72898; }; class arifle_MX_F: arifle_MX_Base_F { magazines[] = { @@ -341,7 +341,7 @@ class CfgWeapons { }; initSpeed = -0.99; ACE_barrelTwist=0.2286; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class arifle_MX_GL_F: arifle_MX_Base_F { magazines[] = { @@ -351,12 +351,12 @@ class CfgWeapons { }; initSpeed = -0.99; ACE_barrelTwist=0.2286; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; /* class arifle_MX_SW_F: arifle_MX_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=16.0; + ACE_barrelLength=0.4064; }; */ class arifle_MXC_F: arifle_MX_Base_F { @@ -367,12 +367,12 @@ class CfgWeapons { }; initSpeed = -0.965; ACE_barrelTwist=0.2032; - ACE_barrelLength=10.5; + ACE_barrelLength=0.2667; }; /* class arifle_MXM_F: arifle_MX_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; */ class arifle_SDAR_F: SDAR_base_F { @@ -389,12 +389,12 @@ class CfgWeapons { }; initSpeed = -0.989; ACE_barrelTwist=0.28575; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class SMG_02_F: SMG_02_base_F { initSpeed = -1.054; ACE_barrelTwist=0.254; - ACE_barrelLength=7.7; + ACE_barrelLength=0.19558; }; class arifle_TRG20_F: Tavor_base_F { magazines[] = { @@ -409,7 +409,7 @@ class CfgWeapons { }; initSpeed = -0.95; ACE_barrelTwist=0.1778; - ACE_barrelLength=15; + ACE_barrelLength=0.381; }; class arifle_TRG21_F: Tavor_base_F { magazines[] = { @@ -424,7 +424,7 @@ class CfgWeapons { }; initSpeed = -0.989; ACE_barrelTwist=0.1778; - ACE_barrelLength=18.1; + ACE_barrelLength=0.45974; }; class arifle_TRG21_GL_F: arifle_TRG21_F { magazines[] = { @@ -439,12 +439,12 @@ class CfgWeapons { }; initSpeed = -0.989; ACE_barrelTwist=0.1778; - ACE_barrelLength=18.1; + ACE_barrelLength=0.45974; }; /* class LMG_Zafir_F: Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=18.1; + ACE_barrelLength=0.45974; }; */ class arifle_Mk20_F: mk20_base_F { @@ -460,7 +460,7 @@ class CfgWeapons { }; initSpeed = -0.98; ACE_barrelTwist=0.1778; - ACE_barrelLength=17.4; + ACE_barrelLength=0.44196; }; class arifle_Mk20C_F: mk20_base_F { magazines[] = { @@ -475,7 +475,7 @@ class CfgWeapons { }; initSpeed = -0.956; ACE_barrelTwist=0.1778; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class arifle_Mk20_GL_F: mk20_base_F { magazines[] = { @@ -490,12 +490,12 @@ class CfgWeapons { }; initSpeed = -0.956; ACE_barrelTwist=0.1778; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class SMG_01_F: SMG_01_Base { initSpeed = -1.016; ACE_barrelTwist=0.4064; - ACE_barrelLength=5.5; + ACE_barrelLength=0.1397; }; class srifle_DMR_01_F: DMR_01_base_F { magazines[] = { @@ -504,7 +504,7 @@ class CfgWeapons { }; initSpeed = -1.025; ACE_barrelTwist=0.2413; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class srifle_EBR_F: EBR_base_F { magazines[] = { @@ -519,19 +519,19 @@ class CfgWeapons { }; initSpeed = -0.9724; ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; /* class LMG_Mk200_F: Rifle_Long_Base_F { initSpeed = -1.0; ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; */ class srifle_LRR_F: LRR_base_F { initSpeed = -1.0; ACE_barrelTwist=0.3302; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class srifle_GM6_F: GM6_base_F { magazines[] = { @@ -543,7 +543,7 @@ class CfgWeapons { }; initSpeed = -1.0; ACE_barrelTwist=0.381; - ACE_barrelLength=36.6; + ACE_barrelLength=0.92964; }; class srifle_DMR_02_F: DMR_02_base_F { magazines[] = { @@ -556,7 +556,7 @@ class CfgWeapons { }; initSpeed = -0.962; ACE_barrelTwist=0.254; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class srifle_DMR_03_F: DMR_03_base_F { magazines[] = { @@ -571,17 +571,17 @@ class CfgWeapons { }; initSpeed = -0.9843; ACE_barrelTwist=0.254; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class srifle_DMR_04_F: DMR_04_base_F { initSpeed = -1.0; ACE_barrelTwist=0.2032; - ACE_barrelLength=17.72; + ACE_barrelLength=0.450088; }; class srifle_DMR_05_blk_F: DMR_05_base_F { initSpeed = -1.0; ACE_barrelTwist=0.359918; - ACE_barrelLength=24.41; + ACE_barrelLength=0.620014; }; class srifle_DMR_06_camo_F: DMR_06_base_F { magazines[] = { @@ -596,17 +596,17 @@ class CfgWeapons { }; initSpeed = -0.9916; ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class MMG_01_hex_F: MMG_01_base_F { initSpeed = -1.0; ACE_barrelTwist=0.359918; - ACE_barrelLength=21.65; + ACE_barrelLength=0.54991; }; class MMG_02_camo_F: MMG_02_base_F { initSpeed = -1.0; ACE_barrelTwist=0.23495; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class HMG_127 : LMG_RCWS { @@ -616,7 +616,7 @@ class CfgWeapons { class HMG_M2: HMG_01 { initSpeed = -1.0; ACE_barrelTwist=0.3048; - ACE_barrelLength=45; + ACE_barrelLength=1.143; }; /* Silencers */ diff --git a/extras/CfgWeaponsReference.hpp b/extras/CfgWeaponsReference.hpp index 4aae239073..3aecdb325c 100644 --- a/extras/CfgWeaponsReference.hpp +++ b/extras/CfgWeaponsReference.hpp @@ -28,1867 +28,1867 @@ class CfgWeapons class hgun_P07_F : Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class hgun_Rook40_F : Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; }; class hgun_Pistol_heavy_01_F : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class hgun_Pistol_heavy_02_F : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=3; + ACE_barrelLength=0.0762; }; class hgun_ACPC2_F : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class hgun_PDW2000_F : PDW2000_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=7; + ACE_barrelLength=0.1778; }; class arifle_Katiba_F : arifle_Katiba_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=28.7; + ACE_barrelLength=0.72898; }; class arifle_Katiba_C_F : arifle_Katiba_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=26.8; + ACE_barrelLength=0.68072; }; class arifle_Katiba_GL_F : arifle_Katiba_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=28.7; + ACE_barrelLength=0.72898; }; class arifle_MX_F: arifle_MX_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class arifle_MX_GL_F: arifle_MX_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class arifle_MX_SW_F: arifle_MX_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=16.0; + ACE_barrelLength=0.4064; }; class arifle_MXC_F: arifle_MX_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=10.5; + ACE_barrelLength=0.2667; }; class arifle_MXM_F: arifle_MX_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class arifle_SDAR_F : SDAR_base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class SMG_02_F : SMG_02_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=7.7; + ACE_barrelLength=0.19558; }; class arifle_TRG20_F : Tavor_base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=15; + ACE_barrelLength=0.381; }; class arifle_TRG21_F : Tavor_base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18.1; + ACE_barrelLength=0.45974; }; class LMG_Zafir_F : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=18.1; + ACE_barrelLength=0.45974; }; class arifle_Mk20_F : Mk20_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=17.4; + ACE_barrelLength=0.44196; }; class arifle_Mk20C_F : Mk20_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class arifle_Mk20_GL_F : Mk20_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class SMG_01_F : SMG_01_Base { ACE_barrelTwist=0.4064; - ACE_barrelLength=5.5; + ACE_barrelLength=0.1397; }; class srifle_DMR_01_F : DMR_01_base_F { ACE_barrelTwist=0.2413; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class srifle_EBR_F : EBR_base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class LMG_Mk200_F : Rifle_Long_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class srifle_LRR_F : LRR_base_F { ACE_barrelTwist=0.3302; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class srifle_GM6_F : GM6_base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=43.3; + ACE_barrelLength=1.09982; }; class srifle_DMR_02_F: DMR_02_base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=26; + ACE_barrelLength=0.6604; }; class srifle_DMR_03_F: DMR_03_base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class srifle_DMR_04_F: DMR_04_base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=17.72; + ACE_barrelLength=0.450088; }; class srifle_DMR_05_blk_F: DMR_05_base_F { ACE_barrelTwist=0.359918; - ACE_barrelLength=24.41; + ACE_barrelLength=0.620014; }; class srifle_DMR_06_camo_F: DMR_06_base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class MMG_01_hex_F: MMG_01_base_F { ACE_barrelTwist=0.359918; - ACE_barrelLength=21.65; + ACE_barrelLength=0.54991; }; class MMG_02_camo_F: MMG_02_base_F { ACE_barrelTwist=0.23495; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class HMG_M2 : HMG_127 { ACE_barrelTwist=0.3048; - ACE_barrelLength=45; + ACE_barrelLength=1.143; }; class RH_deagle : Pistol_Base_F { ACE_barrelTwist=0.4826; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_sw659 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=7.44; + ACE_barrelLength=0.188976; }; class RH_usp : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.41; + ACE_barrelLength=0.112014; }; class RH_uspm : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_mak : Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=3.68; + ACE_barrelLength=0.093472; }; class RH_m1911 : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class RH_kimber : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class RH_m9 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.9; + ACE_barrelLength=0.12446; }; class RH_vz61 : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class RH_tec9 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class RH_muzi : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class RH_g18 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.49; + ACE_barrelLength=0.114046; }; class RH_g17 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.49; + ACE_barrelLength=0.114046; }; class RH_tt33 : Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=4.6; + ACE_barrelLength=0.11684; }; class RH_mk2 : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class RH_p226 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; }; class RH_g19 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class RH_gsh18 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.1; + ACE_barrelLength=0.10414; }; class RH_mateba : Pistol_Base_F { ACE_barrelTwist=0.3556; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_python : Pistol_Base_F { ACE_barrelTwist=0.3556; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_bull : Pistol_Base_F { ACE_barrelTwist=0.6096; - ACE_barrelLength=6.5; + ACE_barrelLength=0.1651; }; class RH_ttracker : Pistol_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class RH_mp412 : Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_fnp45 : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class RH_fn57 : Pistol_Base_F { ACE_barrelTwist=0.23114; - ACE_barrelLength=4.8; + ACE_barrelLength=0.12192; }; class RH_vp70 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.6; + ACE_barrelLength=0.11684; }; class RH_cz75 : Pistol_Base_F { ACE_barrelTwist=0.24638; - ACE_barrelLength=4.7; + ACE_barrelLength=0.11938; }; class RH_PDW : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10; + ACE_barrelLength=0.254; }; class RH_hb : Rifle_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_sbr9 : Rifle_Base_F { ACE_barrelTwist=0.24638; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class RH_ar10 : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=20.8; + ACE_barrelLength=0.52832; }; class RH_m4 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class RH_M4m : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.5; + ACE_barrelLength=0.2667; }; class RH_M4sbr : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.5; + ACE_barrelLength=0.2667; }; class RH_M16a1 : Rifle_Base_F { ACE_barrelTwist=0.3556; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A2 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A3 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A4 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A6 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_hk416 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class RH_hk416c : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class RH_hk416s : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.4; + ACE_barrelLength=0.26416; }; class RH_m27iar : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16.5; + ACE_barrelLength=0.4191; }; class RH_Mk12mod1 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class RH_SAMR : Rifle_Base_F { ACE_barrelTwist=0.19558; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_m110 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_mk11 : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class RH_sr25ec : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class hlc_rifle_ak74 : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class hlc_rifle_aks74u : Rifle_Base_F { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3; + ACE_barrelLength=0.21082; }; class hlc_rifle_ak47 : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class hlc_rifle_akm : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class hlc_rifle_rpk : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=23.2; + ACE_barrelLength=0.58928; }; class hlc_rifle_aek971 : Rifle_Base_F { ACE_barrelTwist=0.2413; - ACE_barrelLength=17; + ACE_barrelLength=0.4318; }; class hlc_rifle_saiga12k : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=16.9; + ACE_barrelLength=0.42926; }; class hlc_ar15_base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=11.5; + ACE_barrelLength=0.2921; }; class hlc_rifle_bcmjack : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class hlc_rifle_Bushmaster300 : Rifle_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class hlc_rifle_SAMR : Rifle_Base_F { ACE_barrelTwist=0.2286; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class hlc_rifle_honeybase : Rifle_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class hlc_rifle_SLRchopmod : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class hlc_rifle_LAR : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class hlc_rifle_c1A1 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21.7; + ACE_barrelLength=0.55118; }; class hlc_rifle_FAL5061 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class hlc_rifle_STG58F : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class hlc_rifle_SLR : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21.7; + ACE_barrelLength=0.55118; }; class hlc_rifle_falosw : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=13; + ACE_barrelLength=0.3302; }; class hlc_rifle_psg1 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=25.6; + ACE_barrelLength=0.65024; }; class hlc_rifle_g3sg1 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=17.7; + ACE_barrelLength=0.44958; }; class hlc_rifle_hk51 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=8.31; + ACE_barrelLength=0.211074; }; class hlc_rifle_hk53 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=8.31; + ACE_barrelLength=0.211074; }; class hlc_rifle_g3a3 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=17.7; + ACE_barrelLength=0.44958; }; class hlc_M14_base : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class hlc_rifle_m14sopmod : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class hlc_lmg_M60E4 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=17; + ACE_barrelLength=0.4318; }; class hlc_lmg_m60 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class hlc_smg_mp5k_PDW : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class hlc_smg_mp5a2 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class hlc_smg_mp5a4 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class hlc_smg_mp5n : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class hlc_smg_mp5sd5 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=5.7; + ACE_barrelLength=0.14478; }; class hlc_smg_mp5sd6 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=5.7; + ACE_barrelLength=0.14478; }; class hlc_smg_9mmar : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class hlc_smg_mp510 : Rifle_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class hlc_smg_mp5a3 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class hgun_mas_usp_F: Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.41; + ACE_barrelLength=0.112014; }; class hgun_mas_m23_F: Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5.87; + ACE_barrelLength=0.149098; }; class hgun_mas_acp_F: Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5.03; + ACE_barrelLength=0.127762; }; class hgun_mas_m9_F: Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.9; + ACE_barrelLength=0.12446; }; class hgun_mas_bhp_F: Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.7; + ACE_barrelLength=0.11938; }; class hgun_mas_glock_F: Pistol_Base_F { ACE_barrelTwist=0.249936; - ACE_barrelLength=4.48; + ACE_barrelLength=0.113792; }; class hgun_mas_glocksf_F: Pistol_Base_F { ACE_barrelTwist=0.40005; - ACE_barrelLength=4.60; + ACE_barrelLength=0.11684; }; class hgun_mas_grach_F: Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; }; class hgun_mas_mak_F: Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=3.68; + ACE_barrelLength=0.093472; }; class hgun_mas_sa61_F: Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class hgun_mas_uzi_F: Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=5.28; + ACE_barrelLength=0.134112; }; class arifle_mas_mk16 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=13.8; + ACE_barrelLength=0.35052; }; class arifle_mas_mk16_l : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class arifle_mas_mk17 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class srifle_mas_m110 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class arifle_mas_ak_74m : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.34; + ACE_barrelLength=0.415036; }; class arifle_mas_ak_74m_gl : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.34; + ACE_barrelLength=0.415036; }; class srifle_mas_svd : Rifle_Base_F { ACE_barrelTwist=0.23876; - ACE_barrelLength=24.4; + ACE_barrelLength=0.61976; }; class srifle_mas_m91 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class srifle_mas_ksvk : Rifle_Base_F { ACE_barrelTwist=0.4572; - ACE_barrelLength=39.37; + ACE_barrelLength=0.999998; }; class LMG_mas_rpk_F : Rifle_Base_F { ACE_barrelTwist=0.195072; - ACE_barrelLength=23.2; + ACE_barrelLength=0.58928; }; class LMG_mas_pkm_F : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.4; + ACE_barrelLength=0.64516; }; class arifle_mas_aks74u : Rifle_Base_F { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3; + ACE_barrelLength=0.21082; }; class arifle_mas_bizon : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=9.1; + ACE_barrelLength=0.23114; }; class arifle_mas_saiga : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=16.93; + ACE_barrelLength=0.430022; }; class arifle_mas_hk416 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class arifle_mas_hk416_gl : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class arifle_mas_hk416c : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=9.0; + ACE_barrelLength=0.2286; }; class arifle_mas_hk416_m203c : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=9.0; + ACE_barrelLength=0.2286; }; class arifle_mas_hk417c : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=13; + ACE_barrelLength=0.3302; }; class arifle_mas_m4 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class arifle_mas_m4c : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.3; + ACE_barrelLength=0.26162; }; class arifle_mas_l119 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class arifle_mas_l119_gl : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class arifle_mas_l119_m203 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class arifle_mas_m16 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class arifle_mas_m16_gl : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class srifle_mas_hk417 : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=16.5; + ACE_barrelLength=0.4191; }; class srifle_mas_sr25 : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class srifle_mas_ebr : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class srifle_mas_m24 : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class arifle_mas_mp5 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class arifle_mas_mp5sd : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=5.7; + ACE_barrelLength=0.14478; }; class srifle_mas_m107 : Rifle_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class LMG_mas_M249_F : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class LMG_mas_M249a_F : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class LMG_mas_mk48_F : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=19.75; + ACE_barrelLength=0.50165; }; class LMG_mas_m240_F : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class LMG_mas_mg3_F : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22.2; + ACE_barrelLength=0.56388; }; class arifle_mas_g3 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=17.7; + ACE_barrelLength=0.44958; }; class arifle_mas_g3_m203 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=17.7; + ACE_barrelLength=0.44958; }; class arifle_mas_fal : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class arifle_mas_fal_m203 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class arifle_mas_m1014 : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=18.5; + ACE_barrelLength=0.4699; }; class BWA3_P8 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.25; + ACE_barrelLength=0.10795; }; class BWA3_MP7 : Pistol_Base_F { ACE_barrelTwist=0.16002; - ACE_barrelLength=7.1; + ACE_barrelLength=0.18034; }; class BWA3_G36 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18.9; + ACE_barrelLength=0.48006; }; class BWA3_G36K : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class BWA3_G28_Standard : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=16.5; + ACE_barrelLength=0.4191; }; class BWA3_G27 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class BWA3_MG4 : Rifle_Long_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18.9; + ACE_barrelLength=0.48006; }; class BWA3_MG5 : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21.6; + ACE_barrelLength=0.54864; }; class BWA3_G82 : Rifle_Long_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class Trixie_L131A1 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class Trixie_XM8_Carbine : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class Trixie_XM8_Compact : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class Trixie_XM8_SAW : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class Trixie_XM8_SAW_NB : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class Trixie_XM8_DMR : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class Trixie_XM8_DMR_NB : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class L129A1_base : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class Trixie_Enfield : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=25.2; + ACE_barrelLength=0.64008; }; class Trixie_CZ550_Rail : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=23.622; + ACE_barrelLength=0.599999; }; class Trixie_FNFAL_Rail : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class Trixie_M110 : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class Trixie_MK12 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class Trixie_LM308MWS : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class Trixie_M14DMR : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class Trixie_M14DMR_NG_Black_Short : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class Trixie_M14DMR_NG_Short : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class Trixie_M14 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class Trixie_M40A3 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class Trixie_CZ750 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=26; + ACE_barrelLength=0.6604; }; class Trixie_M24 : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class Trixie_AWM338 : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=27; + ACE_barrelLength=0.6858; }; class Trixie_M107 : Rifle_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class Trixie_AS50 : Rifle_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class L110A1_base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=13.7; + ACE_barrelLength=0.34798; }; class Trixie_L86A2_base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=25.4; + ACE_barrelLength=0.64516; }; class Trixie_l85a2_base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20.4; + ACE_barrelLength=0.51816; }; class L7A2_base : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class rhs_weap_pya : Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; }; class rhs_weap_pkp : Rifle_Long_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.9; + ACE_barrelLength=0.65786; }; class rhs_weap_pkm : Rifle_Long_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.4; + ACE_barrelLength=0.64516; }; class rhs_weap_rpk74m : Rifle_Long_Base_F { ACE_barrelTwist=0.195072; - ACE_barrelLength=23.2; + ACE_barrelLength=0.58928; }; class rhs_weap_rpk74 : Rifle_Long_Base_F { ACE_barrelTwist=0.195072; - ACE_barrelLength=23.2; + ACE_barrelLength=0.58928; }; class rhs_weap_ak74m : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class rhs_weap_aks74u : Rifle_Base_F { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3; + ACE_barrelLength=0.21082; }; class rhs_weap_akm : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class rhs_weap_svd : Rifle_Base_F { ACE_barrelTwist=0.23876; - ACE_barrelLength=24.4; + ACE_barrelLength=0.61976; }; class rhs_weap_svds : Rifle_Base_F { ACE_barrelTwist=0.23876; - ACE_barrelLength=22.2; + ACE_barrelLength=0.56388; }; class rhs_weap_m4_Base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class rhs_weap_m16a4 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class rhs_weap_m16a4_carryhandle : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class rhs_weap_m16a4_grip : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class rhs_weap_m240B : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class rhs_weap_m249_pip : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class rhs_weap_mk18 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.3; + ACE_barrelLength=0.26162; }; class rhs_weap_M590_5RD : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=18.5; + ACE_barrelLength=0.4699; }; class rhs_weap_M590_8RD : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class rhs_weap_sr25 : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class rhs_weap_sr25_ec : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class rhs_weap_XM2010_Base_F: Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class R3F_PAMAS : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.9; + ACE_barrelLength=0.12446; }; class R3F_Famas_F1: Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=19.2; + ACE_barrelLength=0.48768; }; class R3F_Famas_surb: Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=15.9; + ACE_barrelLength=0.40386; }; class R3F_Minimi: Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=13.7; + ACE_barrelLength=0.34798; }; class R3F_Minimi_762: Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=19.8; + ACE_barrelLength=0.50292; }; class R3F_FRF2: Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=25.59; + ACE_barrelLength=0.649986; }; class R3F_PGM_Hecate_II: Rifle_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=27.6; + ACE_barrelLength=0.70104; }; class R3F_HK417S_HG : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=12; + ACE_barrelLength=0.3048; }; class R3F_HK417M : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class R3F_HK417L : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class R3F_M107 : Rifle_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class R3F_HK416M : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14; + ACE_barrelLength=0.3556; }; class R3F_MP5SD : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=5.7; + ACE_barrelLength=0.14478; }; class CUP_hgun_Colt1911 : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class CUP_sgun_AA12 : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class CUP_arifle_AK_Base : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class CUP_arifle_AK107_Base : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class CUP_arifle_AKS_Base : Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class CUP_arifle_AKS74U : Rifle_Base_F { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3; + ACE_barrelLength=0.21082; }; class CUP_arifle_RPK74 : Rifle_Long_Base_F { ACE_barrelTwist=0.195072; - ACE_barrelLength=23.2; + ACE_barrelLength=0.58928; }; class CUP_srifle_AS50 : Rifle_Long_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class CUP_srifle_AWM_Base : Rifle_Long_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=27; + ACE_barrelLength=0.6858; }; class CUP_smg_bizon : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=9.1; + ACE_barrelLength=0.23114; }; class CUP_hgun_Compact : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=3.74; + ACE_barrelLength=0.094996; }; class CUP_srifle_CZ750 : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=26; + ACE_barrelLength=0.6604; }; class CUP_arifle_CZ805_Base : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=14; + ACE_barrelLength=0.3556; }; class CUP_arifle_CZ805_A1 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=14; + ACE_barrelLength=0.3556; }; class CUP_arifle_CZ805_A2 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=10.9; + ACE_barrelLength=0.27686; }; class CUP_srifle_DMR : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class CUP_hgun_Duty : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=3.74; + ACE_barrelLength=0.094996; }; class CUP_arifle_FNFAL : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class CUP_arifle_G36A : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18.9; + ACE_barrelLength=0.48006; }; class CUP_arifle_G36K : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class CUP_arifle_G36C : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class CUP_arifle_MG36 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18.9; + ACE_barrelLength=0.48006; }; class CUP_hgun_Glock17 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.49; + ACE_barrelLength=0.114046; }; class CUP_srifle_CZ550 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=23.622; + ACE_barrelLength=0.599999; }; class CUP_srifle_ksvk : Rifle_Long_Base_F { ACE_barrelTwist=0.4572; - ACE_barrelLength=39.37; + ACE_barrelLength=0.999998; }; class CUP_lmg_L7A2 : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class CUP_arifle_L85A2_Base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20.4; + ACE_barrelLength=0.51816; }; class CUP_lmg_L110A1 : Rifle_Long_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=13.7; + ACE_barrelLength=0.34798; }; class CUP_srifle_LeeEnfield : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=25.2; + ACE_barrelLength=0.64008; }; class CUP_hgun_M9 : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.9; + ACE_barrelLength=0.12446; }; class CUP_srifle_M14 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class CUP_arifle_M16_Base : Rifle_Base_F { ACE_barrelTwist=0.3556; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class CUP_arifle_M4_Base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class CUP_srifle_Mk12SPR : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class CUP_srifle_M24_des : Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class CUP_lmg_M60A4 : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=17; + ACE_barrelLength=0.4318; }; class CUP_srifle_M107_Base : Rifle_Long_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=29; + ACE_barrelLength=0.7366; }; class CUP_srifle_M110 : Rifle_Base_F { ACE_barrelTwist=0.2794; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class CUP_lmg_M240 : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class CUP_lmg_M249_para : Rifle_Long_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class CUP_lmg_M249 : Rifle_Long_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class CUP_sgun_M1014 : Rifle_Base_F { ACE_twistDirection=0; ACE_barrelTwist=0.0; - ACE_barrelLength=18.5; + ACE_barrelLength=0.4699; }; class CUP_hgun_Makarov : Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=3.68; + ACE_barrelLength=0.093472; }; class CUP_hgun_MicroUzi : Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class CUP_lmg_Mk48_Base : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=19.75; + ACE_barrelLength=0.50165; }; class CUP_smg_MP5SD6 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=5.7; + ACE_barrelLength=0.14478; }; class CUP_smg_MP5A5 : Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=8.9; + ACE_barrelLength=0.22606; }; class CUP_hgun_PB6P9 : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=4.1; + ACE_barrelLength=0.10414; }; class CUP_hgun_Phantom : Rifle_Base_F { ACE_barrelTwist=0.24638; - ACE_barrelLength=4.7; + ACE_barrelLength=0.11938; }; class CUP_lmg_PKM : Rifle_Long_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.4; + ACE_barrelLength=0.64516; }; class CUP_lmg_Pecheneg : Rifle_Long_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.9; + ACE_barrelLength=0.65786; }; class CUP_hgun_TaurusTracker455 : Pistol_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class CUP_arifle_Sa58P : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=15.4; + ACE_barrelLength=0.39116; }; class CUP_arifle_Sa58V : Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=15.4; + ACE_barrelLength=0.39116; }; class CUP_hgun_SA61 : Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class CUP_sgun_Saiga12K: Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=16.9; + ACE_barrelLength=0.42926; } class CUP_arifle_Mk16_CQC : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10; + ACE_barrelLength=0.254; }; class CUP_arifle_Mk16_STD : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14; + ACE_barrelLength=0.3556; }; class CUP_arifle_Mk16_SV : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class CUP_arifle_Mk17_CQC : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=13; + ACE_barrelLength=0.3302; }; class CUP_arifle_Mk17_STD : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class CUP_arifle_Mk20 : Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class CUP_srifle_SVD : Rifle_Base_F { ACE_barrelTwist=0.23876; - ACE_barrelLength=24.4; + ACE_barrelLength=0.61976; }; class CUP_lmg_UK59 : Rifle_Long_Base_F { ACE_barrelTwist=0.381; - ACE_barrelLength=21.7; + ACE_barrelLength=0.55118; }; class CUP_DSHKM_W : MGun { ACE_barrelTwist=0.381; - ACE_barrelLength=42.1; + ACE_barrelLength=1.06934; }; class CUP_KPVT_W : MGun { ACE_barrelTwist=0.454914; - ACE_barrelLength=53; + ACE_barrelLength=1.3462; }; class CUP_KPVB_W : MGun { ACE_barrelTwist=0.454914; - ACE_barrelLength=53; + ACE_barrelLength=1.3462; }; class CUP_M134 : MGunCore { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class CUP_M240_veh_W : Rifle_Long_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class CUP_PKT_W : MGun { ACE_barrelTwist=0.24003; - ACE_barrelLength=28.43; + ACE_barrelLength=0.722122; }; class CUP_srifle_VSSVintorez : Rifle_Base_F { ACE_barrelTwist=0.21082; - ACE_barrelLength=7.9; + ACE_barrelLength=0.20066; }; class CUP_arifle_XM8_Base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class CUP_arifle_XM8_Carbine : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class CUP_arifle_xm8_sharpshooter : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class CUP_arifle_xm8_SAW : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class CUP_arifle_XM8_Compact : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class CUP_arifle_XM8_Railed_Base : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class CUP_arifle_XM8_Carbine_FG : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=12.5; + ACE_barrelLength=0.3175; }; class VTN_AK_BASE: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AK74M: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AK74M_GP25: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AK74M_GP30M: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AKS74: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AKS74N: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AKS74N_76: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AK74_76: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AKMS_aa: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=10.3; + ACE_barrelLength=0.26162; }; class VTN_AKS74U_BASE: Rifle_Base_F { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3; + ACE_barrelLength=0.21082; }; class VTN_AKM_BASE: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AKMS: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AKMS_T_P: Rifle_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AK103_BASE: Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_AK104_BASE: Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=12.4; + ACE_barrelLength=0.31496; }; class VTN_AK105_BASE: Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=12.4; + ACE_barrelLength=0.31496; }; class VTN_AK105_P_BASE: Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=12.4; + ACE_barrelLength=0.31496; }; class VTN_SVD_BASE: Rifle_Base_F { ACE_barrelTwist=0.23876; - ACE_barrelLength=24.4; + ACE_barrelLength=0.61976; }; class VTN_SVD_63: Rifle_Base_F { ACE_barrelTwist=0.23876; - ACE_barrelLength=24.4; + ACE_barrelLength=0.61976; }; class VTN_SVD_86: Rifle_Base_F { ACE_barrelTwist=0.23876; - ACE_barrelLength=24.4; + ACE_barrelLength=0.61976; }; class VTN_SV98_BASE: Rifle_Base_F { ACE_barrelTwist=0.32004; - ACE_barrelLength=25.59; + ACE_barrelLength=0.649986; }; class VTN_PKM_BAS: Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.4; + ACE_barrelLength=0.64516; }; class VTN_PKP: Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.9; + ACE_barrelLength=0.65786; }; class VTN_PYA: Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; }; class VTN_PM: Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=3.68; + ACE_barrelLength=0.093472; }; class VTN_PB: Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=4.1; + ACE_barrelLength=0.10414; }; class VTN_GSH18: Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.1; + ACE_barrelLength=0.10414; }; class VTN_PSS: Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=1.4; + ACE_barrelLength=0.03556; }; class VTN_PKT: Rifle_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=28.43; + ACE_barrelLength=0.722122; }; class VTN_KORD: Rifle_Base_F { ACE_barrelTwist=0.454914; - ACE_barrelLength=53; + ACE_barrelLength=1.3462; }; class VTN_KPVT: Rifle_Base_F { ACE_barrelTwist=0.454914; - ACE_barrelLength=53; + ACE_barrelLength=1.3462; }; class VTN_C_M4A1 : Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class VTN_MK18MOD0: Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.3; + ACE_barrelLength=0.26162; }; class VTN_M16_BASE: Rifle_Base_F { ACE_barrelTwist=0.3556; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class VTN_FN_SAMR_BASE: Rifle_Base_F { ACE_barrelTwist=0.19558; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class VTN_M249_SAW_BASE: Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class VTN_M249_PARA: Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class VTN_M240G_BASE: Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class VTN_M9: Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.9; + ACE_barrelLength=0.12446; }; class VTN_M45A1: Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class VTN_M24: Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class VTN_M240: Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class VTN_KO44: Rifle_Base_F { ACE_barrelTwist=0.2413; - ACE_barrelLength=20.2; + ACE_barrelLength=0.51308; }; class VTN_SAIGA_MK03: Rifle_Base_F { ACE_twistDirection=9.45; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; }; \ No newline at end of file diff --git a/optionals/compat_hlc_ar15/CfgWeapons.hpp b/optionals/compat_hlc_ar15/CfgWeapons.hpp index d203ee90d0..31caabbe78 100644 --- a/optionals/compat_hlc_ar15/CfgWeapons.hpp +++ b/optionals/compat_hlc_ar15/CfgWeapons.hpp @@ -5,61 +5,61 @@ class CfgWeapons class hlc_ar15_base: Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=11.5; + ACE_barrelLength=0.2921; }; class hlc_rifle_RU556: hlc_ar15_base { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.3; + ACE_barrelLength=0.26162; }; class hlc_rifle_RU5562: hlc_rifle_RU556 { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.3; + ACE_barrelLength=0.26162; }; class hlc_rifle_CQBR: hlc_rifle_RU556 { ACE_barrelTwist=0.1778; - ACE_barrelLength=10; + ACE_barrelLength=0.254; }; class hlc_rifle_M4: hlc_rifle_RU556 { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class hlc_rifle_bcmjack: hlc_ar15_base { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class hlc_rifle_Colt727: hlc_ar15_base { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class hlc_rifle_Colt727_GL: hlc_rifle_Colt727 { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class hlc_rifle_Bushmaster300: hlc_rifle_Colt727 { ACE_barrelTwist=0.2032; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class hlc_rifle_vendimus: hlc_rifle_Bushmaster300 { ACE_barrelTwist=0.2032; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class hlc_rifle_SAMR: hlc_rifle_RU556 { ACE_barrelTwist=0.2286; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class hlc_rifle_honeybase: hlc_rifle_RU556 { ACE_barrelTwist=0.2032; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; }; \ No newline at end of file diff --git a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp index 3957b837d9..e100d90a78 100644 --- a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp +++ b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp @@ -5,56 +5,56 @@ class CfgWeapons class hlc_MP5_base: Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_mp5k_PDW: hlc_MP5_base { ACE_barrelTwist=0.254; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class hlc_smg_mp5k: hlc_smg_mp5k_PDW { ACE_barrelTwist=0.254; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class hlc_smg_mp5a2: hlc_MP5_base { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_MP5N: hlc_MP5_base { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_9mmar: hlc_smg_MP5N { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_mp5a4: hlc_MP5_base { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_mp510: hlc_smg_MP5N { ACE_barrelTwist=0.381; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_mp5sd5: hlc_MP5_base { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_mp5a3: hlc_smg_mp5a2 { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class hlc_smg_mp5sd6: hlc_smg_mp5sd5 { ACE_barrelTwist=0.254; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; }; diff --git a/optionals/compat_hlcmods_ak/CfgWeapons.hpp b/optionals/compat_hlcmods_ak/CfgWeapons.hpp index 5cc8ebfd67..2655b1f182 100644 --- a/optionals/compat_hlcmods_ak/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_ak/CfgWeapons.hpp @@ -7,52 +7,52 @@ class CfgWeapons class hlc_rifle_ak74: hlc_ak_base { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.299999; + ACE_barrelLength=0.41402; }; class hlc_rifle_aku12: hlc_rifle_ak12 { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3000002; + ACE_barrelLength=0.21082; }; class hlc_rifle_RPK12: hlc_rifle_ak12 { - ACE_barrelLength=23.200001; + ACE_barrelLength=0.58928; }; class hlc_rifle_aks74u: hlc_rifle_ak74 { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3000002; + ACE_barrelLength=0.21082; }; class hlc_rifle_ak47: hlc_rifle_ak74 { ACE_barrelTwist=0.24003; - ACE_barrelLength=16.299999; + ACE_barrelLength=0.41402; }; class hlc_rifle_akm: hlc_rifle_ak47 { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.299999; + ACE_barrelLength=0.41402; }; class hlc_rifle_rpk: hlc_rifle_ak47 { ACE_barrelTwist=0.24003; - ACE_barrelLength=23.200001; + ACE_barrelLength=0.58928; }; class hlc_rifle_rpk74n: hlc_rifle_rpk { ACE_barrelTwist=0.24003; - ACE_barrelLength=23.200001; + ACE_barrelLength=0.58928; }; class hlc_rifle_aek971: hlc_rifle_ak74 { ACE_barrelTwist=0.2413; - ACE_barrelLength=17; + ACE_barrelLength=0.4318; }; class hlc_rifle_saiga12k: hlc_rifle_ak47 { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=16.9; + ACE_barrelLength=0.42926; }; class HLC_Optic_PSO1 : optic_dms { diff --git a/optionals/compat_hlcmods_aug/CfgWeapons.hpp b/optionals/compat_hlcmods_aug/CfgWeapons.hpp index 6f96f5bfc0..ebb5d17675 100644 --- a/optionals/compat_hlcmods_aug/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_aug/CfgWeapons.hpp @@ -6,46 +6,46 @@ class CfgWeapons class hlc_rifle_aug: hlc_aug_base { ACE_barrelTwist=0.2286; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class hlc_rifle_auga1carb: hlc_rifle_aug { ACE_barrelTwist=0.2286; - ACE_barrelLength=16; + ACE_barrelLength=0.4064; }; class hlc_rifle_aughbar: hlc_rifle_aug { ACE_barrelTwist=0.2286; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class hlc_rifle_augpara: hlc_rifle_aug { ACE_barrelTwist=0.2286; - ACE_barrelLength=16.5; + ACE_barrelLength=0.4191; }; class hlc_rifle_auga2: hlc_rifle_aug { ACE_barrelTwist=0.2286; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class hlc_rifle_auga2para: hlc_rifle_auga2 { ACE_barrelTwist=0.2286; - ACE_barrelLength=16.5; + ACE_barrelLength=0.4191; }; class hlc_rifle_auga2carb: hlc_rifle_auga2 { ACE_barrelTwist=0.2286; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class hlc_rifle_auga2lsw: hlc_rifle_aughbar { ACE_barrelTwist=0.2286; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class hlc_rifle_auga3: hlc_rifle_aug { ACE_barrelTwist=0.2286; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_fal/CfgWeapons.hpp b/optionals/compat_hlcmods_fal/CfgWeapons.hpp index af79bf2a38..6be462773b 100644 --- a/optionals/compat_hlcmods_fal/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_fal/CfgWeapons.hpp @@ -5,46 +5,46 @@ class CfgWeapons class hlc_rifle_falosw: hlc_fal_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=13; + ACE_barrelLength=0.3302; }; class hlc_rifle_osw_GL: hlc_rifle_falosw { ACE_barrelTwist=0.3048; - ACE_barrelLength=13; + ACE_barrelLength=0.3302; }; class hlc_rifle_SLR: hlc_fal_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=21.700001; + ACE_barrelLength=0.55118; }; class hlc_rifle_STG58F: hlc_fal_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class hlc_rifle_FAL5061: hlc_fal_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class hlc_rifle_L1A1SLR: hlc_rifle_SLR { ACE_barrelTwist=0.3048; - ACE_barrelLength=21.700001; + ACE_barrelLength=0.55118; }; class hlc_rifle_c1A1: hlc_rifle_SLR { ACE_barrelTwist=0.3048; - ACE_barrelLength=21.700001; + ACE_barrelLength=0.55118; }; class hlc_rifle_LAR: hlc_rifle_FAL5061 { ACE_barrelTwist=0.3048; - ACE_barrelLength=21; + ACE_barrelLength=0.5334; }; class hlc_rifle_SLRchopmod: hlc_rifle_FAL5061 { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_g3/CfgWeapons.hpp b/optionals/compat_hlcmods_g3/CfgWeapons.hpp index 8cb407d88b..9c5b5585ad 100644 --- a/optionals/compat_hlcmods_g3/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_g3/CfgWeapons.hpp @@ -5,41 +5,41 @@ class CfgWeapons class hlc_rifle_g3sg1: hlc_g3_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=17.700001; + ACE_barrelLength=0.44958; }; class hlc_rifle_psg1: hlc_rifle_g3sg1 { ACE_barrelTwist=0.3048; - ACE_barrelLength=25.6; + ACE_barrelLength=0.65024; }; class hlc_rifle_g3a3: hlc_rifle_g3sg1 { ACE_barrelTwist=0.3048; - ACE_barrelLength=17.700001; + ACE_barrelLength=0.44958; }; class hlc_rifle_g3a3ris: hlc_rifle_g3a3 { ACE_barrelTwist=0.3048; - ACE_barrelLength=17.700001; + ACE_barrelLength=0.44958; }; class hlc_rifle_g3ka4: hlc_rifle_g3a3 { ACE_barrelTwist=0.3048; - ACE_barrelLength=12.4; + ACE_barrelLength=0.31496; }; class HLC_Rifle_g3ka4_GL: hlc_rifle_g3ka4 { ACE_barrelTwist=0.3048; - ACE_barrelLength=12.4; + ACE_barrelLength=0.31496; }; class hlc_rifle_hk51: hlc_rifle_g3sg1 { ACE_barrelTwist=0.3048; - ACE_barrelLength=8.3100004; + ACE_barrelLength=0.211074; }; class hlc_rifle_hk53: hlc_rifle_g3sg1 { ACE_barrelTwist=0.1778; - ACE_barrelLength=8.3100004; + ACE_barrelLength=0.211074; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_m14/CfgWeapons.hpp b/optionals/compat_hlcmods_m14/CfgWeapons.hpp index 867a2caed8..8082678f9f 100644 --- a/optionals/compat_hlcmods_m14/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m14/CfgWeapons.hpp @@ -6,11 +6,11 @@ class CfgWeapons class hlc_M14_base: Rifle_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class hlc_rifle_m14sopmod: hlc_rifle_M14 { ACE_barrelTwist=0.3048; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; }; diff --git a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp index 90108a8d68..ea93b263c5 100644 --- a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp @@ -5,11 +5,11 @@ class CfgWeapons class hlc_lmg_M60E4: hlc_M60e4_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=17; + ACE_barrelLength=0.4318; }; class hlc_lmg_m60: hlc_M60e4_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; }; diff --git a/optionals/compat_rh_de/CfgWeapons.hpp b/optionals/compat_rh_de/CfgWeapons.hpp index 1a70e3ef26..17f3bd2191 100644 --- a/optionals/compat_rh_de/CfgWeapons.hpp +++ b/optionals/compat_rh_de/CfgWeapons.hpp @@ -5,136 +5,136 @@ class CfgWeapons class RH_deagle: RH_Pistol_Base_F { ACE_barrelTwist=0.4826; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_mateba: Pistol_Base_F { ACE_barrelTwist=0.3556; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_mp412: Pistol_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_python: Pistol_Base_F { ACE_barrelTwist=0.3556; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_bull: RH_python { ACE_barrelTwist=0.6096; - ACE_barrelLength=6.5; + ACE_barrelLength=0.1651; }; class RH_ttracker: Pistol_Base_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class RH_cz75: RH_Pistol_Base_F { ACE_barrelTwist=0.24638; - ACE_barrelLength=4.7; + ACE_barrelLength=0.11938; }; class RH_p226: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; }; class RH_sw659: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=7.44; + ACE_barrelLength=0.188976; }; class RH_usp: RH_Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.41; + ACE_barrelLength=0.112014; }; class RH_uspm: RH_Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_kimber: RH_Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class RH_m1911: RH_Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class RH_tt33: RH_Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=4.6; + ACE_barrelLength=0.11684; }; class RH_mak: RH_Pistol_Base_F { ACE_barrelTwist=0.24003; - ACE_barrelLength=3.68; + ACE_barrelLength=0.093472; }; class RH_mk2: RH_Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class RH_m9: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.9; + ACE_barrelLength=0.12446; }; class RH_g18: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.49; + ACE_barrelLength=0.114046; }; class RH_g17: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.49; + ACE_barrelLength=0.114046; }; class RH_g19: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4; + ACE_barrelLength=0.1016; }; class RH_gsh18: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.1; + ACE_barrelLength=0.10414; }; class RH_fnp45: RH_Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class RH_fn57: RH_fnp45 { ACE_barrelTwist=0.23114; - ACE_barrelLength=4.8; + ACE_barrelLength=0.12192; }; class RH_vp70: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=4.6; + ACE_barrelLength=0.11684; }; class RH_vz61: RH_Pistol_Base_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=4.5; + ACE_barrelLength=0.1143; }; class RH_tec9: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class RH_muzi: RH_Pistol_Base_F { ACE_barrelTwist=0.24892; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_m4/CfgWeapons.hpp b/optionals/compat_rh_m4/CfgWeapons.hpp index 94f69a3562..6b703ed2b4 100644 --- a/optionals/compat_rh_m4/CfgWeapons.hpp +++ b/optionals/compat_rh_m4/CfgWeapons.hpp @@ -5,126 +5,126 @@ class CfgWeapons class RH_ar10: Rifle_Base_F { ACE_barrelTwist=0.28575; - ACE_barrelLength=20.8; + ACE_barrelLength=0.52832; }; class RH_m110: Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_Mk11: RH_m110 { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class RH_SR25EC: RH_m110 { ACE_barrelTwist=0.28575; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_m4: Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class RH_M4_ris: RH_m4 { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class RH_M4A1_ris: RH_M4_ris { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class RH_M4m: RH_M4A1_ris { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.5; + ACE_barrelLength=0.2667; }; class RH_M4sbr: RH_M4A1_ris { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.5; + ACE_barrelLength=0.2667; }; class RH_hb: Rifle_Base_F { ACE_barrelTwist=0.2032; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_hb_b: RH_hb { ACE_barrelTwist=0.2032; - ACE_barrelLength=6; + ACE_barrelLength=0.1524; }; class RH_sbr9: Rifle_Base_F { ACE_barrelTwist=0.24638; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class RH_M4A6: RH_M4A1_ris { ACE_barrelTwist=0.254; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class RH_M16a1: RH_m4 { ACE_barrelTwist=0.3556; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A2: RH_m4 { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A4 : RH_M4_ris { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A3: RH_M16A4 { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A4_m: RH_M16A4 { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_M16A6: RH_M16A4 { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_Mk12mod1: RH_M16A4 { ACE_barrelTwist=0.1778; - ACE_barrelLength=18; + ACE_barrelLength=0.4572; }; class RH_SAMR: RH_Mk12mod1 { ACE_barrelTwist=0.19558; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class RH_Hk416: RH_M4A1_ris { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class RH_Hk416s: RH_M4sbr { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.4; + ACE_barrelLength=0.26416; }; class RH_Hk416c: RH_M4sbr { ACE_barrelTwist=0.1778; - ACE_barrelLength=9; + ACE_barrelLength=0.2286; }; class RH_M27IAR: RH_Mk12mod1 { ACE_barrelTwist=0.1778; - ACE_barrelLength=16.5; + ACE_barrelLength=0.4191; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_pdw/CfgWeapons.hpp b/optionals/compat_rh_pdw/CfgWeapons.hpp index 27a5a23493..c9921f3ace 100644 --- a/optionals/compat_rh_pdw/CfgWeapons.hpp +++ b/optionals/compat_rh_pdw/CfgWeapons.hpp @@ -5,6 +5,6 @@ class CfgWeapons class RH_PDW: Rifle_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=10; + ACE_barrelLength=0.254; }; }; diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp index b8bd997a58..a6c9416f1e 100644 --- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp @@ -5,57 +5,57 @@ class CfgWeapons class rhs_weap_pya: hgun_Rook40_F { ACE_barrelTwist=0.254; - ACE_barrelLength=4.4; + ACE_barrelLength=0.11176; }; class Pistol_Base_F; class rhs_weap_makarov_pmm: rhs_weap_pya { ACE_barrelTwist=0.24003; - ACE_barrelLength=3.68; + ACE_barrelLength=0.093472; }; class rhs_weap_ak74m_Base_F; class rhs_weap_ak74m: rhs_weap_ak74m_Base_F { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class rhs_weap_akm: rhs_weap_ak74m { ACE_barrelTwist=0.199898; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class rhs_weap_aks74; class rhs_weap_aks74u: rhs_weap_aks74 { ACE_barrelTwist=0.16002; - ACE_barrelLength=8.3; + ACE_barrelLength=0.21082; }; class rhs_weap_svd: rhs_weap_ak74m { ACE_barrelTwist=0.23876; - ACE_barrelLength=24.4; + ACE_barrelLength=0.61976; }; class rhs_weap_svdp; class rhs_weap_svds: rhs_weap_svdp { ACE_barrelTwist=0.23876; - ACE_barrelLength=22.2; + ACE_barrelLength=0.56388; }; class rhs_pkp_base; class rhs_weap_pkp: rhs_pkp_base { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.9; + ACE_barrelLength=0.65786; }; class rhs_weap_pkm: rhs_weap_pkp { ACE_barrelTwist=0.24003; - ACE_barrelLength=25.4; + ACE_barrelLength=0.64516; }; class rhs_weap_rpk74m: rhs_weap_pkp { ACE_barrelTwist=0.195072; - ACE_barrelLength=23.2; + ACE_barrelLength=0.58928; }; class rhs_acc_sniper_base; diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index e394762bfe..e531676a24 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -7,69 +7,69 @@ class CfgWeapons class rhs_weap_XM2010_Base_F: Rifle_Base_F { ACE_barrelTwist=0.254; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class arifle_MX_Base_F; class rhs_weap_m4_Base: arifle_MX_Base_F { ACE_barrelTwist=0.1778; - ACE_barrelLength=14.5; + ACE_barrelLength=0.3683; }; class rhs_weap_m4a1; class rhs_weap_mk18: rhs_weap_m4a1 { ACE_barrelTwist=0.1778; - ACE_barrelLength=10.3; + ACE_barrelLength=0.26162; }; class rhs_weap_m16a4: rhs_weap_m4_Base { ACE_barrelTwist=0.1778; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class rhs_M249_base; class rhs_weap_m249_pip: rhs_M249_base { ACE_barrelTwist=0.1778; - ACE_barrelLength=16.3; + ACE_barrelLength=0.41402; }; class weap_m240_base; class rhs_weap_m240B: weap_m240_base { ACE_barrelTwist=0.3048; - ACE_barrelLength=24.8; + ACE_barrelLength=0.62992; }; class rhs_weap_m14ebrri: srifle_EBR_F { ACE_barrelTwist=0.3048; - ACE_barrelLength=22; + ACE_barrelLength=0.5588; }; class rhs_weap_sr25: rhs_weap_m14ebrri { ACE_barrelTwist=0.28575; - ACE_barrelLength=24; + ACE_barrelLength=0.6096; }; class rhs_weap_sr25_ec: rhs_weap_sr25 { ACE_barrelTwist=0.28575; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class rhs_weap_M590_5RD: Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=18.5; + ACE_barrelLength=0.4699; }; class rhs_weap_M590_8RD: rhs_weap_M590_5RD { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=20; + ACE_barrelLength=0.508; }; class hgun_ACPC2_F; class rhsusf_weap_m1911a1: hgun_ACPC2_F { ACE_barrelTwist=0.4064; - ACE_barrelLength=5; + ACE_barrelLength=0.127; }; class rhsusf_acc_sniper_base; From db07de31afdefddbcd6d3a8e7e85afa3654e02e8 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:49:40 +0200 Subject: [PATCH 0048/1101] Whoops; back to the roots. --- addons/overheating/functions/fnc_overheat.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/overheating/functions/fnc_overheat.sqf b/addons/overheating/functions/fnc_overheat.sqf index 0d52d9102f..8b51ea9f6d 100644 --- a/addons/overheating/functions/fnc_overheat.sqf +++ b/addons/overheating/functions/fnc_overheat.sqf @@ -36,12 +36,12 @@ _time = _overheat select 1; // Get physical parameters // Bullet mass is read from config in grains and converted to grams -_bulletMass = (getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_BulletMass")) * 0.06480; +_bulletMass = getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_BulletMass"); if (_bulletMass == 0) then { // If the bullet mass is not configured, estimate it directly in grams _bulletMass = 3.4334 + 0.5171 * (getNumber (configFile >> "CfgAmmo" >> _ammo >> "hit") + getNumber (configFile >> "CfgAmmo" >> _ammo >> "caliber")); }; -_energyIncrement = 0.75 * 0.0005 * 15.4323 * _bulletMass * (vectorMagnitudeSqr _velocity); +_energyIncrement = 0.75 * 0.0005 * _bulletMass * (vectorMagnitudeSqr _velocity); _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; // Calculate cooling From a8c4068b56f355e4bd3a5d1282d53a6de4238b61 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 7 May 2015 18:51:18 +0200 Subject: [PATCH 0049/1101] Remove unnecessary comment --- addons/overheating/functions/fnc_overheat.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/overheating/functions/fnc_overheat.sqf b/addons/overheating/functions/fnc_overheat.sqf index 8b51ea9f6d..75ba1e1306 100644 --- a/addons/overheating/functions/fnc_overheat.sqf +++ b/addons/overheating/functions/fnc_overheat.sqf @@ -35,7 +35,6 @@ _temperature = _overheat select 0; _time = _overheat select 1; // Get physical parameters -// Bullet mass is read from config in grains and converted to grams _bulletMass = getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_BulletMass"); if (_bulletMass == 0) then { // If the bullet mass is not configured, estimate it directly in grams From 8e3e38f91d4864f7b49fb732b4aea72d6cdef603 Mon Sep 17 00:00:00 2001 From: jaynus Date: Thu, 7 May 2015 12:28:33 -0700 Subject: [PATCH 0050/1101] Nobin added to server build. Fixes #1043 --- optionals/server/$NOBIN$ | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 optionals/server/$NOBIN$ diff --git a/optionals/server/$NOBIN$ b/optionals/server/$NOBIN$ new file mode 100644 index 0000000000..e69de29bb2 From 518dfb437317f505f7628a449a87d2e72348c4da Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 7 May 2015 21:51:03 +0200 Subject: [PATCH 0051/1101] Added missing privates --- addons/common/functions/fnc_loadSettingsOnServer.sqf | 2 ++ addons/common/functions/fnc_setSetting.sqf | 2 +- addons/common/functions/fnc_setSettingFromConfig.sqf | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf index 9255d047b3..61431ff220 100644 --- a/addons/common/functions/fnc_loadSettingsOnServer.sqf +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -13,6 +13,8 @@ */ #include "script_component.hpp" +private ["_parseConfigForSettings"]; + GVAR(settings) = []; _parseConfigForSettings = { diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index 67068c6ad1..84ba255758 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -17,7 +17,7 @@ */ #include "script_component.hpp" -private ["_name","_value"]; +private ["_name","_value", "_force", "_settingData","_failed"]; _name = _this select 0; _value = _this select 1; diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 3a1b6fd055..0b5d4ab767 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -14,6 +14,8 @@ EXPLODE_1_PVT(_this,_optionEntry); +private ["_fnc_getValueWithType", "_value","_name", "_typeName", "_settingData"]; + _fnc_getValueWithType = { EXPLODE_2_PVT(_this,_optionEntry,_typeName); From 027a3dd4ac1c89d8fb56c177a84d57c3f55ae785 Mon Sep 17 00:00:00 2001 From: jaynus Date: Thu, 7 May 2015 12:52:19 -0700 Subject: [PATCH 0052/1101] AB map tweaking. Just a bit of optimization and crash checking. --- .../advanced_ballistics/AdvancedBallistics.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index 6e964f8921..554c21b601 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -2,7 +2,7 @@ #include #include -#include +#include #include #define M_PI 3.14159265358979323846f @@ -57,7 +57,7 @@ struct Map { }; std::vector bulletDatabase; -std::map mapDatabase; +std::unordered_map mapDatabase; std::string worldName = ""; Map* map = &mapDatabase[""]; @@ -339,10 +339,8 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) tickTime = strtod(strtok_s(NULL, ":", &next_token), NULL); tickTime += strtod(strtok_s(NULL, ":", &next_token), NULL); - while (index >= bulletDatabase.size()) { - Bullet bullet; - bulletDatabase.push_back(bullet); - } + if (index >= bulletDatabase.size()) + bulletDatabase.resize(index); bulletDatabase[index].airFriction = airFriction; bulletDatabase[index].ballisticCoefficients = ballisticCoefficients; @@ -611,8 +609,12 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) mapGrids = (int)ceil((double)mapSize / 50.0) + 1; gridCells = mapGrids * mapGrids; + + auto map_iter = mapDatabase.find(worldName); + if (map_iter == mapDatabase.end()) + return; + map = &map_iter->second; - map = &mapDatabase[worldName]; if (map->gridHeights.size() == gridCells) { int n = sprintf_s(output, outputSize, "%s", "Terrain already initialized"); return; From c2bb6386af70770ebc21977466a2199a6f607e0e Mon Sep 17 00:00:00 2001 From: SAM Date: Thu, 7 May 2015 22:41:44 +0200 Subject: [PATCH 0053/1101] Added required files for new module --- addons/viewdistance/$PBOPREFIX$ | 1 + addons/viewdistance/CfgEventHandlers.hpp | 6 ++++++ addons/viewdistance/XEH_preInit.sqf | 7 +++++++ addons/viewdistance/config.cpp | 15 +++++++++++++++ addons/viewdistance/functions/fnc_empty.sqf | 3 +++ .../viewdistance/functions/script_component.hpp | 1 + addons/viewdistance/script_component.hpp | 12 ++++++++++++ 7 files changed, 45 insertions(+) create mode 100644 addons/viewdistance/$PBOPREFIX$ create mode 100644 addons/viewdistance/CfgEventHandlers.hpp create mode 100644 addons/viewdistance/XEH_preInit.sqf create mode 100644 addons/viewdistance/config.cpp create mode 100644 addons/viewdistance/functions/fnc_empty.sqf create mode 100644 addons/viewdistance/functions/script_component.hpp create mode 100644 addons/viewdistance/script_component.hpp diff --git a/addons/viewdistance/$PBOPREFIX$ b/addons/viewdistance/$PBOPREFIX$ new file mode 100644 index 0000000000..39789fcaba --- /dev/null +++ b/addons/viewdistance/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\blank \ No newline at end of file diff --git a/addons/viewdistance/CfgEventHandlers.hpp b/addons/viewdistance/CfgEventHandlers.hpp new file mode 100644 index 0000000000..f0a9f14d91 --- /dev/null +++ b/addons/viewdistance/CfgEventHandlers.hpp @@ -0,0 +1,6 @@ + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf new file mode 100644 index 0000000000..69abb46fa9 --- /dev/null +++ b/addons/viewdistance/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(empty); + +ADDON = true; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp new file mode 100644 index 0000000000..a7b7bae6df --- /dev/null +++ b/addons/viewdistance/config.cpp @@ -0,0 +1,15 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {""}; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" diff --git a/addons/viewdistance/functions/fnc_empty.sqf b/addons/viewdistance/functions/fnc_empty.sqf new file mode 100644 index 0000000000..c60a82b2d8 --- /dev/null +++ b/addons/viewdistance/functions/fnc_empty.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +diag_log text format["This is here as an example!!!"]; diff --git a/addons/viewdistance/functions/script_component.hpp b/addons/viewdistance/functions/script_component.hpp new file mode 100644 index 0000000000..4b7df89f37 --- /dev/null +++ b/addons/viewdistance/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\viewdistance\script_component.hpp" \ No newline at end of file diff --git a/addons/viewdistance/script_component.hpp b/addons/viewdistance/script_component.hpp new file mode 100644 index 0000000000..79e0e488cc --- /dev/null +++ b/addons/viewdistance/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT viewdistance +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_VIEWDISTANCE + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_VIEWDISTANCE + #define DEBUG_SETTINGS DEBUG_SETTINGS_VIEWDISTANCE +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From 2c8dddfc473fe156576bd8bba288f0bee00fadd5 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 09:28:48 +0200 Subject: [PATCH 0054/1101] Adding required files --- addons/viewdistance/ACE_Settings.hpp | 9 +++++++ addons/viewdistance/config.cpp | 5 ++-- .../functions/fnc_changeViewDistance.sqf | 24 +++++++++++++++++++ addons/viewdistance/functions/fnc_empty.sqf | 3 --- 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 addons/viewdistance/ACE_Settings.hpp create mode 100644 addons/viewdistance/functions/fnc_changeViewDistance.sqf delete mode 100644 addons/viewdistance/functions/fnc_empty.sqf diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp new file mode 100644 index 0000000000..572358876a --- /dev/null +++ b/addons/viewdistance/ACE_Settings.hpp @@ -0,0 +1,9 @@ +class ACE_Settings { + class GVAR(viewdistance) { + typeName = "SCALAR"; + isClientSettable = 1; + values[] = {1500,2000,2500,3000,3500,4000,5000,6000,7000,8000,9000,10000}; + displayName = "View Distance"; // has to be changed to string table type + description = "Change View Distance"; + }; +}; \ No newline at end of file diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index a7b7bae6df..dcffe0f257 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -6,10 +6,11 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {""}; - authorUrl = ""; + author[] = {"Winter"}; + authorUrl = "https://github.com/Winter259"; VERSION_CONFIG; }; }; #include "CfgEventHandlers.hpp" +#include "ACE_Settings.hpp" \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf new file mode 100644 index 0000000000..4543be000b --- /dev/null +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -0,0 +1,24 @@ +/* + * Author: Winter + * Sets the player's current view distance according to allowed values. + * + * + * Arguments: + * 0: View Distance Setting (SCALAR) + * + * Return Value: + * None + * + * Example: + * [1500] call ace_common_fnc_imanexample + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_new_view_distance"]; + +_new_view_distance = _this select 0; + +player setViewDistance (_new_view_distance); \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_empty.sqf b/addons/viewdistance/functions/fnc_empty.sqf deleted file mode 100644 index c60a82b2d8..0000000000 --- a/addons/viewdistance/functions/fnc_empty.sqf +++ /dev/null @@ -1,3 +0,0 @@ -#include "script_component.hpp" - -diag_log text format["This is here as an example!!!"]; From fa071103114cf1566448bc2144082cb0ce11488a Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 10:46:59 +0200 Subject: [PATCH 0055/1101] The stability factor calculation is all metric now --- .../fnc_calculateStabilityFactor.sqf | 22 +++++++++---------- .../functions/fnc_handleFired.sqf | 8 +++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_calculateStabilityFactor.sqf b/addons/advanced_ballistics/functions/fnc_calculateStabilityFactor.sqf index 81b71aeb3b..9b205c3ec2 100644 --- a/addons/advanced_ballistics/functions/fnc_calculateStabilityFactor.sqf +++ b/addons/advanced_ballistics/functions/fnc_calculateStabilityFactor.sqf @@ -4,10 +4,10 @@ * Calculates the stability factor of a bullet * * Arguments: - * 0: caliber - inches - * 1: bullet length - inches - * 2: bullet mass - grains - * 3: barrel twist - inches + * 0: caliber - mm + * 1: bullet length - mm + * 2: bullet mass - grams + * 3: barrel twist - mm * 4: muzzle velocity shift - m/s * 5: temperature - degrees celcius * 6: barometric Pressure - hPA @@ -17,7 +17,8 @@ * * Public: No */ - +#include "script_component.hpp" + private ["_caliber", "_bulletLength", "_bulletMass", "_barrelTwist", "_muzzleVelocity", "_temperature", "_barometricPressure", "_l", "_t", "_stabilityFactor"]; _caliber = _this select 0; _bulletLength = _this select 1; @@ -31,15 +32,14 @@ _barometricPressure = _this select 6; _t = _barrelTwist / _caliber; _l = _bulletLength / _caliber; -_stabilityFactor = 30 * _bulletMass / (_t^2 * _caliber^3 * _l * (1 + _l^2)); +_stabilityFactor = 7587000 * _bulletMass / (_t^2 * _caliber^3 * _l * (1 + _l^2)); -_muzzleVelocity = _muzzleVelocity * 3.2808399; -if (_muzzleVelocity > 1120) then { - _stabilityFactor = _stabilityFactor * (_muzzleVelocity / 2800) ^ (1/3); +if (_muzzleVelocity > 341.376) then { + _stabilityFactor = _stabilityFactor * (_muzzleVelocity / 853.44) ^ (1/3); } else { - _stabilityFactor = _stabilityFactor * (_muzzleVelocity / 1120) ^ (1/3); + _stabilityFactor = _stabilityFactor * (_muzzleVelocity / 341.376) ^ (1/3); }; -_stabilityFactor = _stabilityFactor * (_temperature + 273) / (15 + 273) * 1013.25 / _barometricPressure; +_stabilityFactor = _stabilityFactor * KELVIN(_temperature) / KELVIN(15) * 1013.25 / _barometricPressure; _stabilityFactor diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 23da76ad2c..2e2b0076d1 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -91,10 +91,10 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { }; }; -_caliber = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); -_bulletLength = 39.37 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); -_bulletMass = 15.432 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); -_barrelTwist = 39.37 * getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); +_caliber = 1000 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); +_bulletLength = 1000 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); +_bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); +_barrelTwist = 1000 * getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); _stabilityFactor = 1.5; if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { From ce8e192a01a23940281cfb4b545c052690d483ca Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 12:44:06 +0200 Subject: [PATCH 0056/1101] Convert ACE_caliber to millimeters --- .../functions/fnc_handleFired.sqf | 2 +- addons/ballistics/CfgAmmo.hpp | 92 ++-- extras/CfgAmmoReference.hpp | 410 +++++++++--------- optionals/compat_cup/CfgAmmo.hpp | 64 +-- optionals/compat_hlcmods_core/CfgAmmo.hpp | 44 +- optionals/compat_rh_de/CfgAmmo.hpp | 24 +- optionals/compat_rh_m4/CfgAmmo.hpp | 30 +- optionals/compat_rh_pdw/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 18 +- optionals/compat_rhs_usf3/CfgAmmo.hpp | 14 +- 10 files changed, 350 insertions(+), 350 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 2e2b0076d1..d54caf6f03 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -91,7 +91,7 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { }; }; -_caliber = 1000 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); +_caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); _bulletLength = 1000 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); _bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); _barrelTwist = 1000 * getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 8c47af9ac3..d693a1f44c 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -25,7 +25,7 @@ class CfgAmmo { typicalSpeed=750; tracerStartTime = 0.073; //M856 tracer burns out to 800m tracerEndTime = 1.579; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -42,7 +42,7 @@ class CfgAmmo { deflecting=18; hit=11; typicalSpeed=836; - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -59,7 +59,7 @@ class CfgAmmo { deflecting=18; hit=9; typicalSpeed=886; - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -76,7 +76,7 @@ class CfgAmmo { deflecting=18; hit=6; typicalSpeed=886; - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=2.9808; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -97,7 +97,7 @@ class CfgAmmo { deflecting=18; hit=7; typicalSpeed=880; - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -117,7 +117,7 @@ class CfgAmmo { typicalSpeed=883; tracerStartTime = 0.073; //7T3M tracer burns out to 850m tracerEndTime = 1.736; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -131,7 +131,7 @@ class CfgAmmo { class B_65x39_Caseless : BulletBase { airFriction=-0.000785; typicalSpeed=800; - ACE_caliber=0.006706; + ACE_caliber=6.706; ACE_bulletLength=0.032893; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -154,7 +154,7 @@ class CfgAmmo { airFriction=-0.00078; typicalSpeed=820 ; caliber=0.9; - ACE_caliber=0.006706; + ACE_caliber=6.706; ACE_bulletLength=0.034646; ACE_bulletMass=9.0072; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -169,7 +169,7 @@ class CfgAmmo { airFriction=-0.000651; typicalSpeed=860 ; caliber=1.1; - ACE_caliber=0.006706; + ACE_caliber=6.706; ACE_bulletLength=0.03622; ACE_bulletMass=9.072; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -186,7 +186,7 @@ class CfgAmmo { hit=9; tracerStartTime = 0.073; //Based on the British L5A1 which burns out to 1000m tracerEndTime = 2.058; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -206,7 +206,7 @@ class CfgAmmo { caliber=1.8; hit=16; typicalSpeed=790; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -222,7 +222,7 @@ class CfgAmmo { caliber=1.8; hit=16; typicalSpeed=790; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -238,7 +238,7 @@ class CfgAmmo { caliber=1.5; hit=14; typicalSpeed=900; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -254,7 +254,7 @@ class CfgAmmo { caliber=2.2; hit=11; typicalSpeed=930; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=8.2296; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -270,7 +270,7 @@ class CfgAmmo { caliber=1; hit=6; typicalSpeed=320; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -286,7 +286,7 @@ class CfgAmmo { typicalSpeed=800; caliber=2.0; hit=10; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.030734; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -302,7 +302,7 @@ class CfgAmmo { typicalSpeed=820; caliber=2.1; hit=8; - ACE_caliber=0.007214; + ACE_caliber=7.214; ACE_bulletLength=0.038837; ACE_bulletMass=11.664; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -318,7 +318,7 @@ class CfgAmmo { typicalSpeed=915; caliber=2.3; hit=6; - ACE_caliber=0.006172; + ACE_caliber=6.172; ACE_bulletLength=0.032563; ACE_bulletMass=11.664; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -334,7 +334,7 @@ class CfgAmmo { caliber=1.8; hit=17; typicalSpeed=900; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034366; ACE_bulletMass=12.312; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -350,7 +350,7 @@ class CfgAmmo { caliber=1.9; hit=18; typicalSpeed=867; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -366,7 +366,7 @@ class CfgAmmo { caliber=2.0; hit=19; typicalSpeed=853; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.040691; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -380,7 +380,7 @@ class CfgAmmo { class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; typicalSpeed=820; - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -396,7 +396,7 @@ class CfgAmmo { caliber=1.5; hit=15; typicalSpeed=820; - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -415,7 +415,7 @@ class CfgAmmo { typicalSpeed=800; tracerStartTime = 0.073; //Based on the 7T2 which burns three seconds tracerEndTime = 3; - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -431,7 +431,7 @@ class CfgAmmo { caliber=1.5; hit=11; typicalSpeed=790; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.029286; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -447,7 +447,7 @@ class CfgAmmo { hit=12; caliber=1.5; typicalSpeed=716; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -465,7 +465,7 @@ class CfgAmmo { typicalSpeed=716; tracerStartTime = 0.073; //57N231P tracer burns out to 800m tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -480,7 +480,7 @@ class CfgAmmo { airFriction=-0.00125; typicalSpeed=390; hit=6; - ACE_caliber=0.009042; + ACE_caliber=9.042; ACE_bulletLength=0.015494; ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -495,7 +495,7 @@ class CfgAmmo { hit=5; airFriction=-0.001234; typicalSpeed=298; - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -510,7 +510,7 @@ class CfgAmmo { airFriction=-0.001234; typicalSpeed=370; hit=6; - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -525,7 +525,7 @@ class CfgAmmo { airFriction=-0.00168; typicalSpeed=425; hit=7; - ACE_caliber=0.0127; + ACE_caliber=12.7; ACE_bulletLength=0.019406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -540,7 +540,7 @@ class CfgAmmo { airFriction=-0.001213; typicalSpeed=282; hit=7; - ACE_caliber=0.007938; + ACE_caliber=7.938; ACE_bulletLength=0.015494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -555,7 +555,7 @@ class CfgAmmo { airFriction=-0.00083; typicalSpeed=761; caliber=2.0; - ACE_caliber=0.007899; + ACE_caliber=7.899; ACE_bulletLength=0.031166; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -569,7 +569,7 @@ class CfgAmmo { class B_93x64_Ball : BulletBase { airFriction=-0.00106; typicalSpeed=880; - ACE_caliber=0.009296; + ACE_caliber=9.296; ACE_bulletLength=0.03429; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -584,7 +584,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.000395; typicalSpeed=910; - ACE_caliber=0.010363; + ACE_caliber=10.363; ACE_bulletLength=0.054; ACE_bulletMass=26.568; ACE_transonicStabilityCoef=1; @@ -598,7 +598,7 @@ class CfgAmmo { }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; - ACE_caliber=0.010566; + ACE_caliber=10.566; ACE_bulletLength=0.053061; ACE_bulletMass=25.7904; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -613,7 +613,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.000606; typicalSpeed=915; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.039573; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -627,7 +627,7 @@ class CfgAmmo { class B_338_NM_Ball : BulletBase { airFriction=-0.000537; typicalSpeed=820; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.04318; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -642,7 +642,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.000535; typicalSpeed=826; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.04318; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -658,7 +658,7 @@ class CfgAmmo { airFriction=-0.000673; caliber=2.8; typicalSpeed=826; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.038989; ACE_bulletMass=16.3944; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -672,7 +672,7 @@ class CfgAmmo { class B_127x54_Ball : BulletBase { airFriction=-0.00014; typicalSpeed=300; - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.064516; ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -687,7 +687,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.0006; typicalSpeed=900; - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.058674; ACE_bulletMass=41.9256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -704,7 +704,7 @@ class CfgAmmo { typicalSpeed=900; hit=25; caliber=4.0; - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.058674; ACE_bulletMass=41.9904; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -720,7 +720,7 @@ class CfgAmmo { airFriction=-0.000374; typicalSpeed=860; caliber=3.0; - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.064516; ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -735,7 +735,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.00064; typicalSpeed=820; - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -749,7 +749,7 @@ class CfgAmmo { class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; typicalSpeed=250; - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp index 1d2d5b2700..ab90e6bbd0 100644 --- a/extras/CfgAmmoReference.hpp +++ b/extras/CfgAmmoReference.hpp @@ -5,7 +5,7 @@ class CfgAmmo airFriction=-0.001265; hit=8; typicalSpeed=750; - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -22,7 +22,7 @@ class CfgAmmo deflecting=18; hit=11; typicalSpeed=836; - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -39,7 +39,7 @@ class CfgAmmo deflecting=18; hit=9; typicalSpeed=886; - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -60,7 +60,7 @@ class CfgAmmo deflecting=18; hit=7; typicalSpeed=880; - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -78,7 +78,7 @@ class CfgAmmo deflecting=18; hit=7; typicalSpeed=883; - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -92,7 +92,7 @@ class CfgAmmo class B_65x39_Caseless : BulletBase { airFriction=-0.000785; typicalSpeed=800; - ACE_caliber=0.006706; + ACE_caliber=6.706; ACE_bulletLength=0.032893; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -115,7 +115,7 @@ class CfgAmmo { airFriction=-0.00078; typicalSpeed=820 ; - ACE_caliber=0.006706; + ACE_caliber=6.706; ACE_bulletLength=0.034646; ACE_bulletMass=9.0072; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -130,7 +130,7 @@ class CfgAmmo airFriction=-0.001035; typicalSpeed=833; hit=9; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -150,7 +150,7 @@ class CfgAmmo caliber=1.05; hit=16; typicalSpeed=790; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -166,7 +166,7 @@ class CfgAmmo caliber=0.85; hit=14; typicalSpeed=890; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -182,7 +182,7 @@ class CfgAmmo caliber=0.5; hit=6; typicalSpeed=790; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -198,7 +198,7 @@ class CfgAmmo caliber=1.08; hit=17; typicalSpeed=900; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034366; ACE_bulletMass=12.312; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -214,7 +214,7 @@ class CfgAmmo caliber=1.12; hit=18; typicalSpeed=867; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -230,7 +230,7 @@ class CfgAmmo caliber=1.15; hit=19; typicalSpeed=853; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.040691; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -244,7 +244,7 @@ class CfgAmmo class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; typicalSpeed=820; - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -260,7 +260,7 @@ class CfgAmmo caliber=0.95; hit=15; typicalSpeed=820; - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -277,7 +277,7 @@ class CfgAmmo caliber=0.9; hit=15; typicalSpeed=800; - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -293,7 +293,7 @@ class CfgAmmo caliber=0.9; hit=11; typicalSpeed=790; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.029286; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -308,7 +308,7 @@ class CfgAmmo airFriction=-0.0015168; hit=12; typicalSpeed=716; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -323,7 +323,7 @@ class CfgAmmo airFriction=-0.0015168; hit=12; typicalSpeed=716; - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -338,7 +338,7 @@ class CfgAmmo airFriction=-0.00125; typicalSpeed=390; hit=6; - ACE_caliber=0.009042; + ACE_caliber=9.042; ACE_bulletLength=0.015494; ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -353,7 +353,7 @@ class CfgAmmo hit=5; airFriction=-0.001234; typicalSpeed=298; - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -368,7 +368,7 @@ class CfgAmmo airFriction=-0.001234; typicalSpeed=370; hit=6; - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -383,7 +383,7 @@ class CfgAmmo airFriction=-0.00168; typicalSpeed=425; hit=7; - ACE_caliber=0.0127; + ACE_caliber=12.7; ACE_bulletLength=0.019406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -398,7 +398,7 @@ class CfgAmmo airFriction=-0.001213; typicalSpeed=282; hit=7; - ACE_caliber=0.007938; + ACE_caliber=7.938; ACE_bulletLength=0.015494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -412,7 +412,7 @@ class CfgAmmo class ACE_303_Ball : ACE_762x51_Ball_M118LR { airFriction=-0.00083; typicalSpeed=761; - ACE_caliber=0.007899; + ACE_caliber=7.899; ACE_bulletLength=0.031166; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -426,7 +426,7 @@ class CfgAmmo class B_93x64_Ball : BulletBase { airFriction=-0.00106; typicalSpeed=880; - ACE_caliber=0.009296; + ACE_caliber=9.296; ACE_bulletLength=0.03429; ACE_bulletMass=14.904; ACE_transonicStabilityCoef=1; @@ -442,7 +442,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.000395; typicalSpeed=910; - ACE_caliber=0.010363; + ACE_caliber=10.363; ACE_bulletLength=0.054; ACE_bulletMass=26.568; ACE_transonicStabilityCoef=1; @@ -456,7 +456,7 @@ class CfgAmmo }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; - ACE_caliber=0.010566; + ACE_caliber=10.566; ACE_bulletLength=0.053061; ACE_bulletMass=25.7904; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -471,7 +471,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.000606; typicalSpeed=915; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.039573; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -485,7 +485,7 @@ class CfgAmmo class B_338_NM_Ball : BulletBase { airFriction=-0.000537; typicalSpeed=820; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.04318; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -501,7 +501,7 @@ class CfgAmmo airFriction=-0.000535; caliber=1.55; typicalSpeed=826; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.04318; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -517,7 +517,7 @@ class CfgAmmo airFriction=-0.000673; caliber=2.4; typicalSpeed=826; - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.038989; ACE_bulletMass=16.3944; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -531,7 +531,7 @@ class CfgAmmo class B_127x54_Ball : BulletBase { airFriction=-0.00014; typicalSpeed=300; - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.064516; ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -546,7 +546,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.0006; typicalSpeed=853; - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.058674; ACE_bulletMass=41.9256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -561,7 +561,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.000374; typicalSpeed=860; - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.064516; ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -576,7 +576,7 @@ class CfgAmmo timeToLive=10; airFriction=-0.00064; typicalSpeed=820; - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -590,7 +590,7 @@ class CfgAmmo class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; typicalSpeed=250; - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -604,7 +604,7 @@ class CfgAmmo class TMR_B_762x51_M118LR : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -618,7 +618,7 @@ class CfgAmmo class RH_50_AE_Ball: BulletBase { - ACE_caliber=0.0127; + ACE_caliber=12.7; ACE_bulletLength=0.028194; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -631,7 +631,7 @@ class CfgAmmo }; class RH_454_Casull: BulletBase { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.022733; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -644,7 +644,7 @@ class CfgAmmo }; class RH_32ACP: BulletBase { - ACE_caliber=0.007938; + ACE_caliber=7.938; ACE_bulletLength=0.015494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -657,7 +657,7 @@ class CfgAmmo }; class RH_45ACP: BulletBase { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -670,7 +670,7 @@ class CfgAmmo }; class RH_B_40SW: BulletBase { - ACE_caliber=0.01016; + ACE_caliber=10.16; ACE_bulletLength=0.011354; ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -683,7 +683,7 @@ class CfgAmmo }; class RH_44mag_ball: BulletBase { - ACE_caliber=0.010897; + ACE_caliber=10.897; ACE_bulletLength=0.020422; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -696,7 +696,7 @@ class CfgAmmo }; class RH_357mag_ball: BulletBase { - ACE_caliber=0.009068; + ACE_caliber=9.068; ACE_bulletLength=0.013741; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -709,7 +709,7 @@ class CfgAmmo }; class RH_762x25: BulletBase { - ACE_caliber=0.007874; + ACE_caliber=7.874; ACE_bulletLength=0.013856; ACE_bulletMass=5.5728; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -722,7 +722,7 @@ class CfgAmmo }; class RH_9x18_Ball: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -735,7 +735,7 @@ class CfgAmmo }; class RH_B_9x19_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -748,7 +748,7 @@ class CfgAmmo }; class RH_B_22LR_SD: BulletBase { - ACE_caliber=0.005664; + ACE_caliber=5.664; ACE_bulletLength=0.01143; ACE_bulletMass=2.4624; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -761,7 +761,7 @@ class CfgAmmo }; class RH_57x28mm: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.012573; ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -775,7 +775,7 @@ class CfgAmmo class RH_9x19_B_M822: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -788,7 +788,7 @@ class CfgAmmo }; class RH_9x19_B_HP: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -801,7 +801,7 @@ class CfgAmmo }; class RH_9x19_B_HPSB: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015316; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -814,7 +814,7 @@ class CfgAmmo }; class RH_B_6x35: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.011303; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -827,7 +827,7 @@ class CfgAmmo }; class RH_556x45_B_M855A1 : B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -840,7 +840,7 @@ class CfgAmmo }; class RH_556x45_B_Mk262 : B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -853,7 +853,7 @@ class CfgAmmo }; class RH_556x45_B_Mk318 : B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -866,7 +866,7 @@ class CfgAmmo }; class RH_68x43_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.007036; + ACE_caliber=7.036; ACE_bulletLength=0.024359; ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -879,7 +879,7 @@ class CfgAmmo }; class RH_68x43_B_Match: B_65x39_Caseless { - ACE_caliber=0.007036; + ACE_caliber=7.036; ACE_bulletLength=0.03175; ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -892,7 +892,7 @@ class CfgAmmo }; class RH_762x35_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028397; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -905,7 +905,7 @@ class CfgAmmo }; class RH_762x35_B_Match: B_65x39_Caseless { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.029286; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -918,7 +918,7 @@ class CfgAmmo }; class RH_762x35_B_MSB: B_65x39_Caseless { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -931,7 +931,7 @@ class CfgAmmo }; class RH_762x51_B_M80A1 : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -944,7 +944,7 @@ class CfgAmmo }; class RH_762x51_B_Mk316LR : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -957,7 +957,7 @@ class CfgAmmo }; class RH_762x51_B_Mk319 : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.02728; ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -970,7 +970,7 @@ class CfgAmmo }; class RH_762x51_B_LFMJSB: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -984,7 +984,7 @@ class CfgAmmo class HLC_556NATO_SOST: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -997,7 +997,7 @@ class CfgAmmo }; class HLC_556NATO_SPR: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1010,7 +1010,7 @@ class CfgAmmo }; class HLC_556NATO_EPR: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -1023,7 +1023,7 @@ class CfgAmmo }; class HLC_300Blackout_Ball: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028397; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1036,7 +1036,7 @@ class CfgAmmo }; class HLC_300Blackout_SMK: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1049,7 +1049,7 @@ class CfgAmmo }; class HLC_762x51_BTSub: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1062,7 +1062,7 @@ class CfgAmmo }; class HLC_762x54_ball: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1075,7 +1075,7 @@ class CfgAmmo }; class HLC_762x54_tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1088,7 +1088,7 @@ class CfgAmmo }; class HLC_303Brit_B: BulletBase { - ACE_caliber=0.007899; + ACE_caliber=7.899; ACE_bulletLength=0.031166; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1101,7 +1101,7 @@ class CfgAmmo }; class HLC_792x57_Ball: BulletBase { - ACE_caliber=0.008077; + ACE_caliber=8.077; ACE_bulletLength=0.028651; ACE_bulletMass=12.7008; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1114,7 +1114,7 @@ class CfgAmmo }; class FH_545x39_Ball: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1134,7 +1134,7 @@ class CfgAmmo }; class HLC_9x19_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1155,7 +1155,7 @@ class CfgAmmo }; class HLC_10mm_FMJ: HLC_9x19_Ball { - ACE_caliber=0.0127; + ACE_caliber=12.7; ACE_bulletLength=0.019406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1168,7 +1168,7 @@ class CfgAmmo }; class HLC_9x19_M882_SMG: HLC_9x19_Ball { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1182,7 +1182,7 @@ class CfgAmmo class M_mas_545x39_Ball_7N6M : BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1195,7 +1195,7 @@ class CfgAmmo }; class M_mas_545x39_Ball_7T3M : BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1208,7 +1208,7 @@ class CfgAmmo }; class B_mas_556x45_Ball_Mk262 : B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1221,7 +1221,7 @@ class CfgAmmo }; class B_mas_9x18_Ball_57N181S : BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1234,7 +1234,7 @@ class CfgAmmo }; class B_mas_9x21p_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1247,7 +1247,7 @@ class CfgAmmo }; class B_mas_9x21_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1260,7 +1260,7 @@ class CfgAmmo }; class B_mas_9x21d_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1273,7 +1273,7 @@ class CfgAmmo }; class B_mas_765x17_Ball: BulletBase { - ACE_caliber=0.007938; + ACE_caliber=7.938; ACE_bulletLength=0.015494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1286,7 +1286,7 @@ class CfgAmmo }; class B_mas_762x39_Ball: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1299,7 +1299,7 @@ class CfgAmmo }; class B_mas_762x39_Ball_T: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -1312,7 +1312,7 @@ class CfgAmmo }; class B_mas_762x51_Ball_M118LR : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1325,7 +1325,7 @@ class CfgAmmo }; class B_mas_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034366; ACE_bulletMass=12.312; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1338,7 +1338,7 @@ class CfgAmmo }; class B_mas_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1351,7 +1351,7 @@ class CfgAmmo }; class B_mas_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.040691; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1364,7 +1364,7 @@ class CfgAmmo }; class B_mas_762x54_Ball : BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1377,7 +1377,7 @@ class CfgAmmo }; class B_mas_762x54_Ball_T : BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1390,7 +1390,7 @@ class CfgAmmo }; class BWA3_B_762x51_Ball_LR : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1403,7 +1403,7 @@ class CfgAmmo }; class BWA3_B_762x51_Ball_SD : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1417,7 +1417,7 @@ class CfgAmmo class BWA3_B_46x30_Ball : BulletBase { - ACE_caliber=0.004902; + ACE_caliber=4.902; ACE_bulletLength=0.013005; ACE_bulletMass=2.0088; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1431,7 +1431,7 @@ class CfgAmmo class Trixie_338_Ball : BulletBase { - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.04318; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1444,7 +1444,7 @@ class CfgAmmo }; class Trixie_303_Ball : BulletBase { - ACE_caliber=0.007899; + ACE_caliber=7.899; ACE_bulletLength=0.031166; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1458,7 +1458,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk318_Ball : BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1471,7 +1471,7 @@ class CfgAmmo }; class rhs_ammo_556x45_Mk262_Ball : BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1484,7 +1484,7 @@ class CfgAmmo }; class rhsammo_762x51_Ball : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1497,7 +1497,7 @@ class CfgAmmo }; class rhs_B_545x39_Ball : BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1510,7 +1510,7 @@ class CfgAmmo }; class rhs_B_545x39_Ball_Tracer_Green : BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1523,7 +1523,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M118_Special_Ball : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1536,7 +1536,7 @@ class CfgAmmo }; class rhs_B_762x54_Ball : BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1549,7 +1549,7 @@ class CfgAmmo }; class rhs_B_762x54_Ball_Tracer_Green : BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1562,7 +1562,7 @@ class CfgAmmo }; class rhs_B_762x39_Ball : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1575,7 +1575,7 @@ class CfgAmmo }; class rhs_B_762x39_Tracer : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -1588,7 +1588,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M80_Ball : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1601,7 +1601,7 @@ class CfgAmmo }; class rhsusf_B_300winmag : BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1615,7 +1615,7 @@ class CfgAmmo class R3F_9x19_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1628,7 +1628,7 @@ class CfgAmmo }; class R3F_556x45_Ball: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -1641,7 +1641,7 @@ class CfgAmmo }; class R3F_762x51_Ball: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1654,7 +1654,7 @@ class CfgAmmo }; class R3F_762x51_Ball2: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1667,7 +1667,7 @@ class CfgAmmo }; class R3F_127x99_Ball: BulletBase { - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.058674; ACE_bulletMass=41.9256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1680,7 +1680,7 @@ class CfgAmmo }; class R3F_127x99_Ball2: BulletBase { - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.058674; ACE_bulletMass=41.9256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1694,7 +1694,7 @@ class CfgAmmo class CUP_B_545x39_Ball: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1707,7 +1707,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1720,7 +1720,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1733,7 +1733,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1746,7 +1746,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1759,7 +1759,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1772,7 +1772,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -1785,7 +1785,7 @@ class CfgAmmo }; class B_762x39mm_KLT: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1798,7 +1798,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1811,7 +1811,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1824,7 +1824,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1837,7 +1837,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1850,7 +1850,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1863,7 +1863,7 @@ class CfgAmmo }; class CUP_B_9x19_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -1876,7 +1876,7 @@ class CfgAmmo }; class CUP_B_762x51_noTracer: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1889,7 +1889,7 @@ class CfgAmmo }; class CUP_B_762x51_Red_Tracer_3RndBurst: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1902,7 +1902,7 @@ class CfgAmmo }; class CUP_B_762x51_White_Tracer_3RndBurst: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1915,7 +1915,7 @@ class CfgAmmo }; class CUP_B_303_Ball: BulletBase { - ACE_caliber=0.007899; + ACE_caliber=7.899; ACE_bulletLength=0.031166; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1928,7 +1928,7 @@ class CfgAmmo }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1941,7 +1941,7 @@ class CfgAmmo }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1954,7 +1954,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1967,7 +1967,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1980,7 +1980,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -1993,7 +1993,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2006,7 +2006,7 @@ class CfgAmmo }; class CUP_B_9x39_SP5: BulletBase { - ACE_caliber=0.009246; + ACE_caliber=9.246; ACE_bulletLength=0.031496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2019,7 +2019,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Green: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2032,7 +2032,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Red: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2045,7 +2045,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Yellow: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2058,7 +2058,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_White: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2071,7 +2071,7 @@ class CfgAmmo }; class B_127x107_Ball: BulletBase { - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2084,7 +2084,7 @@ class CfgAmmo }; class CUP_B_9x18_SD: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2097,7 +2097,7 @@ class CfgAmmo }; class CUP_B_765x17_Ball: BulletBase { - ACE_caliber=0.007938; + ACE_caliber=7.938; ACE_bulletLength=0.015494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2110,7 +2110,7 @@ class CfgAmmo }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { - ACE_caliber=0.014884; + ACE_caliber=14.884; ACE_bulletLength=0.0508; ACE_bulletMass=65.448; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2123,7 +2123,7 @@ class CfgAmmo }; class CUP_B_127x99_Ball_White_Tracer: BulletBase { - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.058674; ACE_bulletMass=41.9256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2136,7 +2136,7 @@ class CfgAmmo }; class CUP_B_86x70_Ball_noTracer: BulletBase { - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.04318; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2150,7 +2150,7 @@ class CfgAmmo class VTN_9x18_Ball_FMJ: B_9x21_Ball { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2163,7 +2163,7 @@ class CfgAmmo }; class VTN_9x18_Ball_SC: VTN_9x18_Ball_FMJ { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2176,7 +2176,7 @@ class CfgAmmo }; class VTN_9x18_Ball_TRC: VTN_9x18_Ball_FMJ { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2189,7 +2189,7 @@ class CfgAmmo }; class VTN_9x18_Ball_AP1: VTN_9x18_Ball_FMJ { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2202,7 +2202,7 @@ class CfgAmmo }; class VTN_9x18_Ball_AP2: VTN_9x18_Ball_FMJ { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2215,7 +2215,7 @@ class CfgAmmo }; class VTN_9x18_Ball_PRS: VTN_9x18_Ball_FMJ { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2228,7 +2228,7 @@ class CfgAmmo }; class VTN_9x19_Ball_SC: VTN_9x18_Ball_FMJ { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2241,7 +2241,7 @@ class CfgAmmo }; class VTN_9x19_Ball_TRC: VTN_9x19_Ball_SC { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2254,7 +2254,7 @@ class CfgAmmo }; class VTN_9x19_Ball_AP: VTN_9x19_Ball_SC { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2267,7 +2267,7 @@ class CfgAmmo }; class VTN_9x19_Ball_PRS: VTN_9x19_Ball_SC { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2280,7 +2280,7 @@ class CfgAmmo }; class VTN_9x39_Ball_SC: B_9x21_Ball { - ACE_caliber=0.009246; + ACE_caliber=9.246; ACE_bulletLength=0.031496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2293,7 +2293,7 @@ class CfgAmmo }; class VTN_9x39_Ball_AP: VTN_9x39_Ball_SC { - ACE_caliber=0.009246; + ACE_caliber=9.246; ACE_bulletLength=0.031496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2306,7 +2306,7 @@ class CfgAmmo }; class VTN_545x39_Ball_SC: B_556x45_Ball { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2319,7 +2319,7 @@ class CfgAmmo }; class VTN_545x39_Ball_TRC: VTN_545x39_Ball_SC { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2332,7 +2332,7 @@ class CfgAmmo }; class VTN_545x39_Ball_AP: VTN_545x39_Ball_TRC { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2345,7 +2345,7 @@ class CfgAmmo }; class VTN_545x39_Ball_AP2: VTN_545x39_Ball_AP { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2358,7 +2358,7 @@ class CfgAmmo }; class VTN_545x39_Ball_SS: VTN_545x39_Ball_SC { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2371,7 +2371,7 @@ class CfgAmmo }; class VTN_762x39_Ball_SC: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2384,7 +2384,7 @@ class CfgAmmo }; class VTN_762x39_Ball_TRC: VTN_762x39_Ball_SC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -2397,7 +2397,7 @@ class CfgAmmo }; class VTN_762x39_Ball_AP: VTN_762x39_Ball_TRC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2410,7 +2410,7 @@ class CfgAmmo }; class VTN_762x39_Ball_INC: VTN_762x39_Ball_AP { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2423,7 +2423,7 @@ class CfgAmmo }; class VTN_762x39_Ball_API: VTN_762x39_Ball_INC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2436,7 +2436,7 @@ class CfgAmmo }; class VTN_762x39_Ball_SS: VTN_762x39_Ball_SC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2449,7 +2449,7 @@ class CfgAmmo }; class VTN_762x41_Ball_SS: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.013462; ACE_bulletMass=9.2664; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2462,7 +2462,7 @@ class CfgAmmo }; class VTN_762x54_Ball_SC: VTN_762x39_Ball_SC { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2475,7 +2475,7 @@ class CfgAmmo }; class VTN_762x54_Ball_TRC: VTN_762x54_Ball_SC { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2488,7 +2488,7 @@ class CfgAmmo }; class VTN_762x54_Ball_AP: VTN_762x54_Ball_TRC { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2501,7 +2501,7 @@ class CfgAmmo }; class VTN_762x54_Ball_INC: VTN_762x54_Ball_AP { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2514,7 +2514,7 @@ class CfgAmmo }; class VTN_762x54_Ball_API: VTN_762x54_Ball_INC { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2527,7 +2527,7 @@ class CfgAmmo }; class VTN_145x114_Ball_APT: B_127x108_Ball { - ACE_caliber=0.014884; + ACE_caliber=14.884; ACE_bulletLength=0.0508; ACE_bulletMass=65.448; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2540,7 +2540,7 @@ class CfgAmmo }; class VTN_6mm_BB: B_65x39_Caseless { - ACE_caliber=0.006096; + ACE_caliber=6.096; ACE_bulletLength=0.006096; ACE_bulletMass=0.3888; ACE_ammoTempMuzzleVelocityShifts[]={}; @@ -2553,7 +2553,7 @@ class CfgAmmo }; class VTN_9x19_Ball_FMJ: B_9x21_Ball { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2566,7 +2566,7 @@ class CfgAmmo }; class VTN_556x45_Ball_FMJ: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2579,7 +2579,7 @@ class CfgAmmo }; class VTN_556x45_Ball_TRC: VTN_556x45_Ball_FMJ { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2592,7 +2592,7 @@ class CfgAmmo }; class VTN_556x45_Ball_TRCN: VTN_556x45_Ball_TRC { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2605,7 +2605,7 @@ class CfgAmmo }; class VTN_556x45_Ball_SC: VTN_556x45_Ball_FMJ { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2618,7 +2618,7 @@ class CfgAmmo }; class VTN_556x45_Ball_AP: VTN_556x45_Ball_TRC { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2631,7 +2631,7 @@ class CfgAmmo }; class VTN_556x45_Ball_INC: VTN_556x45_Ball_AP { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -2644,7 +2644,7 @@ class CfgAmmo }; class VTN_556x45_Ball_LR: VTN_556x45_Ball_FMJ { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2657,7 +2657,7 @@ class CfgAmmo }; class VTN_556x45_Ball_SS: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2670,7 +2670,7 @@ class CfgAmmo }; class VTN_762x51_Ball_SC: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2683,7 +2683,7 @@ class CfgAmmo }; class VTN_762x51_Ball_TRC: VTN_762x51_Ball_SC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2696,7 +2696,7 @@ class CfgAmmo }; class VTN_762x51_Ball_TRCN: VTN_762x51_Ball_TRC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2709,7 +2709,7 @@ class CfgAmmo }; class VTN_762x51_Ball_AP: VTN_762x51_Ball_TRC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2722,7 +2722,7 @@ class CfgAmmo }; class VTN_762x51_Ball_LR: VTN_762x51_Ball_SC { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2735,7 +2735,7 @@ class CfgAmmo }; class VTN_1143x23_Ball_FMJ: B_408_Ball { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2748,7 +2748,7 @@ class CfgAmmo }; class VTN_1143x23_Ball_HP: VTN_1143x23_Ball_FMJ { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2761,7 +2761,7 @@ class CfgAmmo }; class VTN_1143x23_Ball_JHP: VTN_1143x23_Ball_FMJ { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -2774,7 +2774,7 @@ class CfgAmmo }; class VTN_762x39_Ball_FMJ: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -2787,7 +2787,7 @@ class CfgAmmo }; class VTN_45_Pellet: B_762x51_Ball { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.005842; ACE_bulletMass=0.1944; ACE_ammoTempMuzzleVelocityShifts[]={}; diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index a03d38bf03..b8c8faa30b 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class B_127x99_Ball; class CUP_B_545x39_Ball: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -18,7 +18,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -31,7 +31,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -44,7 +44,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -57,7 +57,7 @@ class CfgAmmo }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -70,7 +70,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -83,7 +83,7 @@ class CfgAmmo }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -96,7 +96,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -109,7 +109,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -122,7 +122,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -135,7 +135,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -148,7 +148,7 @@ class CfgAmmo }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -161,7 +161,7 @@ class CfgAmmo }; class CUP_B_9x19_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -174,7 +174,7 @@ class CfgAmmo }; class CUP_B_762x51_noTracer: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -187,7 +187,7 @@ class CfgAmmo }; class CUP_B_303_Ball: BulletBase { - ACE_caliber=0.007899; + ACE_caliber=7.899; ACE_bulletLength=0.031166; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -200,7 +200,7 @@ class CfgAmmo }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -213,7 +213,7 @@ class CfgAmmo }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -226,7 +226,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -239,7 +239,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -252,7 +252,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -265,7 +265,7 @@ class CfgAmmo }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -278,7 +278,7 @@ class CfgAmmo }; class CUP_B_9x39_SP5: BulletBase { - ACE_caliber=0.009246; + ACE_caliber=9.246; ACE_bulletLength=0.031496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -291,7 +291,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Green: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -304,7 +304,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Red: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -317,7 +317,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_Yellow: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -330,7 +330,7 @@ class CfgAmmo }; class CUP_B_762x51_Tracer_White: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -343,7 +343,7 @@ class CfgAmmo }; class B_127x107_Ball: BulletBase { - ACE_caliber=0.012979; + ACE_caliber=12.979; ACE_bulletLength=0.064008; ACE_bulletMass=48.276; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -356,7 +356,7 @@ class CfgAmmo }; class CUP_B_9x18_SD: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -369,7 +369,7 @@ class CfgAmmo }; class CUP_B_765x17_Ball: BulletBase { - ACE_caliber=0.007938; + ACE_caliber=7.938; ACE_bulletLength=0.015494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -382,7 +382,7 @@ class CfgAmmo }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { - ACE_caliber=0.014884; + ACE_caliber=14.884; ACE_bulletLength=0.0508; ACE_bulletMass=65.448; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -395,7 +395,7 @@ class CfgAmmo }; class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.058674; ACE_bulletMass=41.9256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -408,7 +408,7 @@ class CfgAmmo }; class CUP_B_86x70_Ball_noTracer: BulletBase { - ACE_caliber=0.008585; + ACE_caliber=8.585; ACE_bulletLength=0.04318; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp index fdc4e538b7..d2127d5d82 100644 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ b/optionals/compat_hlcmods_core/CfgAmmo.hpp @@ -8,7 +8,7 @@ class CfgAmmo class HLC_762x51_ball; class HLC_556NATO_EPR: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -21,7 +21,7 @@ class CfgAmmo }; class HLC_556NATO_SOST: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -34,7 +34,7 @@ class CfgAmmo }; class HLC_556NATO_SPR: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -47,7 +47,7 @@ class CfgAmmo }; class HLC_300Blackout_Ball: B_556x45_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028397; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -60,7 +60,7 @@ class CfgAmmo }; class HLC_300Blackout_SMK: HLC_300Blackout_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -73,7 +73,7 @@ class CfgAmmo }; class HLC_762x39_Ball: HLC_300Blackout_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -86,7 +86,7 @@ class CfgAmmo }; class HLC_762x39_Tracer: HLC_762x39_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -99,7 +99,7 @@ class CfgAmmo }; class HLC_762x51_MK316_20in: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -112,7 +112,7 @@ class CfgAmmo }; class HLC_762x51_BTSub: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -125,7 +125,7 @@ class CfgAmmo }; class HLC_762x54_ball: HLC_762x51_ball { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -138,7 +138,7 @@ class CfgAmmo }; class HLC_762x54_tracer: HLC_762x51_tracer { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -151,7 +151,7 @@ class CfgAmmo }; class HLC_303Brit_B: B_556x45_Ball { - ACE_caliber=0.007899; + ACE_caliber=7.899; ACE_bulletLength=0.031166; ACE_bulletMass=11.2752; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -164,7 +164,7 @@ class CfgAmmo }; class HLC_792x57_Ball: HLC_303Brit_B { - ACE_caliber=0.008077; + ACE_caliber=8.077; ACE_bulletLength=0.028651; ACE_bulletMass=12.7008; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -183,7 +183,7 @@ class CfgAmmo }; class FH_545x39_Ball: B_556x45_Ball { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -203,7 +203,7 @@ class CfgAmmo }; class HLC_57x28mm_JHP: FH_545x39_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.012573; ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -216,7 +216,7 @@ class CfgAmmo }; class HLC_9x19_Ball: B_556x45_Ball { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -229,7 +229,7 @@ class CfgAmmo }; class HLC_9x19_M882_SMG: B_556x45_Ball { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -250,7 +250,7 @@ class CfgAmmo }; class HLC_10mm_FMJ: HLC_9x19_Ball { - ACE_caliber=0.0127; + ACE_caliber=12.7; ACE_bulletLength=0.019406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -263,7 +263,7 @@ class CfgAmmo }; class HLC_45ACP_Ball: B_556x45_Ball { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -276,7 +276,7 @@ class CfgAmmo }; class FH_44Mag: HLC_45ACP_Ball { - ACE_caliber=0.010897; + ACE_caliber=10.897; ACE_bulletLength=0.020422; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -289,7 +289,7 @@ class CfgAmmo }; class FH_50BMG_SLAP: B_127x99_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.03175; ACE_bulletMass=22.68; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -302,7 +302,7 @@ class CfgAmmo }; class FH_50BMG_Raufoss: B_127x99_Ball { - ACE_caliber=0.012954; + ACE_caliber=12.954; ACE_bulletLength=0.060452; ACE_bulletMass=42.768; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; diff --git a/optionals/compat_rh_de/CfgAmmo.hpp b/optionals/compat_rh_de/CfgAmmo.hpp index cceef5ef4f..e95bcdcad0 100644 --- a/optionals/compat_rh_de/CfgAmmo.hpp +++ b/optionals/compat_rh_de/CfgAmmo.hpp @@ -4,7 +4,7 @@ class CfgAmmo class BulletBase; class RH_50_AE_Ball: BulletBase { - ACE_caliber=0.0127; + ACE_caliber=12.7; ACE_bulletLength=0.028194; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -17,7 +17,7 @@ class CfgAmmo }; class RH_454_Casull: BulletBase { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.022733; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -30,7 +30,7 @@ class CfgAmmo }; class RH_32ACP: BulletBase { - ACE_caliber=0.007938; + ACE_caliber=7.938; ACE_bulletLength=0.015494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -43,7 +43,7 @@ class CfgAmmo }; class RH_45ACP: BulletBase { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -56,7 +56,7 @@ class CfgAmmo }; class RH_B_40SW: BulletBase { - ACE_caliber=0.01016; + ACE_caliber=10.16; ACE_bulletLength=0.011354; ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -69,7 +69,7 @@ class CfgAmmo }; class RH_44mag_ball: BulletBase { - ACE_caliber=0.010897; + ACE_caliber=10.897; ACE_bulletLength=0.020422; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -82,7 +82,7 @@ class CfgAmmo }; class RH_357mag_ball: BulletBase { - ACE_caliber=0.009068; + ACE_caliber=9.068; ACE_bulletLength=0.013741; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -95,7 +95,7 @@ class CfgAmmo }; class RH_762x25: BulletBase { - ACE_caliber=0.007874; + ACE_caliber=7.874; ACE_bulletLength=0.013856; ACE_bulletMass=5.5728; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -108,7 +108,7 @@ class CfgAmmo }; class RH_9x18_Ball: BulletBase { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -121,7 +121,7 @@ class CfgAmmo }; class RH_B_9x19_Ball: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -134,7 +134,7 @@ class CfgAmmo }; class RH_B_22LR_SD: BulletBase { - ACE_caliber=0.005664; + ACE_caliber=5.664; ACE_bulletLength=0.01143; ACE_bulletMass=2.4624; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -147,7 +147,7 @@ class CfgAmmo }; class RH_57x28mm: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.012573; ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/optionals/compat_rh_m4/CfgAmmo.hpp b/optionals/compat_rh_m4/CfgAmmo.hpp index 3138de15f0..38c58bb7d4 100644 --- a/optionals/compat_rh_m4/CfgAmmo.hpp +++ b/optionals/compat_rh_m4/CfgAmmo.hpp @@ -10,7 +10,7 @@ class CfgAmmo { class RH_9x19_B_M822: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -23,7 +23,7 @@ class CfgAmmo { }; class RH_9x19_B_HP: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -36,7 +36,7 @@ class CfgAmmo { }; class RH_9x19_B_HPSB: BulletBase { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015316; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -49,7 +49,7 @@ class CfgAmmo { }; class RH_556x45_B_M855A1: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; @@ -62,7 +62,7 @@ class CfgAmmo { }; class RH_556x45_B_Mk318: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -75,7 +75,7 @@ class CfgAmmo { }; class RH_556x45_B_Mk262: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -88,7 +88,7 @@ class CfgAmmo { }; class RH_68x43_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.007036; + ACE_caliber=7.036; ACE_bulletLength=0.024359; ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -101,7 +101,7 @@ class CfgAmmo { }; class RH_68x43_B_Match: B_65x39_Caseless { - ACE_caliber=0.007036; + ACE_caliber=7.036; ACE_bulletLength=0.03175; ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -114,7 +114,7 @@ class CfgAmmo { }; class RH_762x35_B_FMJ: B_65x39_Caseless { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028397; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -127,7 +127,7 @@ class CfgAmmo { }; class RH_762x35_B_Match: B_65x39_Caseless { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.029286; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -140,7 +140,7 @@ class CfgAmmo { }; class RH_762x35_B_MSB: B_65x39_Caseless { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -153,7 +153,7 @@ class CfgAmmo { }; class RH_762x51_B_M80A1: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -166,7 +166,7 @@ class CfgAmmo { }; class RH_762x51_B_Mk316LR: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; @@ -179,7 +179,7 @@ class CfgAmmo { }; class RH_762x51_B_Mk319: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -192,7 +192,7 @@ class CfgAmmo { }; class RH_762x51_B_LFMJSB: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.034036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/optionals/compat_rh_pdw/CfgAmmo.hpp b/optionals/compat_rh_pdw/CfgAmmo.hpp index dad1d093d4..f003c9599e 100644 --- a/optionals/compat_rh_pdw/CfgAmmo.hpp +++ b/optionals/compat_rh_pdw/CfgAmmo.hpp @@ -2,7 +2,7 @@ class BulletBase; class RH_B_6x35: BulletBase { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.011303; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 486fc265f6..15161e1fff 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class B_556x45_Ball; class rhs_B_545x39_Ball: B_556x45_Ball { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -18,7 +18,7 @@ class CfgAmmo }; class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { - ACE_caliber=0.005588; + ACE_caliber=5.588; ACE_bulletLength=0.02159; ACE_bulletMass=3.22704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -32,7 +32,7 @@ class CfgAmmo class B_762x51_Ball; class rhs_B_762x54_Ball: B_762x51_Ball { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -45,7 +45,7 @@ class CfgAmmo }; class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.6552; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -58,7 +58,7 @@ class CfgAmmo }; class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { - ACE_caliber=0.007925; + ACE_caliber=7.925; ACE_bulletLength=0.028956; ACE_bulletMass=9.8496; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -71,7 +71,7 @@ class CfgAmmo }; class rhs_B_762x39_Ball: B_762x51_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -84,7 +84,7 @@ class CfgAmmo }; class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; 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}; @@ -98,7 +98,7 @@ class CfgAmmo class B_9x21_Ball; class rhs_B_9x19_7N21: B_9x21_Ball { - ACE_caliber=0.009017; + ACE_caliber=9.017; ACE_bulletLength=0.015494; ACE_bulletMass=5.19696; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; @@ -111,7 +111,7 @@ class CfgAmmo }; class rhs_B_9x18_57N181S: B_9x21_Ball { - ACE_caliber=0.009271; + ACE_caliber=9.271; ACE_bulletLength=0.015494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 58b50b68cf..35c03f09ae 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -4,7 +4,7 @@ class CfgAmmo class BulletBase; class rhsusf_B_300winmag: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.037821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -18,7 +18,7 @@ class CfgAmmo class B_556x45_Ball; class rhs_ammo_556x45_Mk318_Ball: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -31,7 +31,7 @@ class CfgAmmo }; class rhs_ammo_556x45_Mk262_Ball: B_556x45_Ball { - ACE_caliber=0.00569; + ACE_caliber=5.69; ACE_bulletLength=0.023012; ACE_bulletMass=4.9896; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -44,7 +44,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M80_Ball: BulletBase { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.028956; ACE_bulletMass=9.4608; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -57,7 +57,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M118_Special_Ball: rhs_ammo_762x51_M80_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -70,7 +70,7 @@ class CfgAmmo }; class rhs_ammo_762x51_M993_Ball: rhs_ammo_762x51_M80_Ball { - ACE_caliber=0.007823; + ACE_caliber=7.823; ACE_bulletLength=0.031496; ACE_bulletMass=8.2296; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -83,7 +83,7 @@ class CfgAmmo }; class rhs_ammo_45ACP_MHP: BulletBase { - ACE_caliber=0.011481; + ACE_caliber=11.481; ACE_bulletLength=0.017272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; From adc758cd1451e03ba1c3d3db13480800c3e81038 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 12:45:17 +0200 Subject: [PATCH 0057/1101] Convert ACE_bulletLength to millimeters --- .../functions/fnc_handleFired.sqf | 2 +- addons/ballistics/CfgAmmo.hpp | 92 ++-- extras/CfgAmmoReference.hpp | 410 +++++++++--------- optionals/compat_cup/CfgAmmo.hpp | 64 +-- optionals/compat_hlcmods_core/CfgAmmo.hpp | 44 +- optionals/compat_rh_de/CfgAmmo.hpp | 24 +- optionals/compat_rh_m4/CfgAmmo.hpp | 30 +- optionals/compat_rh_pdw/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 18 +- optionals/compat_rhs_usf3/CfgAmmo.hpp | 14 +- 10 files changed, 350 insertions(+), 350 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index d54caf6f03..a8528cfec5 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -92,7 +92,7 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { }; _caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); -_bulletLength = 1000 * getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); +_bulletLength = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); _bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); _barrelTwist = 1000 * getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); _stabilityFactor = 1.5; diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index d693a1f44c..f4e954017a 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -26,7 +26,7 @@ class CfgAmmo { tracerStartTime = 0.073; //M856 tracer burns out to 800m tracerEndTime = 1.579; //Time in seconds calculated with ballistics calculator ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -43,7 +43,7 @@ class CfgAmmo { hit=11; typicalSpeed=836; ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -60,7 +60,7 @@ class CfgAmmo { hit=9; typicalSpeed=886; ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -77,7 +77,7 @@ class CfgAmmo { hit=6; typicalSpeed=886; ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=2.9808; 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.151}; @@ -98,7 +98,7 @@ class CfgAmmo { hit=7; typicalSpeed=880; ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -118,7 +118,7 @@ class CfgAmmo { tracerStartTime = 0.073; //7T3M tracer burns out to 850m tracerEndTime = 1.736; //Time in seconds calculated with ballistics calculator ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -132,7 +132,7 @@ class CfgAmmo { airFriction=-0.000785; typicalSpeed=800; ACE_caliber=6.706; - ACE_bulletLength=0.032893; + ACE_bulletLength=32.893; ACE_bulletMass=7.9704; 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.263}; @@ -155,7 +155,7 @@ class CfgAmmo { typicalSpeed=820 ; caliber=0.9; ACE_caliber=6.706; - ACE_bulletLength=0.034646; + ACE_bulletLength=34.646; ACE_bulletMass=9.0072; 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.290}; @@ -170,7 +170,7 @@ class CfgAmmo { typicalSpeed=860 ; caliber=1.1; ACE_caliber=6.706; - ACE_bulletLength=0.03622; + ACE_bulletLength=36.22; ACE_bulletMass=9.072; 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.317}; @@ -187,7 +187,7 @@ class CfgAmmo { tracerStartTime = 0.073; //Based on the British L5A1 which burns out to 1000m tracerEndTime = 2.058; //Time in seconds calculated with ballistics calculator ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -207,7 +207,7 @@ class CfgAmmo { hit=16; typicalSpeed=790; ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.243}; @@ -223,7 +223,7 @@ class CfgAmmo { hit=16; typicalSpeed=790; ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.243}; @@ -239,7 +239,7 @@ class CfgAmmo { hit=14; typicalSpeed=900; ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; @@ -255,7 +255,7 @@ class CfgAmmo { hit=11; typicalSpeed=930; ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=8.2296; 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.377}; @@ -271,7 +271,7 @@ class CfgAmmo { hit=6; typicalSpeed=320; ACE_caliber=7.823; - ACE_bulletLength=0.034036; + ACE_bulletLength=34.036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -287,7 +287,7 @@ class CfgAmmo { caliber=2.0; hit=10; ACE_caliber=7.823; - ACE_bulletLength=0.030734; + ACE_bulletLength=30.734; ACE_bulletMass=11.2752; 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.494}; @@ -303,7 +303,7 @@ class CfgAmmo { caliber=2.1; hit=8; ACE_caliber=7.214; - ACE_bulletLength=0.038837; + ACE_bulletLength=38.837; ACE_bulletMass=11.664; 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.345}; @@ -319,7 +319,7 @@ class CfgAmmo { caliber=2.3; hit=6; ACE_caliber=6.172; - ACE_bulletLength=0.032563; + ACE_bulletLength=32.563; ACE_bulletMass=11.664; 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.278}; @@ -335,7 +335,7 @@ class CfgAmmo { hit=17; typicalSpeed=900; ACE_caliber=7.823; - ACE_bulletLength=0.034366; + ACE_bulletLength=34.366; ACE_bulletMass=12.312; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.268}; @@ -351,7 +351,7 @@ class CfgAmmo { hit=18; typicalSpeed=867; ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.310}; @@ -367,7 +367,7 @@ class CfgAmmo { hit=19; typicalSpeed=853; ACE_caliber=7.823; - ACE_bulletLength=0.040691; + ACE_bulletLength=40.691; ACE_bulletMass=14.904; 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.368}; @@ -381,7 +381,7 @@ class CfgAmmo { airFriction=-0.001023; typicalSpeed=820; ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -397,7 +397,7 @@ class CfgAmmo { hit=15; typicalSpeed=820; ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -416,7 +416,7 @@ class CfgAmmo { tracerStartTime = 0.073; //Based on the 7T2 which burns three seconds tracerEndTime = 3; ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -432,7 +432,7 @@ class CfgAmmo { hit=11; typicalSpeed=790; ACE_caliber=7.823; - ACE_bulletLength=0.029286; + ACE_bulletLength=29.286; ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; @@ -448,7 +448,7 @@ class CfgAmmo { caliber=1.5; typicalSpeed=716; ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -466,7 +466,7 @@ class CfgAmmo { tracerStartTime = 0.073; //57N231P tracer burns out to 800m tracerEndTime = 2.082; //Time in seconds calculated with ballistics calculator ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -481,7 +481,7 @@ class CfgAmmo { typicalSpeed=390; hit=6; ACE_caliber=9.042; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -496,7 +496,7 @@ class CfgAmmo { airFriction=-0.001234; typicalSpeed=298; ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -511,7 +511,7 @@ class CfgAmmo { typicalSpeed=370; hit=6; ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -526,7 +526,7 @@ class CfgAmmo { typicalSpeed=425; hit=7; ACE_caliber=12.7; - ACE_bulletLength=0.019406; + ACE_bulletLength=19.406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -541,7 +541,7 @@ class CfgAmmo { typicalSpeed=282; hit=7; ACE_caliber=7.938; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -556,7 +556,7 @@ class CfgAmmo { typicalSpeed=761; caliber=2.0; ACE_caliber=7.899; - ACE_bulletLength=0.031166; + ACE_bulletLength=31.166; ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; @@ -570,7 +570,7 @@ class CfgAmmo { airFriction=-0.00106; typicalSpeed=880; ACE_caliber=9.296; - ACE_bulletLength=0.03429; + ACE_bulletLength=34.29; ACE_bulletMass=14.904; 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.368}; @@ -585,7 +585,7 @@ class CfgAmmo { airFriction=-0.000395; typicalSpeed=910; ACE_caliber=10.363; - ACE_bulletLength=0.054; + ACE_bulletLength=54.0; ACE_bulletMass=26.568; ACE_transonicStabilityCoef=1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -599,7 +599,7 @@ class CfgAmmo { class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; ACE_caliber=10.566; - ACE_bulletLength=0.053061; + ACE_bulletLength=53.061; ACE_bulletMass=25.7904; 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.72}; @@ -614,7 +614,7 @@ class CfgAmmo { airFriction=-0.000606; typicalSpeed=915; ACE_caliber=8.585; - ACE_bulletLength=0.039573; + ACE_bulletLength=39.573; ACE_bulletMass=16.2; 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.322}; @@ -628,7 +628,7 @@ class CfgAmmo { airFriction=-0.000537; typicalSpeed=820; ACE_caliber=8.585; - ACE_bulletLength=0.04318; + ACE_bulletLength=43.18; ACE_bulletMass=19.44; 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.381}; @@ -643,7 +643,7 @@ class CfgAmmo { airFriction=-0.000535; typicalSpeed=826; ACE_caliber=8.585; - ACE_bulletLength=0.04318; + ACE_bulletLength=43.18; ACE_bulletMass=19.44; 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.381}; @@ -659,7 +659,7 @@ class CfgAmmo { caliber=2.8; typicalSpeed=826; ACE_caliber=8.585; - ACE_bulletLength=0.038989; + ACE_bulletLength=38.989; ACE_bulletMass=16.3944; 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.290}; @@ -673,7 +673,7 @@ class CfgAmmo { airFriction=-0.00014; typicalSpeed=300; ACE_caliber=12.954; - ACE_bulletLength=0.064516; + ACE_bulletLength=64.516; ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={1.050}; @@ -688,7 +688,7 @@ class CfgAmmo { airFriction=-0.0006; typicalSpeed=900; ACE_caliber=12.954; - ACE_bulletLength=0.058674; + ACE_bulletLength=58.674; ACE_bulletMass=41.9256; 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.670}; @@ -705,7 +705,7 @@ class CfgAmmo { hit=25; caliber=4.0; ACE_caliber=12.954; - ACE_bulletLength=0.058674; + ACE_bulletLength=58.674; ACE_bulletMass=41.9904; 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.670}; @@ -721,7 +721,7 @@ class CfgAmmo { typicalSpeed=860; caliber=3.0; ACE_caliber=12.954; - ACE_bulletLength=0.064516; + ACE_bulletLength=64.516; ACE_bulletMass=48.6; 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[]={1.050}; @@ -736,7 +736,7 @@ class CfgAmmo { airFriction=-0.00064; typicalSpeed=820; ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -750,7 +750,7 @@ class CfgAmmo { airFriction=-0.0007182; typicalSpeed=250; ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp index ab90e6bbd0..3072d1d196 100644 --- a/extras/CfgAmmoReference.hpp +++ b/extras/CfgAmmoReference.hpp @@ -6,7 +6,7 @@ class CfgAmmo hit=8; typicalSpeed=750; ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -23,7 +23,7 @@ class CfgAmmo hit=11; typicalSpeed=836; ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -40,7 +40,7 @@ class CfgAmmo hit=9; typicalSpeed=886; ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -61,7 +61,7 @@ class CfgAmmo hit=7; typicalSpeed=880; ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -79,7 +79,7 @@ class CfgAmmo hit=7; typicalSpeed=883; ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -93,7 +93,7 @@ class CfgAmmo airFriction=-0.000785; typicalSpeed=800; ACE_caliber=6.706; - ACE_bulletLength=0.032893; + ACE_bulletLength=32.893; ACE_bulletMass=7.9704; 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.263}; @@ -116,7 +116,7 @@ class CfgAmmo airFriction=-0.00078; typicalSpeed=820 ; ACE_caliber=6.706; - ACE_bulletLength=0.034646; + ACE_bulletLength=34.646; ACE_bulletMass=9.0072; 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.290}; @@ -131,7 +131,7 @@ class CfgAmmo typicalSpeed=833; hit=9; ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -151,7 +151,7 @@ class CfgAmmo hit=16; typicalSpeed=790; ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.243}; @@ -167,7 +167,7 @@ class CfgAmmo hit=14; typicalSpeed=890; ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; @@ -183,7 +183,7 @@ class CfgAmmo hit=6; typicalSpeed=790; ACE_caliber=7.823; - ACE_bulletLength=0.034036; + ACE_bulletLength=34.036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -199,7 +199,7 @@ class CfgAmmo hit=17; typicalSpeed=900; ACE_caliber=7.823; - ACE_bulletLength=0.034366; + ACE_bulletLength=34.366; ACE_bulletMass=12.312; 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.268}; @@ -215,7 +215,7 @@ class CfgAmmo hit=18; typicalSpeed=867; ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.310}; @@ -231,7 +231,7 @@ class CfgAmmo hit=19; typicalSpeed=853; ACE_caliber=7.823; - ACE_bulletLength=0.040691; + ACE_bulletLength=40.691; ACE_bulletMass=14.904; 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.368}; @@ -245,7 +245,7 @@ class CfgAmmo airFriction=-0.001023; typicalSpeed=820; ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -261,7 +261,7 @@ class CfgAmmo hit=15; typicalSpeed=820; ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -278,7 +278,7 @@ class CfgAmmo hit=15; typicalSpeed=800; ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -294,7 +294,7 @@ class CfgAmmo hit=11; typicalSpeed=790; ACE_caliber=7.823; - ACE_bulletLength=0.029286; + ACE_bulletLength=29.286; ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; @@ -309,7 +309,7 @@ class CfgAmmo hit=12; typicalSpeed=716; ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -324,7 +324,7 @@ class CfgAmmo hit=12; typicalSpeed=716; ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -339,7 +339,7 @@ class CfgAmmo typicalSpeed=390; hit=6; ACE_caliber=9.042; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=7.452; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -354,7 +354,7 @@ class CfgAmmo airFriction=-0.001234; typicalSpeed=298; ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -369,7 +369,7 @@ class CfgAmmo typicalSpeed=370; hit=6; ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -384,7 +384,7 @@ class CfgAmmo typicalSpeed=425; hit=7; ACE_caliber=12.7; - ACE_bulletLength=0.019406; + ACE_bulletLength=19.406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -399,7 +399,7 @@ class CfgAmmo typicalSpeed=282; hit=7; ACE_caliber=7.938; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -413,7 +413,7 @@ class CfgAmmo airFriction=-0.00083; typicalSpeed=761; ACE_caliber=7.899; - ACE_bulletLength=0.031166; + ACE_bulletLength=31.166; ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; @@ -427,7 +427,7 @@ class CfgAmmo airFriction=-0.00106; typicalSpeed=880; ACE_caliber=9.296; - ACE_bulletLength=0.03429; + ACE_bulletLength=34.29; ACE_bulletMass=14.904; ACE_transonicStabilityCoef=1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -443,7 +443,7 @@ class CfgAmmo airFriction=-0.000395; typicalSpeed=910; ACE_caliber=10.363; - ACE_bulletLength=0.054; + ACE_bulletLength=54.0; ACE_bulletMass=26.568; ACE_transonicStabilityCoef=1; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; @@ -457,7 +457,7 @@ class CfgAmmo class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; ACE_caliber=10.566; - ACE_bulletLength=0.053061; + ACE_bulletLength=53.061; ACE_bulletMass=25.7904; 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.72}; @@ -472,7 +472,7 @@ class CfgAmmo airFriction=-0.000606; typicalSpeed=915; ACE_caliber=8.585; - ACE_bulletLength=0.039573; + ACE_bulletLength=39.573; ACE_bulletMass=16.2; 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.322}; @@ -486,7 +486,7 @@ class CfgAmmo airFriction=-0.000537; typicalSpeed=820; ACE_caliber=8.585; - ACE_bulletLength=0.04318; + ACE_bulletLength=43.18; ACE_bulletMass=19.44; 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.381}; @@ -502,7 +502,7 @@ class CfgAmmo caliber=1.55; typicalSpeed=826; ACE_caliber=8.585; - ACE_bulletLength=0.04318; + ACE_bulletLength=43.18; ACE_bulletMass=19.44; 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.381}; @@ -518,7 +518,7 @@ class CfgAmmo caliber=2.4; typicalSpeed=826; ACE_caliber=8.585; - ACE_bulletLength=0.038989; + ACE_bulletLength=38.989; ACE_bulletMass=16.3944; 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.290}; @@ -532,7 +532,7 @@ class CfgAmmo airFriction=-0.00014; typicalSpeed=300; ACE_caliber=12.954; - ACE_bulletLength=0.064516; + ACE_bulletLength=64.516; ACE_bulletMass=48.6; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={1.050}; @@ -547,7 +547,7 @@ class CfgAmmo airFriction=-0.0006; typicalSpeed=853; ACE_caliber=12.954; - ACE_bulletLength=0.058674; + ACE_bulletLength=58.674; ACE_bulletMass=41.9256; 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.670}; @@ -562,7 +562,7 @@ class CfgAmmo airFriction=-0.000374; typicalSpeed=860; ACE_caliber=12.954; - ACE_bulletLength=0.064516; + ACE_bulletLength=64.516; ACE_bulletMass=48.6; 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[]={1.050}; @@ -577,7 +577,7 @@ class CfgAmmo airFriction=-0.00064; typicalSpeed=820; ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -591,7 +591,7 @@ class CfgAmmo airFriction=-0.0007182; typicalSpeed=250; ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -605,7 +605,7 @@ class CfgAmmo class TMR_B_762x51_M118LR : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -619,7 +619,7 @@ class CfgAmmo class RH_50_AE_Ball: BulletBase { ACE_caliber=12.7; - ACE_bulletLength=0.028194; + ACE_bulletLength=28.194; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.228}; @@ -632,7 +632,7 @@ class CfgAmmo class RH_454_Casull: BulletBase { ACE_caliber=11.481; - ACE_bulletLength=0.022733; + ACE_bulletLength=22.733; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.171}; @@ -645,7 +645,7 @@ class CfgAmmo class RH_32ACP: BulletBase { ACE_caliber=7.938; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -658,7 +658,7 @@ class CfgAmmo class RH_45ACP: BulletBase { ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -671,7 +671,7 @@ class CfgAmmo class RH_B_40SW: BulletBase { ACE_caliber=10.16; - ACE_bulletLength=0.011354; + ACE_bulletLength=11.354; ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.105, 0.115, 0.120, 0.105}; @@ -684,7 +684,7 @@ class CfgAmmo class RH_44mag_ball: BulletBase { ACE_caliber=10.897; - ACE_bulletLength=0.020422; + ACE_bulletLength=20.422; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; @@ -697,7 +697,7 @@ class CfgAmmo class RH_357mag_ball: BulletBase { ACE_caliber=9.068; - ACE_bulletLength=0.013741; + ACE_bulletLength=13.741; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.148}; @@ -710,7 +710,7 @@ class CfgAmmo class RH_762x25: BulletBase { ACE_caliber=7.874; - ACE_bulletLength=0.013856; + ACE_bulletLength=13.856; ACE_bulletMass=5.5728; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -723,7 +723,7 @@ class CfgAmmo class RH_9x18_Ball: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -736,7 +736,7 @@ class CfgAmmo class RH_B_9x19_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -749,7 +749,7 @@ class CfgAmmo class RH_B_22LR_SD: BulletBase { ACE_caliber=5.664; - ACE_bulletLength=0.01143; + ACE_bulletLength=11.43; ACE_bulletMass=2.4624; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.111}; @@ -762,7 +762,7 @@ class CfgAmmo class RH_57x28mm: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.012573; + ACE_bulletLength=12.573; ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; @@ -776,7 +776,7 @@ class CfgAmmo class RH_9x19_B_M822: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -789,7 +789,7 @@ class CfgAmmo class RH_9x19_B_HP: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -802,7 +802,7 @@ class CfgAmmo class RH_9x19_B_HPSB: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015316; + ACE_bulletLength=15.316; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.212}; @@ -815,7 +815,7 @@ class CfgAmmo class RH_B_6x35: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.011303; + ACE_bulletLength=11.303; ACE_bulletMass=4.212; 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.26}; @@ -828,7 +828,7 @@ class CfgAmmo class RH_556x45_B_M855A1 : B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.152}; @@ -841,7 +841,7 @@ class CfgAmmo class RH_556x45_B_Mk262 : B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -854,7 +854,7 @@ class CfgAmmo class RH_556x45_B_Mk318 : B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -867,7 +867,7 @@ class CfgAmmo class RH_68x43_B_FMJ: B_65x39_Caseless { ACE_caliber=7.036; - ACE_bulletLength=0.024359; + ACE_bulletLength=24.359; ACE_bulletMass=7.452; 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.162}; @@ -880,7 +880,7 @@ class CfgAmmo class RH_68x43_B_Match: B_65x39_Caseless { ACE_caliber=7.036; - ACE_bulletLength=0.03175; + ACE_bulletLength=31.75; ACE_bulletMass=8.748; 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.253}; @@ -893,7 +893,7 @@ class CfgAmmo class RH_762x35_B_FMJ: B_65x39_Caseless { ACE_caliber=7.823; - ACE_bulletLength=0.028397; + ACE_bulletLength=28.397; ACE_bulletMass=9.5256; 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.398}; @@ -906,7 +906,7 @@ class CfgAmmo class RH_762x35_B_Match: B_65x39_Caseless { ACE_caliber=7.823; - ACE_bulletLength=0.029286; + ACE_bulletLength=29.286; ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; @@ -919,7 +919,7 @@ class CfgAmmo class RH_762x35_B_MSB: B_65x39_Caseless { ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.608}; @@ -932,7 +932,7 @@ class CfgAmmo class RH_762x51_B_M80A1 : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -945,7 +945,7 @@ class CfgAmmo class RH_762x51_B_Mk316LR : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.243}; @@ -958,7 +958,7 @@ class CfgAmmo class RH_762x51_B_Mk319 : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.02728; + ACE_bulletLength=27.28; ACE_bulletMass=8.424; 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.277}; @@ -971,7 +971,7 @@ class CfgAmmo class RH_762x51_B_LFMJSB: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.034036; + ACE_bulletLength=34.036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.252}; @@ -985,7 +985,7 @@ class CfgAmmo class HLC_556NATO_SOST: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -998,7 +998,7 @@ class CfgAmmo class HLC_556NATO_SPR: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -1011,7 +1011,7 @@ class CfgAmmo class HLC_556NATO_EPR: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.152}; @@ -1024,7 +1024,7 @@ class CfgAmmo class HLC_300Blackout_Ball: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028397; + ACE_bulletLength=28.397; ACE_bulletMass=9.5256; 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.398}; @@ -1037,7 +1037,7 @@ class CfgAmmo class HLC_300Blackout_SMK: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.608}; @@ -1050,7 +1050,7 @@ class CfgAmmo class HLC_762x51_BTSub: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.034036; + ACE_bulletLength=34.036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -1063,7 +1063,7 @@ class CfgAmmo class HLC_762x54_ball: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -1076,7 +1076,7 @@ class CfgAmmo class HLC_762x54_tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -1089,7 +1089,7 @@ class CfgAmmo class HLC_303Brit_B: BulletBase { ACE_caliber=7.899; - ACE_bulletLength=0.031166; + ACE_bulletLength=31.166; ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; @@ -1102,7 +1102,7 @@ class CfgAmmo class HLC_792x57_Ball: BulletBase { ACE_caliber=8.077; - ACE_bulletLength=0.028651; + ACE_bulletLength=28.651; ACE_bulletMass=12.7008; 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.315}; @@ -1115,7 +1115,7 @@ class CfgAmmo class FH_545x39_Ball: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -1135,7 +1135,7 @@ class CfgAmmo class HLC_9x19_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1156,7 +1156,7 @@ class CfgAmmo class HLC_10mm_FMJ: HLC_9x19_Ball { ACE_caliber=12.7; - ACE_bulletLength=0.019406; + ACE_bulletLength=19.406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -1169,7 +1169,7 @@ class CfgAmmo class HLC_9x19_M882_SMG: HLC_9x19_Ball { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1183,7 +1183,7 @@ class CfgAmmo class M_mas_545x39_Ball_7N6M : BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -1196,7 +1196,7 @@ class CfgAmmo class M_mas_545x39_Ball_7T3M : BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -1209,7 +1209,7 @@ class CfgAmmo class B_mas_556x45_Ball_Mk262 : B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -1222,7 +1222,7 @@ class CfgAmmo class B_mas_9x18_Ball_57N181S : BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1235,7 +1235,7 @@ class CfgAmmo class B_mas_9x21p_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1248,7 +1248,7 @@ class CfgAmmo class B_mas_9x21_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1261,7 +1261,7 @@ class CfgAmmo class B_mas_9x21d_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1274,7 +1274,7 @@ class CfgAmmo class B_mas_765x17_Ball: BulletBase { ACE_caliber=7.938; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -1287,7 +1287,7 @@ class CfgAmmo class B_mas_762x39_Ball: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -1300,7 +1300,7 @@ class CfgAmmo class B_mas_762x39_Ball_T: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -1313,7 +1313,7 @@ class CfgAmmo class B_mas_762x51_Ball_M118LR : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -1326,7 +1326,7 @@ class CfgAmmo class B_mas_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.034366; + ACE_bulletLength=34.366; ACE_bulletMass=12.312; 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.268}; @@ -1339,7 +1339,7 @@ class CfgAmmo class B_mas_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.310}; @@ -1352,7 +1352,7 @@ class CfgAmmo class B_mas_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.040691; + ACE_bulletLength=40.691; ACE_bulletMass=14.904; 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.368}; @@ -1365,7 +1365,7 @@ class CfgAmmo class B_mas_762x54_Ball : BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -1378,7 +1378,7 @@ class CfgAmmo class B_mas_762x54_Ball_T : BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -1391,7 +1391,7 @@ class CfgAmmo class BWA3_B_762x51_Ball_LR : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -1404,7 +1404,7 @@ class CfgAmmo class BWA3_B_762x51_Ball_SD : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.2}; @@ -1418,7 +1418,7 @@ class CfgAmmo class BWA3_B_46x30_Ball : BulletBase { ACE_caliber=4.902; - ACE_bulletLength=0.013005; + ACE_bulletLength=13.005; ACE_bulletMass=2.0088; 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.1455}; @@ -1432,7 +1432,7 @@ class CfgAmmo class Trixie_338_Ball : BulletBase { ACE_caliber=8.585; - ACE_bulletLength=0.04318; + ACE_bulletLength=43.18; ACE_bulletMass=19.44; 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.381}; @@ -1445,7 +1445,7 @@ class CfgAmmo class Trixie_303_Ball : BulletBase { ACE_caliber=7.899; - ACE_bulletLength=0.031166; + ACE_bulletLength=31.166; ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; @@ -1459,7 +1459,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk318_Ball : BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -1472,7 +1472,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk262_Ball : BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -1485,7 +1485,7 @@ class CfgAmmo class rhsammo_762x51_Ball : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -1498,7 +1498,7 @@ class CfgAmmo class rhs_B_545x39_Ball : BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -1511,7 +1511,7 @@ class CfgAmmo class rhs_B_545x39_Ball_Tracer_Green : BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -1524,7 +1524,7 @@ class CfgAmmo class rhs_ammo_762x51_M118_Special_Ball : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.243}; @@ -1537,7 +1537,7 @@ class CfgAmmo class rhs_B_762x54_Ball : BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -1550,7 +1550,7 @@ class CfgAmmo class rhs_B_762x54_Ball_Tracer_Green : BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -1563,7 +1563,7 @@ class CfgAmmo class rhs_B_762x39_Ball : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -1576,7 +1576,7 @@ class CfgAmmo class rhs_B_762x39_Tracer : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -1589,7 +1589,7 @@ class CfgAmmo class rhs_ammo_762x51_M80_Ball : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -1602,7 +1602,7 @@ class CfgAmmo class rhsusf_B_300winmag : BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.310}; @@ -1616,7 +1616,7 @@ class CfgAmmo class R3F_9x19_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1629,7 +1629,7 @@ class CfgAmmo class R3F_556x45_Ball: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -1642,7 +1642,7 @@ class CfgAmmo class R3F_762x51_Ball: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -1655,7 +1655,7 @@ class CfgAmmo class R3F_762x51_Ball2: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.505, 0.496, 0.485, 0.485, 0.485}; @@ -1668,7 +1668,7 @@ class CfgAmmo class R3F_127x99_Ball: BulletBase { ACE_caliber=12.954; - ACE_bulletLength=0.058674; + ACE_bulletLength=58.674; ACE_bulletMass=41.9256; 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.670}; @@ -1681,7 +1681,7 @@ class CfgAmmo class R3F_127x99_Ball2: BulletBase { ACE_caliber=12.954; - ACE_bulletLength=0.058674; + ACE_bulletLength=58.674; ACE_bulletMass=41.9256; 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.670}; @@ -1695,7 +1695,7 @@ class CfgAmmo class CUP_B_545x39_Ball: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -1708,7 +1708,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Green: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -1721,7 +1721,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -1734,7 +1734,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -1747,7 +1747,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -1760,7 +1760,7 @@ class CfgAmmo class CUP_B_762x39_Ball: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -1773,7 +1773,7 @@ class CfgAmmo class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -1786,7 +1786,7 @@ class CfgAmmo class B_762x39mm_KLT: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -1799,7 +1799,7 @@ class CfgAmmo class CUP_B_9x18_Ball: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1812,7 +1812,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Green: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1825,7 +1825,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Red: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1838,7 +1838,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1851,7 +1851,7 @@ class CfgAmmo class CUP_B_9x18_Ball_White_Tracer: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -1864,7 +1864,7 @@ class CfgAmmo class CUP_B_9x19_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -1877,7 +1877,7 @@ class CfgAmmo class CUP_B_762x51_noTracer: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -1890,7 +1890,7 @@ class CfgAmmo class CUP_B_762x51_Red_Tracer_3RndBurst: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -1903,7 +1903,7 @@ class CfgAmmo class CUP_B_762x51_White_Tracer_3RndBurst: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -1916,7 +1916,7 @@ class CfgAmmo class CUP_B_303_Ball: BulletBase { ACE_caliber=7.899; - ACE_bulletLength=0.031166; + ACE_bulletLength=31.166; ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; @@ -1929,7 +1929,7 @@ class CfgAmmo class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -1942,7 +1942,7 @@ class CfgAmmo class CUP_B_127x108_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -1955,7 +1955,7 @@ class CfgAmmo class CUP_B_762x54_Ball_White_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -1968,7 +1968,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Red_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -1981,7 +1981,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Green_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -1994,7 +1994,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -2007,7 +2007,7 @@ class CfgAmmo class CUP_B_9x39_SP5: BulletBase { ACE_caliber=9.246; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2020,7 +2020,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2033,7 +2033,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Red: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2046,7 +2046,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Yellow: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2059,7 +2059,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_White: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2072,7 +2072,7 @@ class CfgAmmo class B_127x107_Ball: BulletBase { ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -2085,7 +2085,7 @@ class CfgAmmo class CUP_B_9x18_SD: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2098,7 +2098,7 @@ class CfgAmmo class CUP_B_765x17_Ball: BulletBase { ACE_caliber=7.938; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -2111,7 +2111,7 @@ class CfgAmmo class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=14.884; - ACE_bulletLength=0.0508; + ACE_bulletLength=50.8; ACE_bulletMass=65.448; 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.620}; @@ -2124,7 +2124,7 @@ class CfgAmmo class CUP_B_127x99_Ball_White_Tracer: BulletBase { ACE_caliber=12.954; - ACE_bulletLength=0.058674; + ACE_bulletLength=58.674; ACE_bulletMass=41.9256; 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.670}; @@ -2137,7 +2137,7 @@ class CfgAmmo class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=8.585; - ACE_bulletLength=0.04318; + ACE_bulletLength=43.18; ACE_bulletMass=19.44; 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.381}; @@ -2151,7 +2151,7 @@ class CfgAmmo class VTN_9x18_Ball_FMJ: B_9x21_Ball { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2164,7 +2164,7 @@ class CfgAmmo class VTN_9x18_Ball_SC: VTN_9x18_Ball_FMJ { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2177,7 +2177,7 @@ class CfgAmmo class VTN_9x18_Ball_TRC: VTN_9x18_Ball_FMJ { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2190,7 +2190,7 @@ class CfgAmmo class VTN_9x18_Ball_AP1: VTN_9x18_Ball_FMJ { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2203,7 +2203,7 @@ class CfgAmmo class VTN_9x18_Ball_AP2: VTN_9x18_Ball_FMJ { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2216,7 +2216,7 @@ class CfgAmmo class VTN_9x18_Ball_PRS: VTN_9x18_Ball_FMJ { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -2229,7 +2229,7 @@ class CfgAmmo class VTN_9x19_Ball_SC: VTN_9x18_Ball_FMJ { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2242,7 +2242,7 @@ class CfgAmmo class VTN_9x19_Ball_TRC: VTN_9x19_Ball_SC { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2255,7 +2255,7 @@ class CfgAmmo class VTN_9x19_Ball_AP: VTN_9x19_Ball_SC { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2268,7 +2268,7 @@ class CfgAmmo class VTN_9x19_Ball_PRS: VTN_9x19_Ball_SC { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2281,7 +2281,7 @@ class CfgAmmo class VTN_9x39_Ball_SC: B_9x21_Ball { ACE_caliber=9.246; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2294,7 +2294,7 @@ class CfgAmmo class VTN_9x39_Ball_AP: VTN_9x39_Ball_SC { ACE_caliber=9.246; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2307,7 +2307,7 @@ class CfgAmmo class VTN_545x39_Ball_SC: B_556x45_Ball { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -2320,7 +2320,7 @@ class CfgAmmo class VTN_545x39_Ball_TRC: VTN_545x39_Ball_SC { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -2333,7 +2333,7 @@ class CfgAmmo class VTN_545x39_Ball_AP: VTN_545x39_Ball_TRC { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -2346,7 +2346,7 @@ class CfgAmmo class VTN_545x39_Ball_AP2: VTN_545x39_Ball_AP { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -2359,7 +2359,7 @@ class CfgAmmo class VTN_545x39_Ball_SS: VTN_545x39_Ball_SC { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.168}; @@ -2372,7 +2372,7 @@ class CfgAmmo class VTN_762x39_Ball_SC: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -2385,7 +2385,7 @@ class CfgAmmo class VTN_762x39_Ball_TRC: VTN_762x39_Ball_SC { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -2398,7 +2398,7 @@ class CfgAmmo class VTN_762x39_Ball_AP: VTN_762x39_Ball_TRC { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -2411,7 +2411,7 @@ class CfgAmmo class VTN_762x39_Ball_INC: VTN_762x39_Ball_AP { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -2424,7 +2424,7 @@ class CfgAmmo class VTN_762x39_Ball_API: VTN_762x39_Ball_INC { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -2437,7 +2437,7 @@ class CfgAmmo class VTN_762x39_Ball_SS: VTN_762x39_Ball_SC { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2450,7 +2450,7 @@ class CfgAmmo class VTN_762x41_Ball_SS: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.013462; + ACE_bulletLength=13.462; ACE_bulletMass=9.2664; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -2463,7 +2463,7 @@ class CfgAmmo class VTN_762x54_Ball_SC: VTN_762x39_Ball_SC { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -2476,7 +2476,7 @@ class CfgAmmo class VTN_762x54_Ball_TRC: VTN_762x54_Ball_SC { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -2489,7 +2489,7 @@ class CfgAmmo class VTN_762x54_Ball_AP: VTN_762x54_Ball_TRC { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -2502,7 +2502,7 @@ class CfgAmmo class VTN_762x54_Ball_INC: VTN_762x54_Ball_AP { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -2515,7 +2515,7 @@ class CfgAmmo class VTN_762x54_Ball_API: VTN_762x54_Ball_INC { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -2528,7 +2528,7 @@ class CfgAmmo class VTN_145x114_Ball_APT: B_127x108_Ball { ACE_caliber=14.884; - ACE_bulletLength=0.0508; + ACE_bulletLength=50.8; ACE_bulletMass=65.448; 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.620}; @@ -2541,7 +2541,7 @@ class CfgAmmo class VTN_6mm_BB: B_65x39_Caseless { ACE_caliber=6.096; - ACE_bulletLength=0.006096; + ACE_bulletLength=6.096; ACE_bulletMass=0.3888; ACE_ammoTempMuzzleVelocityShifts[]={}; ACE_ballisticCoefficients[]={}; @@ -2554,7 +2554,7 @@ class CfgAmmo class VTN_9x19_Ball_FMJ: B_9x21_Ball { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -2567,7 +2567,7 @@ class CfgAmmo class VTN_556x45_Ball_FMJ: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2580,7 +2580,7 @@ class CfgAmmo class VTN_556x45_Ball_TRC: VTN_556x45_Ball_FMJ { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2593,7 +2593,7 @@ class CfgAmmo class VTN_556x45_Ball_TRCN: VTN_556x45_Ball_TRC { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2606,7 +2606,7 @@ class CfgAmmo class VTN_556x45_Ball_SC: VTN_556x45_Ball_FMJ { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2619,7 +2619,7 @@ class CfgAmmo class VTN_556x45_Ball_AP: VTN_556x45_Ball_TRC { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2632,7 +2632,7 @@ class CfgAmmo class VTN_556x45_Ball_INC: VTN_556x45_Ball_AP { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -2645,7 +2645,7 @@ class CfgAmmo class VTN_556x45_Ball_LR: VTN_556x45_Ball_FMJ { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -2658,7 +2658,7 @@ class CfgAmmo class VTN_556x45_Ball_SS: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.151}; @@ -2671,7 +2671,7 @@ class CfgAmmo class VTN_762x51_Ball_SC: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2684,7 +2684,7 @@ class CfgAmmo class VTN_762x51_Ball_TRC: VTN_762x51_Ball_SC { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2697,7 +2697,7 @@ class CfgAmmo class VTN_762x51_Ball_TRCN: VTN_762x51_Ball_TRC { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2710,7 +2710,7 @@ class CfgAmmo class VTN_762x51_Ball_AP: VTN_762x51_Ball_TRC { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -2723,7 +2723,7 @@ class CfgAmmo class VTN_762x51_Ball_LR: VTN_762x51_Ball_SC { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.243}; @@ -2736,7 +2736,7 @@ class CfgAmmo class VTN_1143x23_Ball_FMJ: B_408_Ball { ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -2749,7 +2749,7 @@ class CfgAmmo class VTN_1143x23_Ball_HP: VTN_1143x23_Ball_FMJ { ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -2762,7 +2762,7 @@ class CfgAmmo class VTN_1143x23_Ball_JHP: VTN_1143x23_Ball_FMJ { ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -2775,7 +2775,7 @@ class CfgAmmo class VTN_762x39_Ball_FMJ: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -2788,7 +2788,7 @@ class CfgAmmo class VTN_45_Pellet: B_762x51_Ball { ACE_caliber=5.588; - ACE_bulletLength=0.005842; + ACE_bulletLength=5.842; ACE_bulletMass=0.1944; ACE_ammoTempMuzzleVelocityShifts[]={}; ACE_ballisticCoefficients[]={}; diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index b8c8faa30b..e58561ec1f 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -6,7 +6,7 @@ class CfgAmmo class CUP_B_545x39_Ball: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -19,7 +19,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -32,7 +32,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -45,7 +45,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -58,7 +58,7 @@ class CfgAmmo class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -71,7 +71,7 @@ class CfgAmmo class CUP_B_762x39_Ball: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -84,7 +84,7 @@ class CfgAmmo class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -97,7 +97,7 @@ class CfgAmmo class CUP_B_9x18_Ball: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -110,7 +110,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Green: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -123,7 +123,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Red: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -136,7 +136,7 @@ class CfgAmmo class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -149,7 +149,7 @@ class CfgAmmo class CUP_B_9x18_Ball_White_Tracer: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -162,7 +162,7 @@ class CfgAmmo class CUP_B_9x19_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -175,7 +175,7 @@ class CfgAmmo class CUP_B_762x51_noTracer: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -188,7 +188,7 @@ class CfgAmmo class CUP_B_303_Ball: BulletBase { ACE_caliber=7.899; - ACE_bulletLength=0.031166; + ACE_bulletLength=31.166; ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; @@ -201,7 +201,7 @@ class CfgAmmo class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -214,7 +214,7 @@ class CfgAmmo class CUP_B_127x108_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -227,7 +227,7 @@ class CfgAmmo class CUP_B_762x54_Ball_White_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -240,7 +240,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Red_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -253,7 +253,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Green_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -266,7 +266,7 @@ class CfgAmmo class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -279,7 +279,7 @@ class CfgAmmo class CUP_B_9x39_SP5: BulletBase { ACE_caliber=9.246; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=16.2; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.275}; @@ -292,7 +292,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -305,7 +305,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Red: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -318,7 +318,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_Yellow: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -331,7 +331,7 @@ class CfgAmmo class CUP_B_762x51_Tracer_White: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -344,7 +344,7 @@ class CfgAmmo class B_127x107_Ball: BulletBase { ACE_caliber=12.979; - ACE_bulletLength=0.064008; + ACE_bulletLength=64.008; ACE_bulletMass=48.276; 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.63}; @@ -357,7 +357,7 @@ class CfgAmmo class CUP_B_9x18_SD: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -370,7 +370,7 @@ class CfgAmmo class CUP_B_765x17_Ball: BulletBase { ACE_caliber=7.938; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -383,7 +383,7 @@ class CfgAmmo class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=14.884; - ACE_bulletLength=0.0508; + ACE_bulletLength=50.8; ACE_bulletMass=65.448; 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.620}; @@ -396,7 +396,7 @@ class CfgAmmo class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { ACE_caliber=12.954; - ACE_bulletLength=0.058674; + ACE_bulletLength=58.674; ACE_bulletMass=41.9256; 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.670}; @@ -409,7 +409,7 @@ class CfgAmmo class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=8.585; - ACE_bulletLength=0.04318; + ACE_bulletLength=43.18; ACE_bulletMass=19.44; 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.381}; diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp index d2127d5d82..c9446ff29e 100644 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ b/optionals/compat_hlcmods_core/CfgAmmo.hpp @@ -9,7 +9,7 @@ class CfgAmmo class HLC_556NATO_EPR: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -22,7 +22,7 @@ class CfgAmmo class HLC_556NATO_SOST: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -35,7 +35,7 @@ class CfgAmmo class HLC_556NATO_SPR: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -48,7 +48,7 @@ class CfgAmmo class HLC_300Blackout_Ball: B_556x45_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028397; + ACE_bulletLength=28.397; ACE_bulletMass=9.5256; 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.398}; @@ -61,7 +61,7 @@ class CfgAmmo class HLC_300Blackout_SMK: HLC_300Blackout_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.608}; @@ -74,7 +74,7 @@ class CfgAmmo class HLC_762x39_Ball: HLC_300Blackout_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -87,7 +87,7 @@ class CfgAmmo class HLC_762x39_Tracer: HLC_762x39_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -100,7 +100,7 @@ class CfgAmmo class HLC_762x51_MK316_20in: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.243}; @@ -113,7 +113,7 @@ class CfgAmmo class HLC_762x51_BTSub: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.034036; + ACE_bulletLength=34.036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; @@ -126,7 +126,7 @@ class CfgAmmo class HLC_762x54_ball: HLC_762x51_ball { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -139,7 +139,7 @@ class CfgAmmo class HLC_762x54_tracer: HLC_762x51_tracer { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -152,7 +152,7 @@ class CfgAmmo class HLC_303Brit_B: B_556x45_Ball { ACE_caliber=7.899; - ACE_bulletLength=0.031166; + ACE_bulletLength=31.166; ACE_bulletMass=11.2752; 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.499, 0.493, 0.48}; @@ -165,7 +165,7 @@ class CfgAmmo class HLC_792x57_Ball: HLC_303Brit_B { ACE_caliber=8.077; - ACE_bulletLength=0.028651; + ACE_bulletLength=28.651; ACE_bulletMass=12.7008; 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.315}; @@ -184,7 +184,7 @@ class CfgAmmo class FH_545x39_Ball: B_556x45_Ball { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -204,7 +204,7 @@ class CfgAmmo class HLC_57x28mm_JHP: FH_545x39_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.012573; + ACE_bulletLength=12.573; ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; @@ -217,7 +217,7 @@ class CfgAmmo class HLC_9x19_Ball: B_556x45_Ball { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -230,7 +230,7 @@ class CfgAmmo class HLC_9x19_M882_SMG: B_556x45_Ball { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -251,7 +251,7 @@ class CfgAmmo class HLC_10mm_FMJ: HLC_9x19_Ball { ACE_caliber=12.7; - ACE_bulletLength=0.019406; + ACE_bulletLength=19.406; ACE_bulletMass=10.692; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; @@ -264,7 +264,7 @@ class CfgAmmo class HLC_45ACP_Ball: B_556x45_Ball { ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -277,7 +277,7 @@ class CfgAmmo class FH_44Mag: HLC_45ACP_Ball { ACE_caliber=10.897; - ACE_bulletLength=0.020422; + ACE_bulletLength=20.422; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; @@ -290,7 +290,7 @@ class CfgAmmo class FH_50BMG_SLAP: B_127x99_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.03175; + ACE_bulletLength=31.75; ACE_bulletMass=22.68; 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[]={1.056}; @@ -303,7 +303,7 @@ class CfgAmmo class FH_50BMG_Raufoss: B_127x99_Ball { ACE_caliber=12.954; - ACE_bulletLength=0.060452; + ACE_bulletLength=60.452; ACE_bulletMass=42.768; 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.670}; diff --git a/optionals/compat_rh_de/CfgAmmo.hpp b/optionals/compat_rh_de/CfgAmmo.hpp index e95bcdcad0..8d3e230e1c 100644 --- a/optionals/compat_rh_de/CfgAmmo.hpp +++ b/optionals/compat_rh_de/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class RH_50_AE_Ball: BulletBase { ACE_caliber=12.7; - ACE_bulletLength=0.028194; + ACE_bulletLength=28.194; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.228}; @@ -18,7 +18,7 @@ class CfgAmmo class RH_454_Casull: BulletBase { ACE_caliber=11.481; - ACE_bulletLength=0.022733; + ACE_bulletLength=22.733; ACE_bulletMass=21.06; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.171}; @@ -31,7 +31,7 @@ class CfgAmmo class RH_32ACP: BulletBase { ACE_caliber=7.938; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=4.212; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.118}; @@ -44,7 +44,7 @@ class CfgAmmo class RH_45ACP: BulletBase { ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; @@ -57,7 +57,7 @@ class CfgAmmo class RH_B_40SW: BulletBase { ACE_caliber=10.16; - ACE_bulletLength=0.011354; + ACE_bulletLength=11.354; ACE_bulletMass=8.748; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.105, 0.115, 0.120, 0.105}; @@ -70,7 +70,7 @@ class CfgAmmo class RH_44mag_ball: BulletBase { ACE_caliber=10.897; - ACE_bulletLength=0.020422; + ACE_bulletLength=20.422; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.172}; @@ -83,7 +83,7 @@ class CfgAmmo class RH_357mag_ball: BulletBase { ACE_caliber=9.068; - ACE_bulletLength=0.013741; + ACE_bulletLength=13.741; ACE_bulletMass=8.1; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.148}; @@ -96,7 +96,7 @@ class CfgAmmo class RH_762x25: BulletBase { ACE_caliber=7.874; - ACE_bulletLength=0.013856; + ACE_bulletLength=13.856; ACE_bulletMass=5.5728; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; @@ -109,7 +109,7 @@ class CfgAmmo class RH_9x18_Ball: BulletBase { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; @@ -122,7 +122,7 @@ class CfgAmmo class RH_B_9x19_Ball: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -135,7 +135,7 @@ class CfgAmmo class RH_B_22LR_SD: BulletBase { ACE_caliber=5.664; - ACE_bulletLength=0.01143; + ACE_bulletLength=11.43; ACE_bulletMass=2.4624; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.111}; @@ -148,7 +148,7 @@ class CfgAmmo class RH_57x28mm: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.012573; + ACE_bulletLength=12.573; ACE_bulletMass=1.8144; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.144}; diff --git a/optionals/compat_rh_m4/CfgAmmo.hpp b/optionals/compat_rh_m4/CfgAmmo.hpp index 38c58bb7d4..fa4cc2ba07 100644 --- a/optionals/compat_rh_m4/CfgAmmo.hpp +++ b/optionals/compat_rh_m4/CfgAmmo.hpp @@ -11,7 +11,7 @@ class CfgAmmo { class RH_9x19_B_M822: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -24,7 +24,7 @@ class CfgAmmo { class RH_9x19_B_HP: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=8.0352; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.165}; @@ -37,7 +37,7 @@ class CfgAmmo { class RH_9x19_B_HPSB: BulletBase { ACE_caliber=9.017; - ACE_bulletLength=0.015316; + ACE_bulletLength=15.316; ACE_bulletMass=9.5256; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.212}; @@ -50,7 +50,7 @@ class CfgAmmo { class RH_556x45_B_M855A1: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75}; ACE_ballisticCoefficients[]={0.151}; @@ -63,7 +63,7 @@ class CfgAmmo { class RH_556x45_B_Mk318: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -76,7 +76,7 @@ class CfgAmmo { class RH_556x45_B_Mk262: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -89,7 +89,7 @@ class CfgAmmo { class RH_68x43_B_FMJ: B_65x39_Caseless { ACE_caliber=7.036; - ACE_bulletLength=0.024359; + ACE_bulletLength=24.359; ACE_bulletMass=7.452; 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.162}; @@ -102,7 +102,7 @@ class CfgAmmo { class RH_68x43_B_Match: B_65x39_Caseless { ACE_caliber=7.036; - ACE_bulletLength=0.03175; + ACE_bulletLength=31.75; ACE_bulletMass=8.748; 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.253}; @@ -115,7 +115,7 @@ class CfgAmmo { class RH_762x35_B_FMJ: B_65x39_Caseless { ACE_caliber=7.823; - ACE_bulletLength=0.028397; + ACE_bulletLength=28.397; ACE_bulletMass=9.5256; 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.398}; @@ -128,7 +128,7 @@ class CfgAmmo { class RH_762x35_B_Match: B_65x39_Caseless { ACE_caliber=7.823; - ACE_bulletLength=0.029286; + ACE_bulletLength=29.286; ACE_bulletMass=8.1; 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.349, 0.338, 0.330, 0.310}; @@ -141,7 +141,7 @@ class CfgAmmo { class RH_762x35_B_MSB: B_65x39_Caseless { ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.608}; @@ -154,7 +154,7 @@ class CfgAmmo { class RH_762x51_B_M80A1: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -167,7 +167,7 @@ class CfgAmmo { class RH_762x51_B_Mk316LR: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; ACE_ammoTempMuzzleVelocityShifts[]={-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[]={0.243}; @@ -180,7 +180,7 @@ class CfgAmmo { class RH_762x51_B_Mk319: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=8.424; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.377}; @@ -193,7 +193,7 @@ class CfgAmmo { class RH_762x51_B_LFMJSB: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.034036; + ACE_bulletLength=34.036; ACE_bulletMass=12.96; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.235}; diff --git a/optionals/compat_rh_pdw/CfgAmmo.hpp b/optionals/compat_rh_pdw/CfgAmmo.hpp index f003c9599e..a1503f2284 100644 --- a/optionals/compat_rh_pdw/CfgAmmo.hpp +++ b/optionals/compat_rh_pdw/CfgAmmo.hpp @@ -3,7 +3,7 @@ class BulletBase; class RH_B_6x35: BulletBase { ACE_caliber=5.69; - ACE_bulletLength=0.011303; + ACE_bulletLength=11.303; ACE_bulletMass=4.212; 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.26}; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 15161e1fff..4cf181b9fc 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -6,7 +6,7 @@ class CfgAmmo class rhs_B_545x39_Ball: B_556x45_Ball { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.42792; 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.168}; @@ -19,7 +19,7 @@ class CfgAmmo class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { ACE_caliber=5.588; - ACE_bulletLength=0.02159; + ACE_bulletLength=21.59; ACE_bulletMass=3.22704; 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.168}; @@ -33,7 +33,7 @@ class CfgAmmo class rhs_B_762x54_Ball: B_762x51_Ball { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -46,7 +46,7 @@ class CfgAmmo class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.6552; 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.395}; @@ -59,7 +59,7 @@ class CfgAmmo class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { ACE_caliber=7.925; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.8496; 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.4}; @@ -72,7 +72,7 @@ class CfgAmmo class rhs_B_762x39_Ball: B_762x51_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=7.9704; 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}; @@ -85,7 +85,7 @@ class CfgAmmo class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + 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}; @@ -99,7 +99,7 @@ class CfgAmmo class rhs_B_9x19_7N21: B_9x21_Ball { ACE_caliber=9.017; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=5.19696; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.14}; @@ -112,7 +112,7 @@ class CfgAmmo class rhs_B_9x18_57N181S: B_9x21_Ball { ACE_caliber=9.271; - ACE_bulletLength=0.015494; + ACE_bulletLength=15.494; ACE_bulletMass=6.00048; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 35c03f09ae..b46f155b17 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -5,7 +5,7 @@ class CfgAmmo class rhsusf_B_300winmag: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.037821; + ACE_bulletLength=37.821; ACE_bulletMass=14.256; 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.310}; @@ -19,7 +19,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk318_Ball: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.0176; 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.307}; @@ -32,7 +32,7 @@ class CfgAmmo class rhs_ammo_556x45_Mk262_Ball: B_556x45_Ball { ACE_caliber=5.69; - ACE_bulletLength=0.023012; + ACE_bulletLength=23.012; ACE_bulletMass=4.9896; 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.361}; @@ -45,7 +45,7 @@ class CfgAmmo class rhs_ammo_762x51_M80_Ball: BulletBase { ACE_caliber=7.823; - ACE_bulletLength=0.028956; + ACE_bulletLength=28.956; ACE_bulletMass=9.4608; 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.2}; @@ -58,7 +58,7 @@ class CfgAmmo class rhs_ammo_762x51_M118_Special_Ball: rhs_ammo_762x51_M80_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=11.34; 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.243}; @@ -71,7 +71,7 @@ class CfgAmmo class rhs_ammo_762x51_M993_Ball: rhs_ammo_762x51_M80_Ball { ACE_caliber=7.823; - ACE_bulletLength=0.031496; + ACE_bulletLength=31.496; ACE_bulletMass=8.2296; 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.377}; @@ -84,7 +84,7 @@ class CfgAmmo class rhs_ammo_45ACP_MHP: BulletBase { ACE_caliber=11.481; - ACE_bulletLength=0.017272; + ACE_bulletLength=17.272; ACE_bulletMass=14.904; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.195}; From aa9561f287bc59f4def0376e5665a7910a4196f4 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 12:46:44 +0200 Subject: [PATCH 0058/1101] Convert ACE_barrelTwist to millimeters --- .../functions/fnc_handleFired.sqf | 2 +- addons/ballistics/CfgWeapons.hpp | 82 +- extras/CfgWeaponsReference.hpp | 720 +++++++++--------- optionals/compat_hlc_ar15/CfgWeapons.hpp | 24 +- optionals/compat_hlc_wp_mp5/CfgWeapons.hpp | 22 +- optionals/compat_hlcmods_ak/CfgWeapons.hpp | 16 +- optionals/compat_hlcmods_aug/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_fal/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_g3/CfgWeapons.hpp | 16 +- optionals/compat_hlcmods_m14/CfgWeapons.hpp | 4 +- optionals/compat_hlcmods_m60e4/CfgWeapons.hpp | 4 +- optionals/compat_rh_de/CfgWeapons.hpp | 54 +- optionals/compat_rh_m4/CfgWeapons.hpp | 50 +- optionals/compat_rh_pdw/CfgWeapons.hpp | 2 +- optionals/compat_rhs_afrf3/CfgWeapons.hpp | 20 +- optionals/compat_rhs_usf3/CfgWeapons.hpp | 20 +- 16 files changed, 536 insertions(+), 536 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index a8528cfec5..e63b1d7dfc 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -94,7 +94,7 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { _caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); _bulletLength = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); _bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); -_barrelTwist = 1000 * getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); +_barrelTwist = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); _stabilityFactor = 1.5; if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 59589f73be..7394cda002 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -65,7 +65,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -1.0; - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4064; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -92,7 +92,7 @@ class CfgWeapons { "ACE_30Rnd_65_Creedmor_mag" }; initSpeed = -1.018; - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4572; class Single: Single { dispersion = 0.00029; // radians. Equal to 1 MOA. @@ -137,7 +137,7 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_H"}; }; }; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; class manual: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. @@ -154,7 +154,7 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_B"}; }; }; - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.45974; class FullAuto: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. @@ -241,7 +241,7 @@ class CfgWeapons { class hgun_P07_F: Pistol_Base_F { initSpeed = -0.9778; - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.1016; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -253,7 +253,7 @@ class CfgWeapons { class hgun_Rook40_F: Pistol_Base_F { initSpeed = -1.0; - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.11176; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -265,7 +265,7 @@ class CfgWeapons { class hgun_ACPC2_F: Pistol_Base_F { initSpeed = -1.0; - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -276,7 +276,7 @@ class CfgWeapons { class hgun_Pistol_heavy_01_F: Pistol_Base_F { initSpeed = -0.96; - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { @@ -287,7 +287,7 @@ class CfgWeapons { class hgun_Pistol_heavy_02_F: Pistol_Base_F { initSpeed = -0.92; - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.0762; /* class WeaponSlotsInfo: WeaponSlotsInfo { @@ -300,7 +300,7 @@ class CfgWeapons { }; class hgun_PDW2000_F: pdw2000_base_F { initSpeed = -1.157; - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.1778; }; class arifle_Katiba_F: arifle_katiba_Base_F { @@ -310,7 +310,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; initSpeed = -1.08; - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.72898; }; class arifle_Katiba_C_F: arifle_katiba_Base_F { @@ -320,7 +320,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; initSpeed = -1.07; - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.68072; }; class arifle_Katiba_GL_F: arifle_katiba_Base_F { @@ -330,7 +330,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; initSpeed = -1.08; - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.72898; }; class arifle_MX_F: arifle_MX_Base_F { @@ -340,7 +340,7 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -0.99; - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.3683; }; class arifle_MX_GL_F: arifle_MX_Base_F { @@ -350,12 +350,12 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -0.99; - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.3683; }; /* class arifle_MX_SW_F: arifle_MX_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4064; }; */ @@ -366,12 +366,12 @@ class CfgWeapons { "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; initSpeed = -0.965; - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.2667; }; /* class arifle_MXM_F: arifle_MX_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4572; }; */ @@ -388,12 +388,12 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.989; - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.4572; }; class SMG_02_F: SMG_02_base_F { initSpeed = -1.054; - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.19558; }; class arifle_TRG20_F: Tavor_base_F { @@ -408,7 +408,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.95; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.381; }; class arifle_TRG21_F: Tavor_base_F { @@ -423,7 +423,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.989; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.45974; }; class arifle_TRG21_GL_F: arifle_TRG21_F { @@ -438,12 +438,12 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.989; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.45974; }; /* class LMG_Zafir_F: Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.45974; }; */ @@ -459,7 +459,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.98; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.44196; }; class arifle_Mk20C_F: mk20_base_F { @@ -474,7 +474,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.956; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4064; }; class arifle_Mk20_GL_F: mk20_base_F { @@ -489,12 +489,12 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; initSpeed = -0.956; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4064; }; class SMG_01_F: SMG_01_Base { initSpeed = -1.016; - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1397; }; class srifle_DMR_01_F: DMR_01_base_F { @@ -503,7 +503,7 @@ class CfgWeapons { "ACE_10Rnd_762x54_Tracer_mag" }; initSpeed = -1.025; - ACE_barrelTwist=0.2413; + ACE_barrelTwist=241.3; ACE_barrelLength=0.6096; }; class srifle_EBR_F: EBR_base_F { @@ -518,19 +518,19 @@ class CfgWeapons { "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9724; - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; /* class LMG_Mk200_F: Rifle_Long_Base_F { initSpeed = -1.0; - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; */ class srifle_LRR_F: LRR_base_F { initSpeed = -1.0; - ACE_barrelTwist=0.3302; + ACE_barrelTwist=330.2; ACE_barrelLength=0.7366; }; class srifle_GM6_F: GM6_base_F { @@ -542,7 +542,7 @@ class CfgWeapons { "ACE_5Rnd_127x99_AMAX_Mag" }; initSpeed = -1.0; - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.92964; }; class srifle_DMR_02_F: DMR_02_base_F { @@ -555,7 +555,7 @@ class CfgWeapons { "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag" }; initSpeed = -0.962; - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.508; }; class srifle_DMR_03_F: DMR_03_base_F { @@ -570,17 +570,17 @@ class CfgWeapons { "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9843; - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.508; }; class srifle_DMR_04_F: DMR_04_base_F { initSpeed = -1.0; - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.450088; }; class srifle_DMR_05_blk_F: DMR_05_base_F { initSpeed = -1.0; - ACE_barrelTwist=0.359918; + ACE_barrelTwist=359.918; ACE_barrelLength=0.620014; }; class srifle_DMR_06_camo_F: DMR_06_base_F { @@ -595,17 +595,17 @@ class CfgWeapons { "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9916; - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class MMG_01_hex_F: MMG_01_base_F { initSpeed = -1.0; - ACE_barrelTwist=0.359918; + ACE_barrelTwist=359.918; ACE_barrelLength=0.54991; }; class MMG_02_camo_F: MMG_02_base_F { initSpeed = -1.0; - ACE_barrelTwist=0.23495; + ACE_barrelTwist=234.95; ACE_barrelLength=0.6096; }; @@ -615,7 +615,7 @@ class CfgWeapons { }; class HMG_M2: HMG_01 { initSpeed = -1.0; - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=1.143; }; diff --git a/extras/CfgWeaponsReference.hpp b/extras/CfgWeaponsReference.hpp index 3aecdb325c..d46f8c7033 100644 --- a/extras/CfgWeaponsReference.hpp +++ b/extras/CfgWeaponsReference.hpp @@ -27,456 +27,456 @@ class CfgWeapons class MMG_02_base_F; class hgun_P07_F : Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.1016; }; class hgun_Rook40_F : Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.11176; }; class hgun_Pistol_heavy_01_F : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; }; class hgun_Pistol_heavy_02_F : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.0762; }; class hgun_ACPC2_F : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; class hgun_PDW2000_F : PDW2000_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.1778; }; class arifle_Katiba_F : arifle_Katiba_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.72898; }; class arifle_Katiba_C_F : arifle_Katiba_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.68072; }; class arifle_Katiba_GL_F : arifle_Katiba_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.72898; }; class arifle_MX_F: arifle_MX_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.3683; }; class arifle_MX_GL_F: arifle_MX_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.3683; }; class arifle_MX_SW_F: arifle_MX_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4064; }; class arifle_MXC_F: arifle_MX_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.2667; }; class arifle_MXM_F: arifle_MX_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4572; }; class arifle_SDAR_F : SDAR_base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.4572; }; class SMG_02_F : SMG_02_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.19558; }; class arifle_TRG20_F : Tavor_base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.381; }; class arifle_TRG21_F : Tavor_base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.45974; }; class LMG_Zafir_F : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.45974; }; class arifle_Mk20_F : Mk20_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.44196; }; class arifle_Mk20C_F : Mk20_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4064; }; class arifle_Mk20_GL_F : Mk20_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4064; }; class SMG_01_F : SMG_01_Base { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1397; }; class srifle_DMR_01_F : DMR_01_base_F { - ACE_barrelTwist=0.2413; + ACE_barrelTwist=241.3; ACE_barrelLength=0.6096; }; class srifle_EBR_F : EBR_base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.6096; }; class LMG_Mk200_F : Rifle_Long_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class srifle_LRR_F : LRR_base_F { - ACE_barrelTwist=0.3302; + ACE_barrelTwist=330.2; ACE_barrelLength=0.7366; }; class srifle_GM6_F : GM6_base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=1.09982; }; class srifle_DMR_02_F: DMR_02_base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.6604; }; class srifle_DMR_03_F: DMR_03_base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.508; }; class srifle_DMR_04_F: DMR_04_base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.450088; }; class srifle_DMR_05_blk_F: DMR_05_base_F { - ACE_barrelTwist=0.359918; + ACE_barrelTwist=359.918; ACE_barrelLength=0.620014; }; class srifle_DMR_06_camo_F: DMR_06_base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class MMG_01_hex_F: MMG_01_base_F { - ACE_barrelTwist=0.359918; + ACE_barrelTwist=359.918; ACE_barrelLength=0.54991; }; class MMG_02_camo_F: MMG_02_base_F { - ACE_barrelTwist=0.23495; + ACE_barrelTwist=234.95; ACE_barrelLength=0.6096; }; class HMG_M2 : HMG_127 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=1.143; }; class RH_deagle : Pistol_Base_F { - ACE_barrelTwist=0.4826; + ACE_barrelTwist=482.6; ACE_barrelLength=0.1524; }; class RH_sw659 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.188976; }; class RH_usp : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.112014; }; class RH_uspm : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1524; }; class RH_mak : Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.093472; }; class RH_m1911 : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; class RH_kimber : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; class RH_m9 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.12446; }; class RH_vz61 : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; }; class RH_tec9 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.127; }; class RH_muzi : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.127; }; class RH_g18 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.114046; }; class RH_g17 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.114046; }; class RH_tt33 : Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.11684; }; class RH_mk2 : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1016; }; class RH_p226 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.11176; }; class RH_g19 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.1016; }; class RH_gsh18 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.10414; }; class RH_mateba : Pistol_Base_F { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.1524; }; class RH_python : Pistol_Base_F { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.1524; }; class RH_bull : Pistol_Base_F { - ACE_barrelTwist=0.6096; + ACE_barrelTwist=609.6; ACE_barrelLength=0.1651; }; class RH_ttracker : Pistol_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.1016; }; class RH_mp412 : Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.1524; }; class RH_fnp45 : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; }; class RH_fn57 : Pistol_Base_F { - ACE_barrelTwist=0.23114; + ACE_barrelTwist=231.14; ACE_barrelLength=0.12192; }; class RH_vp70 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.11684; }; class RH_cz75 : Pistol_Base_F { - ACE_barrelTwist=0.24638; + ACE_barrelTwist=246.38; ACE_barrelLength=0.11938; }; class RH_PDW : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.254; }; class RH_hb : Rifle_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.1524; }; class RH_sbr9 : Rifle_Base_F { - ACE_barrelTwist=0.24638; + ACE_barrelTwist=246.38; ACE_barrelLength=0.2286; }; class RH_ar10 : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.52832; }; class RH_m4 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class RH_M4m : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2667; }; class RH_M4sbr : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2667; }; class RH_M16a1 : Rifle_Base_F { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.508; }; class RH_M16A2 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_M16A3 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_M16A4 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_M16A6 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_hk416 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class RH_hk416c : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2286; }; class RH_hk416s : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26416; }; class RH_m27iar : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4191; }; class RH_Mk12mod1 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class RH_SAMR : Rifle_Base_F { - ACE_barrelTwist=0.19558; + ACE_barrelTwist=195.58; ACE_barrelLength=0.508; }; class RH_m110 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.508; }; class RH_mk11 : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class RH_sr25ec : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.508; }; class hlc_rifle_ak74 : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class hlc_rifle_aks74u : Rifle_Base_F { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class hlc_rifle_ak47 : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.41402; }; class hlc_rifle_akm : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class hlc_rifle_rpk : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.58928; }; class hlc_rifle_aek971 : Rifle_Base_F { - ACE_barrelTwist=0.2413; + ACE_barrelTwist=241.3; ACE_barrelLength=0.4318; }; class hlc_rifle_saiga12k : Rifle_Base_F @@ -487,274 +487,274 @@ class CfgWeapons }; class hlc_ar15_base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2921; }; class hlc_rifle_bcmjack : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class hlc_rifle_Bushmaster300 : Rifle_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.4064; }; class hlc_rifle_SAMR : Rifle_Base_F { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4064; }; class hlc_rifle_honeybase : Rifle_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.1524; }; class hlc_rifle_SLRchopmod : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class hlc_rifle_LAR : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class hlc_rifle_c1A1 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.55118; }; class hlc_rifle_FAL5061 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; class hlc_rifle_STG58F : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class hlc_rifle_SLR : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.55118; }; class hlc_rifle_falosw : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.3302; }; class hlc_rifle_psg1 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.65024; }; class hlc_rifle_g3sg1 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.44958; }; class hlc_rifle_hk51 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.211074; }; class hlc_rifle_hk53 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.211074; }; class hlc_rifle_g3a3 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.44958; }; class hlc_M14_base : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class hlc_rifle_m14sopmod : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; class hlc_lmg_M60E4 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4318; }; class hlc_lmg_m60 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class hlc_smg_mp5k_PDW : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.1143; }; class hlc_smg_mp5a2 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.22606; }; class hlc_smg_mp5a4 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.22606; }; class hlc_smg_mp5n : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.22606; }; class hlc_smg_mp5sd5 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.14478; }; class hlc_smg_mp5sd6 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.14478; }; class hlc_smg_9mmar : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.22606; }; class hlc_smg_mp510 : Rifle_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.22606; }; class hlc_smg_mp5a3 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.22606; }; class hgun_mas_usp_F: Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.112014; }; class hgun_mas_m23_F: Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.149098; }; class hgun_mas_acp_F: Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127762; }; class hgun_mas_m9_F: Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.12446; }; class hgun_mas_bhp_F: Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.11938; }; class hgun_mas_glock_F: Pistol_Base_F { - ACE_barrelTwist=0.249936; + ACE_barrelTwist=249.936; ACE_barrelLength=0.113792; }; class hgun_mas_glocksf_F: Pistol_Base_F { - ACE_barrelTwist=0.40005; + ACE_barrelTwist=400.05; ACE_barrelLength=0.11684; }; class hgun_mas_grach_F: Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.11176; }; class hgun_mas_mak_F: Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.093472; }; class hgun_mas_sa61_F: Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; }; class hgun_mas_uzi_F: Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.134112; }; class arifle_mas_mk16 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.35052; }; class arifle_mas_mk16_l : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class arifle_mas_mk17 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4064; }; class srifle_mas_m110 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.508; }; class arifle_mas_ak_74m : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.415036; }; class arifle_mas_ak_74m_gl : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.415036; }; class srifle_mas_svd : Rifle_Base_F { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.61976; }; class srifle_mas_m91 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.7366; }; class srifle_mas_ksvk : Rifle_Base_F { - ACE_barrelTwist=0.4572; + ACE_barrelTwist=457.2; ACE_barrelLength=0.999998; }; class LMG_mas_rpk_F : Rifle_Base_F { - ACE_barrelTwist=0.195072; + ACE_barrelTwist=195.072; ACE_barrelLength=0.58928; }; class LMG_mas_pkm_F : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.64516; }; class arifle_mas_aks74u : Rifle_Base_F { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class arifle_mas_bizon : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.23114; }; class arifle_mas_saiga : Rifle_Base_F @@ -765,142 +765,142 @@ class CfgWeapons }; class arifle_mas_hk416 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class arifle_mas_hk416_gl : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class arifle_mas_hk416c : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2286; }; class arifle_mas_hk416_m203c : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2286; }; class arifle_mas_hk417c : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.3302; }; class arifle_mas_m4 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class arifle_mas_m4c : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26162; }; class arifle_mas_l119 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4064; }; class arifle_mas_l119_gl : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4064; }; class arifle_mas_l119_m203 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4064; }; class arifle_mas_m16 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class arifle_mas_m16_gl : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class srifle_mas_hk417 : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.4191; }; class srifle_mas_sr25 : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class srifle_mas_ebr : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; class srifle_mas_m24 : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class arifle_mas_mp5 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.22606; }; class arifle_mas_mp5sd : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.14478; }; class srifle_mas_m107 : Rifle_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.7366; }; class LMG_mas_M249_F : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.41402; }; class LMG_mas_M249a_F : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class LMG_mas_mk48_F : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.50165; }; class LMG_mas_m240_F : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class LMG_mas_mg3_F : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.56388; }; class arifle_mas_g3 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.44958; }; class arifle_mas_g3_m203 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.44958; }; class arifle_mas_fal : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class arifle_mas_fal_m203 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class arifle_mas_m1014 : Rifle_Base_F @@ -912,275 +912,275 @@ class CfgWeapons class BWA3_P8 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.10795; }; class BWA3_MP7 : Pistol_Base_F { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.18034; }; class BWA3_G36 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.48006; }; class BWA3_G36K : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class BWA3_G28_Standard : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4191; }; class BWA3_G27 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4064; }; class BWA3_MG4 : Rifle_Long_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.48006; }; class BWA3_MG5 : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.54864; }; class BWA3_G82 : Rifle_Long_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.7366; }; class Trixie_L131A1 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.1143; }; class Trixie_XM8_Carbine : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class Trixie_XM8_Compact : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2286; }; class Trixie_XM8_SAW : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class Trixie_XM8_SAW_NB : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class Trixie_XM8_DMR : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class Trixie_XM8_DMR_NB : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class L129A1_base : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.4064; }; class Trixie_Enfield : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.64008; }; class Trixie_CZ550_Rail : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.599999; }; class Trixie_FNFAL_Rail : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class Trixie_M110 : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.508; }; class Trixie_MK12 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class Trixie_LM308MWS : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.4064; }; class Trixie_M14DMR : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class Trixie_M14DMR_NG_Black_Short : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; class Trixie_M14DMR_NG_Short : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; class Trixie_M14 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class Trixie_M40A3 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.6096; }; class Trixie_CZ750 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.6604; }; class Trixie_M24 : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class Trixie_AWM338 : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.6858; }; class Trixie_M107 : Rifle_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.7366; }; class Trixie_AS50 : Rifle_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.7366; }; class L110A1_base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.34798; }; class Trixie_L86A2_base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.64516; }; class Trixie_l85a2_base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.51816; }; class L7A2_base : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class rhs_weap_pya : Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.11176; }; class rhs_weap_pkp : Rifle_Long_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.65786; }; class rhs_weap_pkm : Rifle_Long_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.64516; }; class rhs_weap_rpk74m : Rifle_Long_Base_F { - ACE_barrelTwist=0.195072; + ACE_barrelTwist=195.072; ACE_barrelLength=0.58928; }; class rhs_weap_rpk74 : Rifle_Long_Base_F { - ACE_barrelTwist=0.195072; + ACE_barrelTwist=195.072; ACE_barrelLength=0.58928; }; class rhs_weap_ak74m : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class rhs_weap_aks74u : Rifle_Base_F { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class rhs_weap_akm : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class rhs_weap_svd : Rifle_Base_F { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.61976; }; class rhs_weap_svds : Rifle_Base_F { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.56388; }; class rhs_weap_m4_Base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class rhs_weap_m16a4 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class rhs_weap_m16a4_carryhandle : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class rhs_weap_m16a4_grip : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class rhs_weap_m240B : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class rhs_weap_m249_pip : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.41402; }; class rhs_weap_mk18 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26162; }; class rhs_weap_M590_5RD : Rifle_Base_F @@ -1197,89 +1197,89 @@ class CfgWeapons }; class rhs_weap_sr25 : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class rhs_weap_sr25_ec : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.508; }; class rhs_weap_XM2010_Base_F: Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.6096; }; class R3F_PAMAS : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.12446; }; class R3F_Famas_F1: Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.48768; }; class R3F_Famas_surb: Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.40386; }; class R3F_Minimi: Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.34798; }; class R3F_Minimi_762: Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.50292; }; class R3F_FRF2: Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.649986; }; class R3F_PGM_Hecate_II: Rifle_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.70104; }; class R3F_HK417S_HG : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.3048; }; class R3F_HK417M : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.4064; }; class R3F_HK417L : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.508; }; class R3F_M107 : Rifle_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.7366; }; class R3F_HK416M : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3556; }; class R3F_MP5SD : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.14478; }; class CUP_hgun_Colt1911 : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; class CUP_sgun_AA12 : Rifle_Base_F @@ -1290,197 +1290,197 @@ class CfgWeapons }; class CUP_arifle_AK_Base : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.41402; }; class CUP_arifle_AK107_Base : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class CUP_arifle_AKS_Base : Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class CUP_arifle_AKS74U : Rifle_Base_F { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class CUP_arifle_RPK74 : Rifle_Long_Base_F { - ACE_barrelTwist=0.195072; + ACE_barrelTwist=195.072; ACE_barrelLength=0.58928; }; class CUP_srifle_AS50 : Rifle_Long_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.7366; }; class CUP_srifle_AWM_Base : Rifle_Long_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.6858; }; class CUP_smg_bizon : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.23114; }; class CUP_hgun_Compact : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.094996; }; class CUP_srifle_CZ750 : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.6604; }; class CUP_arifle_CZ805_Base : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.3556; }; class CUP_arifle_CZ805_A1 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.3556; }; class CUP_arifle_CZ805_A2 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.27686; }; class CUP_srifle_DMR : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class CUP_hgun_Duty : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.094996; }; class CUP_arifle_FNFAL : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class CUP_arifle_G36A : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.48006; }; class CUP_arifle_G36K : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class CUP_arifle_G36C : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2286; }; class CUP_arifle_MG36 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.48006; }; class CUP_hgun_Glock17 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.114046; }; class CUP_srifle_CZ550 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.599999; }; class CUP_srifle_ksvk : Rifle_Long_Base_F { - ACE_barrelTwist=0.4572; + ACE_barrelTwist=457.2; ACE_barrelLength=0.999998; }; class CUP_lmg_L7A2 : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class CUP_arifle_L85A2_Base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.51816; }; class CUP_lmg_L110A1 : Rifle_Long_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.34798; }; class CUP_srifle_LeeEnfield : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.64008; }; class CUP_hgun_M9 : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.12446; }; class CUP_srifle_M14 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class CUP_arifle_M16_Base : Rifle_Base_F { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.508; }; class CUP_arifle_M4_Base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class CUP_srifle_Mk12SPR : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class CUP_srifle_M24_des : Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class CUP_lmg_M60A4 : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4318; }; class CUP_srifle_M107_Base : Rifle_Long_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.7366; }; class CUP_srifle_M110 : Rifle_Base_F { - ACE_barrelTwist=0.2794; + ACE_barrelTwist=279.4; ACE_barrelLength=0.508; }; class CUP_lmg_M240 : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class CUP_lmg_M249_para : Rifle_Long_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.41402; }; class CUP_lmg_M249 : Rifle_Long_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class CUP_sgun_M1014 : Rifle_Base_F @@ -1491,67 +1491,67 @@ class CfgWeapons }; class CUP_hgun_Makarov : Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.093472; }; class CUP_hgun_MicroUzi : Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.127; }; class CUP_lmg_Mk48_Base : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.50165; }; class CUP_smg_MP5SD6 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.14478; }; class CUP_smg_MP5A5 : Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.22606; }; class CUP_hgun_PB6P9 : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.10414; }; class CUP_hgun_Phantom : Rifle_Base_F { - ACE_barrelTwist=0.24638; + ACE_barrelTwist=246.38; ACE_barrelLength=0.11938; }; class CUP_lmg_PKM : Rifle_Long_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.64516; }; class CUP_lmg_Pecheneg : Rifle_Long_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.65786; }; class CUP_hgun_TaurusTracker455 : Pistol_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.1016; }; class CUP_arifle_Sa58P : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.39116; }; class CUP_arifle_Sa58V : Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.39116; }; class CUP_hgun_SA61 : Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; }; class CUP_sgun_Saiga12K: Rifle_Base_F @@ -1562,328 +1562,328 @@ class CfgWeapons } class CUP_arifle_Mk16_CQC : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.254; }; class CUP_arifle_Mk16_STD : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3556; }; class CUP_arifle_Mk16_SV : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class CUP_arifle_Mk17_CQC : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.3302; }; class CUP_arifle_Mk17_STD : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4064; }; class CUP_arifle_Mk20 : Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.508; }; class CUP_srifle_SVD : Rifle_Base_F { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.61976; }; class CUP_lmg_UK59 : Rifle_Long_Base_F { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.55118; }; class CUP_DSHKM_W : MGun { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=1.06934; }; class CUP_KPVT_W : MGun { - ACE_barrelTwist=0.454914; + ACE_barrelTwist=454.914; ACE_barrelLength=1.3462; }; class CUP_KPVB_W : MGun { - ACE_barrelTwist=0.454914; + ACE_barrelTwist=454.914; ACE_barrelLength=1.3462; }; class CUP_M134 : MGunCore { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class CUP_M240_veh_W : Rifle_Long_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class CUP_PKT_W : MGun { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.722122; }; class CUP_srifle_VSSVintorez : Rifle_Base_F { - ACE_barrelTwist=0.21082; + ACE_barrelTwist=210.82; ACE_barrelLength=0.20066; }; class CUP_arifle_XM8_Base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class CUP_arifle_XM8_Carbine : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class CUP_arifle_xm8_sharpshooter : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class CUP_arifle_xm8_SAW : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class CUP_arifle_XM8_Compact : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2286; }; class CUP_arifle_XM8_Railed_Base : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class CUP_arifle_XM8_Carbine_FG : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3175; }; class VTN_AK_BASE: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AK74M: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AK74M_GP25: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AK74M_GP30M: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AKS74: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AKS74N: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AKS74N_76: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AK74_76: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AKMS_aa: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.26162; }; class VTN_AKS74U_BASE: Rifle_Base_F { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class VTN_AKM_BASE: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AKMS: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AKMS_T_P: Rifle_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class VTN_AK103_BASE: Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.41402; }; class VTN_AK104_BASE: Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.31496; }; class VTN_AK105_BASE: Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.31496; }; class VTN_AK105_P_BASE: Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.31496; }; class VTN_SVD_BASE: Rifle_Base_F { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.61976; }; class VTN_SVD_63: Rifle_Base_F { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.61976; }; class VTN_SVD_86: Rifle_Base_F { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.61976; }; class VTN_SV98_BASE: Rifle_Base_F { - ACE_barrelTwist=0.32004; + ACE_barrelTwist=320.04; ACE_barrelLength=0.649986; }; class VTN_PKM_BAS: Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.64516; }; class VTN_PKP: Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.65786; }; class VTN_PYA: Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.11176; }; class VTN_PM: Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.093472; }; class VTN_PB: Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.10414; }; class VTN_GSH18: Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.10414; }; class VTN_PSS: Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.03556; }; class VTN_PKT: Rifle_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.722122; }; class VTN_KORD: Rifle_Base_F { - ACE_barrelTwist=0.454914; + ACE_barrelTwist=454.914; ACE_barrelLength=1.3462; }; class VTN_KPVT: Rifle_Base_F { - ACE_barrelTwist=0.454914; + ACE_barrelTwist=454.914; ACE_barrelLength=1.3462; }; class VTN_C_M4A1 : Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class VTN_MK18MOD0: Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26162; }; class VTN_M16_BASE: Rifle_Base_F { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.508; }; class VTN_FN_SAMR_BASE: Rifle_Base_F { - ACE_barrelTwist=0.19558; + ACE_barrelTwist=195.58; ACE_barrelLength=0.508; }; class VTN_M249_SAW_BASE: Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class VTN_M249_PARA: Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.41402; }; class VTN_M240G_BASE: Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class VTN_M9: Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.12446; }; class VTN_M45A1: Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; class VTN_M24: Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class VTN_M240: Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class VTN_KO44: Rifle_Base_F { - ACE_barrelTwist=0.2413; + ACE_barrelTwist=241.3; ACE_barrelLength=0.51308; }; class VTN_SAIGA_MK03: Rifle_Base_F diff --git a/optionals/compat_hlc_ar15/CfgWeapons.hpp b/optionals/compat_hlc_ar15/CfgWeapons.hpp index 31caabbe78..4f3fb2328c 100644 --- a/optionals/compat_hlc_ar15/CfgWeapons.hpp +++ b/optionals/compat_hlc_ar15/CfgWeapons.hpp @@ -4,62 +4,62 @@ class CfgWeapons class Rifle_Base_F; class hlc_ar15_base: Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2921; }; class hlc_rifle_RU556: hlc_ar15_base { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26162; }; class hlc_rifle_RU5562: hlc_rifle_RU556 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26162; }; class hlc_rifle_CQBR: hlc_rifle_RU556 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.254; }; class hlc_rifle_M4: hlc_rifle_RU556 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class hlc_rifle_bcmjack: hlc_ar15_base { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class hlc_rifle_Colt727: hlc_ar15_base { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class hlc_rifle_Colt727_GL: hlc_rifle_Colt727 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class hlc_rifle_Bushmaster300: hlc_rifle_Colt727 { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.3683; }; class hlc_rifle_vendimus: hlc_rifle_Bushmaster300 { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.4064; }; class hlc_rifle_SAMR: hlc_rifle_RU556 { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4064; }; class hlc_rifle_honeybase: hlc_rifle_RU556 { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.1524; }; }; \ No newline at end of file diff --git a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp index e100d90a78..1c67a19815 100644 --- a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp +++ b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp @@ -4,57 +4,57 @@ class CfgWeapons class Rifle_Base_F; class hlc_MP5_base: Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; class hlc_smg_mp5k_PDW: hlc_MP5_base { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.1143; }; class hlc_smg_mp5k: hlc_smg_mp5k_PDW { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.1143; }; class hlc_smg_mp5a2: hlc_MP5_base { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; class hlc_smg_MP5N: hlc_MP5_base { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; class hlc_smg_9mmar: hlc_smg_MP5N { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; class hlc_smg_mp5a4: hlc_MP5_base { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; class hlc_smg_mp510: hlc_smg_MP5N { - ACE_barrelTwist=0.381; + ACE_barrelTwist=381.0; ACE_barrelLength=0.2286; }; class hlc_smg_mp5sd5: hlc_MP5_base { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; class hlc_smg_mp5a3: hlc_smg_mp5a2 { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; class hlc_smg_mp5sd6: hlc_smg_mp5sd5 { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.2286; }; }; diff --git a/optionals/compat_hlcmods_ak/CfgWeapons.hpp b/optionals/compat_hlcmods_ak/CfgWeapons.hpp index 2655b1f182..a69f1b192e 100644 --- a/optionals/compat_hlcmods_ak/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_ak/CfgWeapons.hpp @@ -6,12 +6,12 @@ class CfgWeapons class InventoryOpticsItem_Base_F; class hlc_rifle_ak74: hlc_ak_base { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class hlc_rifle_aku12: hlc_rifle_ak12 { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class hlc_rifle_RPK12: hlc_rifle_ak12 @@ -20,32 +20,32 @@ class CfgWeapons }; class hlc_rifle_aks74u: hlc_rifle_ak74 { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class hlc_rifle_ak47: hlc_rifle_ak74 { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.41402; }; class hlc_rifle_akm: hlc_rifle_ak47 { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class hlc_rifle_rpk: hlc_rifle_ak47 { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.58928; }; class hlc_rifle_rpk74n: hlc_rifle_rpk { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.58928; }; class hlc_rifle_aek971: hlc_rifle_ak74 { - ACE_barrelTwist=0.2413; + ACE_barrelTwist=241.3; ACE_barrelLength=0.4318; }; class hlc_rifle_saiga12k: hlc_rifle_ak47 diff --git a/optionals/compat_hlcmods_aug/CfgWeapons.hpp b/optionals/compat_hlcmods_aug/CfgWeapons.hpp index ebb5d17675..9e34e45f2f 100644 --- a/optionals/compat_hlcmods_aug/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_aug/CfgWeapons.hpp @@ -5,47 +5,47 @@ class CfgWeapons class hlc_aug_base; class hlc_rifle_aug: hlc_aug_base { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.508; }; class hlc_rifle_auga1carb: hlc_rifle_aug { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4064; }; class hlc_rifle_aughbar: hlc_rifle_aug { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.6096; }; class hlc_rifle_augpara: hlc_rifle_aug { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4191; }; class hlc_rifle_auga2: hlc_rifle_aug { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.508; }; class hlc_rifle_auga2para: hlc_rifle_auga2 { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4191; }; class hlc_rifle_auga2carb: hlc_rifle_auga2 { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4572; }; class hlc_rifle_auga2lsw: hlc_rifle_aughbar { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.6096; }; class hlc_rifle_auga3: hlc_rifle_aug { - ACE_barrelTwist=0.2286; + ACE_barrelTwist=228.6; ACE_barrelLength=0.4572; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_fal/CfgWeapons.hpp b/optionals/compat_hlcmods_fal/CfgWeapons.hpp index 6be462773b..5e4a18caf1 100644 --- a/optionals/compat_hlcmods_fal/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_fal/CfgWeapons.hpp @@ -4,47 +4,47 @@ class CfgWeapons class hlc_fal_base; class hlc_rifle_falosw: hlc_fal_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.3302; }; class hlc_rifle_osw_GL: hlc_rifle_falosw { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.3302; }; class hlc_rifle_SLR: hlc_fal_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.55118; }; class hlc_rifle_STG58F: hlc_fal_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class hlc_rifle_FAL5061: hlc_fal_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; class hlc_rifle_L1A1SLR: hlc_rifle_SLR { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.55118; }; class hlc_rifle_c1A1: hlc_rifle_SLR { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.55118; }; class hlc_rifle_LAR: hlc_rifle_FAL5061 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5334; }; class hlc_rifle_SLRchopmod: hlc_rifle_FAL5061 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_g3/CfgWeapons.hpp b/optionals/compat_hlcmods_g3/CfgWeapons.hpp index 9c5b5585ad..f6b7a9c133 100644 --- a/optionals/compat_hlcmods_g3/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_g3/CfgWeapons.hpp @@ -4,42 +4,42 @@ class CfgWeapons class hlc_g3_base; class hlc_rifle_g3sg1: hlc_g3_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.44958; }; class hlc_rifle_psg1: hlc_rifle_g3sg1 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.65024; }; class hlc_rifle_g3a3: hlc_rifle_g3sg1 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.44958; }; class hlc_rifle_g3a3ris: hlc_rifle_g3a3 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.44958; }; class hlc_rifle_g3ka4: hlc_rifle_g3a3 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.31496; }; class HLC_Rifle_g3ka4_GL: hlc_rifle_g3ka4 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.31496; }; class hlc_rifle_hk51: hlc_rifle_g3sg1 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.211074; }; class hlc_rifle_hk53: hlc_rifle_g3sg1 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.211074; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_m14/CfgWeapons.hpp b/optionals/compat_hlcmods_m14/CfgWeapons.hpp index 8082678f9f..e2f081c547 100644 --- a/optionals/compat_hlcmods_m14/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m14/CfgWeapons.hpp @@ -5,12 +5,12 @@ class CfgWeapons class hlc_rifle_M14; class hlc_M14_base: Rifle_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class hlc_rifle_m14sopmod: hlc_rifle_M14 { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4572; }; }; diff --git a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp index ea93b263c5..682e2cd5fa 100644 --- a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp @@ -4,12 +4,12 @@ class CfgWeapons class hlc_M60e4_base; class hlc_lmg_M60E4: hlc_M60e4_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.4318; }; class hlc_lmg_m60: hlc_M60e4_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; }; diff --git a/optionals/compat_rh_de/CfgWeapons.hpp b/optionals/compat_rh_de/CfgWeapons.hpp index 17f3bd2191..bfb45732e5 100644 --- a/optionals/compat_rh_de/CfgWeapons.hpp +++ b/optionals/compat_rh_de/CfgWeapons.hpp @@ -4,137 +4,137 @@ class CfgWeapons class RH_Pistol_Base_F; class RH_deagle: RH_Pistol_Base_F { - ACE_barrelTwist=0.4826; + ACE_barrelTwist=482.6; ACE_barrelLength=0.1524; }; class RH_mateba: Pistol_Base_F { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.1524; }; class RH_mp412: Pistol_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.1524; }; class RH_python: Pistol_Base_F { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.1524; }; class RH_bull: RH_python { - ACE_barrelTwist=0.6096; + ACE_barrelTwist=609.6; ACE_barrelLength=0.1651; }; class RH_ttracker: Pistol_Base_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.1016; }; class RH_cz75: RH_Pistol_Base_F { - ACE_barrelTwist=0.24638; + ACE_barrelTwist=246.38; ACE_barrelLength=0.11938; }; class RH_p226: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.11176; }; class RH_sw659: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.188976; }; class RH_usp: RH_Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.112014; }; class RH_uspm: RH_Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1524; }; class RH_kimber: RH_Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; class RH_m1911: RH_Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; class RH_tt33: RH_Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.11684; }; class RH_mak: RH_Pistol_Base_F { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.093472; }; class RH_mk2: RH_Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1016; }; class RH_m9: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.12446; }; class RH_g18: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.114046; }; class RH_g17: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.114046; }; class RH_g19: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.1016; }; class RH_gsh18: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.10414; }; class RH_fnp45: RH_Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; }; class RH_fn57: RH_fnp45 { - ACE_barrelTwist=0.23114; + ACE_barrelTwist=231.14; ACE_barrelLength=0.12192; }; class RH_vp70: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.11684; }; class RH_vz61: RH_Pistol_Base_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.1143; }; class RH_tec9: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.127; }; class RH_muzi: RH_Pistol_Base_F { - ACE_barrelTwist=0.24892; + ACE_barrelTwist=248.92; ACE_barrelLength=0.127; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_m4/CfgWeapons.hpp b/optionals/compat_rh_m4/CfgWeapons.hpp index 6b703ed2b4..0cebd83fa6 100644 --- a/optionals/compat_rh_m4/CfgWeapons.hpp +++ b/optionals/compat_rh_m4/CfgWeapons.hpp @@ -4,127 +4,127 @@ class CfgWeapons class Rifle_Base_F; class RH_ar10: Rifle_Base_F { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.52832; }; class RH_m110: Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.508; }; class RH_Mk11: RH_m110 { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class RH_SR25EC: RH_m110 { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.508; }; class RH_m4: Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class RH_M4_ris: RH_m4 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class RH_M4A1_ris: RH_M4_ris { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class RH_M4m: RH_M4A1_ris { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2667; }; class RH_M4sbr: RH_M4A1_ris { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2667; }; class RH_hb: Rifle_Base_F { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.1524; }; class RH_hb_b: RH_hb { - ACE_barrelTwist=0.2032; + ACE_barrelTwist=203.2; ACE_barrelLength=0.1524; }; class RH_sbr9: Rifle_Base_F { - ACE_barrelTwist=0.24638; + ACE_barrelTwist=246.38; ACE_barrelLength=0.2286; }; class RH_M4A6: RH_M4A1_ris { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.3683; }; class RH_M16a1: RH_m4 { - ACE_barrelTwist=0.3556; + ACE_barrelTwist=355.6; ACE_barrelLength=0.508; }; class RH_M16A2: RH_m4 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_M16A4 : RH_M4_ris { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_M16A3: RH_M16A4 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_M16A4_m: RH_M16A4 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_M16A6: RH_M16A4 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class RH_Mk12mod1: RH_M16A4 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4572; }; class RH_SAMR: RH_Mk12mod1 { - ACE_barrelTwist=0.19558; + ACE_barrelTwist=195.58; ACE_barrelLength=0.508; }; class RH_Hk416: RH_M4A1_ris { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class RH_Hk416s: RH_M4sbr { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26416; }; class RH_Hk416c: RH_M4sbr { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.2286; }; class RH_M27IAR: RH_Mk12mod1 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.4191; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_pdw/CfgWeapons.hpp b/optionals/compat_rh_pdw/CfgWeapons.hpp index c9921f3ace..7f86318c55 100644 --- a/optionals/compat_rh_pdw/CfgWeapons.hpp +++ b/optionals/compat_rh_pdw/CfgWeapons.hpp @@ -4,7 +4,7 @@ class CfgWeapons class Rifle_Base_F; class RH_PDW: Rifle_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.254; }; }; diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp index a6c9416f1e..d557111b6f 100644 --- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp @@ -4,57 +4,57 @@ class CfgWeapons class hgun_Rook40_F; class rhs_weap_pya: hgun_Rook40_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.11176; }; class Pistol_Base_F; class rhs_weap_makarov_pmm: rhs_weap_pya { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.093472; }; class rhs_weap_ak74m_Base_F; class rhs_weap_ak74m: rhs_weap_ak74m_Base_F { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class rhs_weap_akm: rhs_weap_ak74m { - ACE_barrelTwist=0.199898; + ACE_barrelTwist=199.898; ACE_barrelLength=0.41402; }; class rhs_weap_aks74; class rhs_weap_aks74u: rhs_weap_aks74 { - ACE_barrelTwist=0.16002; + ACE_barrelTwist=160.02; ACE_barrelLength=0.21082; }; class rhs_weap_svd: rhs_weap_ak74m { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.61976; }; class rhs_weap_svdp; class rhs_weap_svds: rhs_weap_svdp { - ACE_barrelTwist=0.23876; + ACE_barrelTwist=238.76; ACE_barrelLength=0.56388; }; class rhs_pkp_base; class rhs_weap_pkp: rhs_pkp_base { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.65786; }; class rhs_weap_pkm: rhs_weap_pkp { - ACE_barrelTwist=0.24003; + ACE_barrelTwist=240.03; ACE_barrelLength=0.64516; }; class rhs_weap_rpk74m: rhs_weap_pkp { - ACE_barrelTwist=0.195072; + ACE_barrelTwist=195.072; ACE_barrelLength=0.58928; }; diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index e531676a24..36968ce6c7 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -6,51 +6,51 @@ class CfgWeapons class srifle_EBR_F; class rhs_weap_XM2010_Base_F: Rifle_Base_F { - ACE_barrelTwist=0.254; + ACE_barrelTwist=254.0; ACE_barrelLength=0.6096; }; class arifle_MX_Base_F; class rhs_weap_m4_Base: arifle_MX_Base_F { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.3683; }; class rhs_weap_m4a1; class rhs_weap_mk18: rhs_weap_m4a1 { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.26162; }; class rhs_weap_m16a4: rhs_weap_m4_Base { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.508; }; class rhs_M249_base; class rhs_weap_m249_pip: rhs_M249_base { - ACE_barrelTwist=0.1778; + ACE_barrelTwist=177.8; ACE_barrelLength=0.41402; }; class weap_m240_base; class rhs_weap_m240B: weap_m240_base { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.62992; }; class rhs_weap_m14ebrri: srifle_EBR_F { - ACE_barrelTwist=0.3048; + ACE_barrelTwist=304.8; ACE_barrelLength=0.5588; }; class rhs_weap_sr25: rhs_weap_m14ebrri { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.6096; }; class rhs_weap_sr25_ec: rhs_weap_sr25 { - ACE_barrelTwist=0.28575; + ACE_barrelTwist=285.75; ACE_barrelLength=0.508; }; class rhs_weap_M590_5RD: Rifle_Base_F @@ -68,7 +68,7 @@ class CfgWeapons class hgun_ACPC2_F; class rhsusf_weap_m1911a1: hgun_ACPC2_F { - ACE_barrelTwist=0.4064; + ACE_barrelTwist=406.4; ACE_barrelLength=0.127; }; From 5e33176b5203d181ebe8847db55dc9b5f1821ba9 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 12:47:45 +0200 Subject: [PATCH 0059/1101] Convert ACE_barrelLength(s) to millimeters --- addons/ballistics/CfgAmmo.hpp | 92 +-- addons/ballistics/CfgWeapons.hpp | 82 +- extras/CfgAmmoReference.hpp | 412 +++++----- extras/CfgWeaponsReference.hpp | 738 +++++++++--------- optionals/compat_cup/CfgAmmo.hpp | 64 +- optionals/compat_hlc_ar15/CfgWeapons.hpp | 24 +- optionals/compat_hlc_wp_mp5/CfgWeapons.hpp | 22 +- optionals/compat_hlcmods_ak/CfgWeapons.hpp | 20 +- optionals/compat_hlcmods_aug/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_core/CfgAmmo.hpp | 46 +- optionals/compat_hlcmods_fal/CfgWeapons.hpp | 18 +- optionals/compat_hlcmods_g3/CfgWeapons.hpp | 16 +- optionals/compat_hlcmods_m14/CfgWeapons.hpp | 4 +- optionals/compat_hlcmods_m60e4/CfgWeapons.hpp | 4 +- optionals/compat_rh_de/CfgAmmo.hpp | 24 +- optionals/compat_rh_de/CfgWeapons.hpp | 54 +- optionals/compat_rh_m4/CfgAmmo.hpp | 30 +- optionals/compat_rh_m4/CfgWeapons.hpp | 50 +- optionals/compat_rh_pdw/CfgAmmo.hpp | 2 +- optionals/compat_rh_pdw/CfgWeapons.hpp | 2 +- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 18 +- optionals/compat_rhs_afrf3/CfgWeapons.hpp | 20 +- optionals/compat_rhs_usf3/CfgAmmo.hpp | 14 +- optionals/compat_rhs_usf3/CfgWeapons.hpp | 24 +- 24 files changed, 899 insertions(+), 899 deletions(-) diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index f4e954017a..59fa7cf621 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -34,7 +34,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class ACE_556x45_Ball_Mk262 : B_556x45_Ball { airFriction=-0.001125; @@ -51,7 +51,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class ACE_556x45_Ball_Mk318 : B_556x45_Ball { airFriction=-0.001120; @@ -68,7 +68,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class ACE_556x45_Ball_M995_AP : B_556x45_Ball { airFriction=-0.001120; @@ -85,7 +85,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={950, 1030, 1040}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class B_556x45_Ball_Tracer_Red; class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red { @@ -106,7 +106,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_556x45_Ball_Tracer_Green; class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green { @@ -126,7 +126,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_65x39_Caseless : BulletBase { airFriction=-0.000785; @@ -140,7 +140,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 788, 800, 810, 830}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604, 0.762}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4, 762.0}; }; class B_65x39_Case_yellow; class ACE_65x39_Caseless_Tracer_Dim : B_65x39_Case_yellow { @@ -163,7 +163,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 790, 820, 830}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class ACE_65_Creedmor_Ball: B_65x39_Caseless { airFriction=-0.000651; @@ -178,7 +178,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 820, 840, 852, 860}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class B_762x51_Ball : BulletBase { airFriction=-0.001035; @@ -195,7 +195,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class B_762x51_Tracer_Yellow; class ACE_B_762x51_Tracer_Dim: B_762x51_Tracer_Yellow { @@ -215,7 +215,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball { airFriction=-0.0008525; @@ -231,7 +231,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={775, 790, 805, 810}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball { airFriction=-0.00103; @@ -247,7 +247,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 910}; - ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; + ACE_barrelLengths[]={330.2, 406.4, 508.0}; }; class ACE_762x51_Ball_M993_AP : B_762x51_Ball { airFriction=-0.00103; @@ -263,7 +263,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={875, 910, 930}; - ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; + ACE_barrelLengths[]={330.2, 406.4, 508.0}; }; class ACE_762x51_Ball_Subsonic : B_762x51_Ball { airFriction=-0.000535; @@ -279,7 +279,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_30_06_M1_Ball : B_762x51_Ball { airFriction=-0.0009; @@ -295,7 +295,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 785, 800, 830, 840}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class ACE_7_Remington_Magnum_Ball : B_762x51_Ball { airFriction=-0.0008; @@ -311,7 +311,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={720, 780, 812, 822, 830}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class ACE_243_Winchester_Ball : B_762x51_Ball { airFriction=-0.00095; @@ -327,7 +327,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={830, 875, 900, 915, 920}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { airFriction=-0.000830; @@ -343,7 +343,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={865, 900, 924}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { airFriction=-0.000815; @@ -359,7 +359,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { airFriction=-0.00076; @@ -375,7 +375,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 853, 884}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; @@ -389,7 +389,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x54_Ball_7N14 : B_762x51_Ball { airFriction=-0.001023; @@ -405,7 +405,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class B_762x54_Tracer_Green; class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green { @@ -424,7 +424,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x35_Ball : B_762x51_Ball { airFriction=-0.000821; @@ -440,7 +440,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={620, 655, 675}; - ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; + ACE_barrelLengths[]={228.6, 406.4, 508.0}; }; class ACE_762x39_Ball : B_762x51_Ball { airFriction=-0.0015168; @@ -456,7 +456,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green { airFriction=-0.0015168; @@ -474,7 +474,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_9x21_Ball : BulletBase { airFriction=-0.00125; @@ -489,7 +489,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={440, 460, 480}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class ACE_9x18_Ball_57N181S : B_9x21_Ball { hit=5; @@ -504,7 +504,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class ACE_9x19_Ball : B_9x21_Ball { airFriction=-0.001234; @@ -519,7 +519,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class ACE_10x25_Ball : B_9x21_Ball { airFriction=-0.00168; @@ -534,7 +534,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; + ACE_barrelLengths[]={101.6, 117.094, 228.6}; }; class ACE_765x17_Ball: B_9x21_Ball { airFriction=-0.001213; @@ -549,7 +549,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class ACE_303_Ball : ACE_762x51_Ball_M118LR { airFriction=-0.00083; @@ -564,7 +564,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_93x64_Ball : BulletBase { airFriction=-0.00106; @@ -578,7 +578,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={850, 870, 880}; - ACE_barrelLengths[]={0.508, 0.620014, 0.6604}; + ACE_barrelLengths[]={508.0, 620.014, 660.4}; }; class B_408_Ball : BulletBase { timeToLive=10; @@ -594,7 +594,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={910}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; @@ -607,7 +607,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={960}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class B_338_Ball : BulletBase { timeToLive=10; @@ -622,7 +622,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; + ACE_barrelLengths[]={508.0, 660.4, 711.2}; }; class B_338_NM_Ball : BulletBase { airFriction=-0.000537; @@ -636,7 +636,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={790, 807, 820}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class ACE_338_Ball : B_338_Ball { timeToLive=10; @@ -651,7 +651,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 820, 826, 830}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6731, 0.7112}; + ACE_barrelLengths[]={508.0, 609.6, 673.1, 711.2}; }; class ACE_338_Ball_API526 : B_338_Ball { timeToLive=10; @@ -667,7 +667,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; + ACE_barrelLengths[]={508.0, 660.4, 711.2}; }; class B_127x54_Ball : BulletBase { airFriction=-0.00014; @@ -681,7 +681,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={300}; - ACE_barrelLengths[]={0.43688}; + ACE_barrelLengths[]={436.88}; }; class B_127x99_Ball : BulletBase { timeToLive=10; @@ -696,7 +696,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={900}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class ACE_127x99_API : BulletBase { timeToLive=10; @@ -713,7 +713,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={900}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class ACE_127x99_Ball_AMAX : B_127x99_Ball { timeToLive=10; @@ -729,7 +729,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={860}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class B_127x108_Ball : BulletBase { timeToLive=10; @@ -744,7 +744,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; @@ -758,6 +758,6 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; }; diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 7394cda002..34c18a90dd 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -66,7 +66,7 @@ class CfgWeapons { }; initSpeed = -1.0; ACE_barrelTwist=228.6; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { // Shit is broken again @@ -93,7 +93,7 @@ class CfgWeapons { }; initSpeed = -1.018; ACE_barrelTwist=228.6; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; class Single: Single { dispersion = 0.00029; // radians. Equal to 1 MOA. // 6.5mm is easily capable of this in a half-tuned rifle. @@ -138,7 +138,7 @@ class CfgWeapons { }; }; ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; class manual: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. }; @@ -155,7 +155,7 @@ class CfgWeapons { }; }; ACE_barrelTwist=304.8; - ACE_barrelLength=0.45974; + ACE_barrelLength=459.74; class FullAuto: Mode_FullAuto { dispersion = 0.00175; // radians. Equal to 6 MOA. }; @@ -242,7 +242,7 @@ class CfgWeapons { class hgun_P07_F: Pistol_Base_F { initSpeed = -0.9778; ACE_barrelTwist=254.0; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; @@ -254,7 +254,7 @@ class CfgWeapons { class hgun_Rook40_F: Pistol_Base_F { initSpeed = -1.0; ACE_barrelTwist=254.0; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE"; @@ -266,7 +266,7 @@ class CfgWeapons { class hgun_ACPC2_F: Pistol_Base_F { initSpeed = -1.0; ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; @@ -277,7 +277,7 @@ class CfgWeapons { class hgun_Pistol_heavy_01_F: Pistol_Base_F { initSpeed = -0.96; ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { compatibleItems[] += {"ACE_muzzle_mzls_smg_01"}; @@ -288,7 +288,7 @@ class CfgWeapons { class hgun_Pistol_heavy_02_F: Pistol_Base_F { initSpeed = -0.92; ACE_barrelTwist=406.4; - ACE_barrelLength=0.0762; + ACE_barrelLength=76.2; /* class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot { @@ -301,7 +301,7 @@ class CfgWeapons { class hgun_PDW2000_F: pdw2000_base_F { initSpeed = -1.157; ACE_barrelTwist=228.6; - ACE_barrelLength=0.1778; + ACE_barrelLength=177.8; }; class arifle_Katiba_F: arifle_katiba_Base_F { magazines[] = { @@ -311,7 +311,7 @@ class CfgWeapons { }; initSpeed = -1.08; ACE_barrelTwist=203.2; - ACE_barrelLength=0.72898; + ACE_barrelLength=728.98; }; class arifle_Katiba_C_F: arifle_katiba_Base_F { magazines[] = { @@ -321,7 +321,7 @@ class CfgWeapons { }; initSpeed = -1.07; ACE_barrelTwist=203.2; - ACE_barrelLength=0.68072; + ACE_barrelLength=680.72; }; class arifle_Katiba_GL_F: arifle_katiba_Base_F { magazines[] = { @@ -331,7 +331,7 @@ class CfgWeapons { }; initSpeed = -1.08; ACE_barrelTwist=203.2; - ACE_barrelLength=0.72898; + ACE_barrelLength=728.98; }; class arifle_MX_F: arifle_MX_Base_F { magazines[] = { @@ -341,7 +341,7 @@ class CfgWeapons { }; initSpeed = -0.99; ACE_barrelTwist=228.6; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class arifle_MX_GL_F: arifle_MX_Base_F { magazines[] = { @@ -351,12 +351,12 @@ class CfgWeapons { }; initSpeed = -0.99; ACE_barrelTwist=228.6; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; /* class arifle_MX_SW_F: arifle_MX_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; */ class arifle_MXC_F: arifle_MX_Base_F { @@ -367,12 +367,12 @@ class CfgWeapons { }; initSpeed = -0.965; ACE_barrelTwist=203.2; - ACE_barrelLength=0.2667; + ACE_barrelLength=266.7; }; /* class arifle_MXM_F: arifle_MX_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; */ class arifle_SDAR_F: SDAR_base_F { @@ -389,12 +389,12 @@ class CfgWeapons { }; initSpeed = -0.989; ACE_barrelTwist=285.75; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class SMG_02_F: SMG_02_base_F { initSpeed = -1.054; ACE_barrelTwist=254.0; - ACE_barrelLength=0.19558; + ACE_barrelLength=195.58; }; class arifle_TRG20_F: Tavor_base_F { magazines[] = { @@ -409,7 +409,7 @@ class CfgWeapons { }; initSpeed = -0.95; ACE_barrelTwist=177.8; - ACE_barrelLength=0.381; + ACE_barrelLength=381.0; }; class arifle_TRG21_F: Tavor_base_F { magazines[] = { @@ -424,7 +424,7 @@ class CfgWeapons { }; initSpeed = -0.989; ACE_barrelTwist=177.8; - ACE_barrelLength=0.45974; + ACE_barrelLength=459.74; }; class arifle_TRG21_GL_F: arifle_TRG21_F { magazines[] = { @@ -439,12 +439,12 @@ class CfgWeapons { }; initSpeed = -0.989; ACE_barrelTwist=177.8; - ACE_barrelLength=0.45974; + ACE_barrelLength=459.74; }; /* class LMG_Zafir_F: Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.45974; + ACE_barrelLength=459.74; }; */ class arifle_Mk20_F: mk20_base_F { @@ -460,7 +460,7 @@ class CfgWeapons { }; initSpeed = -0.98; ACE_barrelTwist=177.8; - ACE_barrelLength=0.44196; + ACE_barrelLength=441.96; }; class arifle_Mk20C_F: mk20_base_F { magazines[] = { @@ -475,7 +475,7 @@ class CfgWeapons { }; initSpeed = -0.956; ACE_barrelTwist=177.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class arifle_Mk20_GL_F: mk20_base_F { magazines[] = { @@ -490,12 +490,12 @@ class CfgWeapons { }; initSpeed = -0.956; ACE_barrelTwist=177.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class SMG_01_F: SMG_01_Base { initSpeed = -1.016; ACE_barrelTwist=406.4; - ACE_barrelLength=0.1397; + ACE_barrelLength=139.7; }; class srifle_DMR_01_F: DMR_01_base_F { magazines[] = { @@ -504,7 +504,7 @@ class CfgWeapons { }; initSpeed = -1.025; ACE_barrelTwist=241.3; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class srifle_EBR_F: EBR_base_F { magazines[] = { @@ -519,19 +519,19 @@ class CfgWeapons { }; initSpeed = -0.9724; ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; /* class LMG_Mk200_F: Rifle_Long_Base_F { initSpeed = -1.0; ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; */ class srifle_LRR_F: LRR_base_F { initSpeed = -1.0; ACE_barrelTwist=330.2; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class srifle_GM6_F: GM6_base_F { magazines[] = { @@ -543,7 +543,7 @@ class CfgWeapons { }; initSpeed = -1.0; ACE_barrelTwist=381.0; - ACE_barrelLength=0.92964; + ACE_barrelLength=929.64; }; class srifle_DMR_02_F: DMR_02_base_F { magazines[] = { @@ -556,7 +556,7 @@ class CfgWeapons { }; initSpeed = -0.962; ACE_barrelTwist=254.0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class srifle_DMR_03_F: DMR_03_base_F { magazines[] = { @@ -571,17 +571,17 @@ class CfgWeapons { }; initSpeed = -0.9843; ACE_barrelTwist=254.0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class srifle_DMR_04_F: DMR_04_base_F { initSpeed = -1.0; ACE_barrelTwist=203.2; - ACE_barrelLength=0.450088; + ACE_barrelLength=450.088; }; class srifle_DMR_05_blk_F: DMR_05_base_F { initSpeed = -1.0; ACE_barrelTwist=359.918; - ACE_barrelLength=0.620014; + ACE_barrelLength=620.014; }; class srifle_DMR_06_camo_F: DMR_06_base_F { magazines[] = { @@ -596,17 +596,17 @@ class CfgWeapons { }; initSpeed = -0.9916; ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class MMG_01_hex_F: MMG_01_base_F { initSpeed = -1.0; ACE_barrelTwist=359.918; - ACE_barrelLength=0.54991; + ACE_barrelLength=549.91; }; class MMG_02_camo_F: MMG_02_base_F { initSpeed = -1.0; ACE_barrelTwist=234.95; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class HMG_127 : LMG_RCWS { @@ -616,7 +616,7 @@ class CfgWeapons { class HMG_M2: HMG_01 { initSpeed = -1.0; ACE_barrelTwist=304.8; - ACE_barrelLength=1.143; + ACE_barrelLength=1143.0; }; /* Silencers */ diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp index 3072d1d196..5c0ef9e3f2 100644 --- a/extras/CfgAmmoReference.hpp +++ b/extras/CfgAmmoReference.hpp @@ -14,7 +14,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class ACE_556x45_Ball_Mk262 : B_556x45_Ball { airFriction=-0.001125; @@ -31,7 +31,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class ACE_556x45_Ball_Mk318 : B_556x45_Ball { airFriction=-0.001120; @@ -48,7 +48,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class B_556x45_Ball_Tracer_Red; class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red { @@ -69,7 +69,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_556x45_Ball_Tracer_Yellow; class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Yellow { @@ -87,7 +87,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_65x39_Caseless : BulletBase { airFriction=-0.000785; @@ -101,7 +101,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 788, 800, 810, 830}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604, 0.762}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4, 762.0}; }; class B_65x39_Case_yellow; class ACE_65x39_Caseless_Tracer_Dim : B_65x39_Case_yellow { @@ -124,7 +124,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={730, 760, 790, 820, 830}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class B_762x51_Ball : BulletBase { airFriction=-0.001035; @@ -139,7 +139,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class B_762x51_Tracer_Yellow; class ACE_B_762x51_Tracer_Dim: B_762x51_Tracer_Yellow { @@ -159,7 +159,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball { airFriction=-0.00103; @@ -175,7 +175,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 910}; - ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; + ACE_barrelLengths[]={330.2, 406.4, 508.0}; }; class ACE_762x51_Ball_Subsonic : B_762x51_Ball { airFriction=-0.000535; @@ -191,7 +191,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { airFriction=-0.000830; @@ -207,7 +207,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={865, 900, 924}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { airFriction=-0.000815; @@ -223,7 +223,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { airFriction=-0.00076; @@ -239,7 +239,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 853, 884}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; @@ -253,7 +253,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x54_Ball_7N14 : B_762x51_Ball { airFriction=-0.001023; @@ -269,7 +269,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class B_762x54_Tracer_Green; class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green { @@ -286,7 +286,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class ACE_762x35_Ball : B_762x51_Ball { airFriction=-0.000821; @@ -302,7 +302,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={620, 655, 675}; - ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; + ACE_barrelLengths[]={228.6, 406.4, 508.0}; }; class ACE_762x39_Ball : B_762x51_Ball { airFriction=-0.0015168; @@ -317,7 +317,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class ACE_762x39_Ball_57N231P : B_762x51_Tracer_Yellow { airFriction=-0.0015168; @@ -332,7 +332,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_9x21_Ball : BulletBase { airFriction=-0.00125; @@ -347,7 +347,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={440, 460, 480}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class ACE_9x18_Ball_57N181S : B_9x21_Ball { hit=5; @@ -362,7 +362,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class ACE_9x19_Ball : B_9x21_Ball { airFriction=-0.001234; @@ -377,7 +377,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class ACE_10x25_Ball : B_9x21_Ball { airFriction=-0.00168; @@ -392,7 +392,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; + ACE_barrelLengths[]={101.6, 117.094, 228.6}; }; class ACE_765x17_Ball: B_9x21_Ball { airFriction=-0.001213; @@ -407,7 +407,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class ACE_303_Ball : ACE_762x51_Ball_M118LR { airFriction=-0.00083; @@ -421,7 +421,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_93x64_Ball : BulletBase { airFriction=-0.00106; @@ -436,7 +436,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={850, 870, 880}; - ACE_barrelLengths[]={0.508, 0.620014, 0.6604}; + ACE_barrelLengths[]={508.0, 620.014, 660.4}; }; class B_408_Ball : BulletBase { timeToLive=10; @@ -452,7 +452,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={910}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class ACE_106x83mm_Ball : B_408_Ball { timeToLive=10; @@ -465,7 +465,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={960}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class B_338_Ball : BulletBase { timeToLive=10; @@ -480,7 +480,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; + ACE_barrelLengths[]={508.0, 660.4, 711.2}; }; class B_338_NM_Ball : BulletBase { airFriction=-0.000537; @@ -494,7 +494,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={790, 807, 820}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class ACE_338_Ball : B_338_Ball { timeToLive=10; @@ -510,7 +510,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 820, 826, 830}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6731, 0.7112}; + ACE_barrelLengths[]={508.0, 609.6, 673.1, 711.2}; }; class ACE_338_Ball_API526 : B_338_Ball { timeToLive=10; @@ -526,7 +526,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={0.508, 0.6604, 0.7112}; + ACE_barrelLengths[]={508.0, 660.4, 711.2}; }; class B_127x54_Ball : BulletBase { airFriction=-0.00014; @@ -540,7 +540,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={300}; - ACE_barrelLengths[]={0.43688}; + ACE_barrelLengths[]={436.88}; }; class B_127x99_Ball : BulletBase { timeToLive=10; @@ -555,7 +555,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class ACE_127x99_Ball_AMAX : B_127x99_Ball { timeToLive=10; @@ -570,7 +570,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={860}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class B_127x108_Ball : BulletBase { timeToLive=10; @@ -585,7 +585,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class B_45ACP_Ball : BulletBase { airFriction=-0.0007182; @@ -599,7 +599,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class TMR_B_762x51_M118LR : B_762x51_Ball @@ -613,7 +613,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class RH_50_AE_Ball: BulletBase @@ -627,7 +627,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 398, 420}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_454_Casull: BulletBase { @@ -640,7 +640,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={450, 490, 500}; - ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; + ACE_barrelLengths[]={101.6, 190.5, 228.6}; }; class RH_32ACP: BulletBase { @@ -653,7 +653,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_45ACP: BulletBase { @@ -666,7 +666,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_B_40SW: BulletBase { @@ -679,7 +679,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_44mag_ball: BulletBase { @@ -692,7 +692,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 390, 420}; - ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; + ACE_barrelLengths[]={101.6, 190.5, 228.6}; }; class RH_357mag_ball: BulletBase { @@ -705,7 +705,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={490, 510, 535}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_762x25: BulletBase { @@ -718,7 +718,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_9x18_Ball: BulletBase { @@ -731,7 +731,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class RH_B_9x19_Ball: BulletBase { @@ -744,7 +744,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_B_22LR_SD: BulletBase { @@ -757,7 +757,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={330, 340, 360}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_57x28mm: BulletBase { @@ -770,7 +770,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={550, 625, 720}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.26289}; + ACE_barrelLengths[]={101.6, 152.4, 262.89}; }; class RH_9x19_B_M822: BulletBase @@ -784,7 +784,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_9x19_B_HP: BulletBase { @@ -797,7 +797,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_9x19_B_HPSB: BulletBase { @@ -810,7 +810,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={295, 310, 330}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_B_6x35: BulletBase { @@ -823,7 +823,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={730, 750, 760}; - ACE_barrelLengths[]={0.2032, 0.254, 0.3048}; + ACE_barrelLengths[]={203.2, 254.0, 304.8}; }; class RH_556x45_B_M855A1 : B_556x45_Ball { @@ -836,7 +836,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class RH_556x45_B_Mk262 : B_556x45_Ball { @@ -849,7 +849,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class RH_556x45_B_Mk318 : B_556x45_Ball { @@ -862,7 +862,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class RH_68x43_B_FMJ: B_65x39_Caseless { @@ -875,7 +875,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={713, 785, 810, 850}; - ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; + ACE_barrelLengths[]={304.8, 406.4, 508.0, 609.6}; }; class RH_68x43_B_Match: B_65x39_Caseless { @@ -888,7 +888,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 732, 750, 780}; - ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; + ACE_barrelLengths[]={304.8, 406.4, 508.0, 609.6}; }; class RH_762x35_B_FMJ: B_65x39_Caseless { @@ -901,7 +901,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; + ACE_barrelLengths[]={152.4, 406.4, 508.0}; }; class RH_762x35_B_Match: B_65x39_Caseless { @@ -914,7 +914,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={590, 650, 665}; - ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; + ACE_barrelLengths[]={152.4, 406.4, 508.0}; }; class RH_762x35_B_MSB: B_65x39_Caseless { @@ -927,7 +927,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; + ACE_barrelLengths[]={228.6, 406.4, 508.0}; }; class RH_762x51_B_M80A1 : B_762x51_Ball { @@ -940,7 +940,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class RH_762x51_B_Mk316LR : B_762x51_Ball { @@ -953,7 +953,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class RH_762x51_B_Mk319 : B_762x51_Ball { @@ -966,7 +966,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 920}; - ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; + ACE_barrelLengths[]={330.2, 406.4, 508.0}; }; class RH_762x51_B_LFMJSB: B_762x51_Ball { @@ -979,7 +979,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_556NATO_SOST: BulletBase @@ -993,7 +993,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class HLC_556NATO_SPR: BulletBase { @@ -1006,7 +1006,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class HLC_556NATO_EPR: BulletBase { @@ -1019,7 +1019,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class HLC_300Blackout_Ball: BulletBase { @@ -1032,7 +1032,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; + ACE_barrelLengths[]={152.4, 406.4, 508.0}; }; class HLC_300Blackout_SMK: BulletBase { @@ -1045,7 +1045,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; + ACE_barrelLengths[]={228.6, 406.4, 508.0}; }; class HLC_762x51_BTSub: BulletBase { @@ -1058,7 +1058,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_762x54_ball: BulletBase { @@ -1071,7 +1071,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_762x54_tracer: BulletBase { @@ -1084,7 +1084,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_303Brit_B: BulletBase { @@ -1097,7 +1097,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class HLC_792x57_Ball: BulletBase { @@ -1110,7 +1110,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={785, 800, 815}; - ACE_barrelLengths[]={0.508, 0.599948, 0.6604}; + ACE_barrelLengths[]={508.0, 599.948, 660.4}; }; class FH_545x39_Ball: BulletBase { @@ -1123,14 +1123,14 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class FH_545x39_7u1: FH_545x39_Ball { ACE_bulletMass=5.184; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_muzzleVelocities[]={260, 303, 320}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class HLC_9x19_Ball: BulletBase { @@ -1143,7 +1143,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class HLC_9x19_GoldDot: HLC_9x19_Ball { @@ -1164,7 +1164,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; + ACE_barrelLengths[]={101.6, 117.094, 228.6}; }; class HLC_9x19_M882_SMG: HLC_9x19_Ball { @@ -1177,7 +1177,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class M_mas_545x39_Ball_7N6M : BulletBase @@ -1191,7 +1191,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class M_mas_545x39_Ball_7T3M : BulletBase { @@ -1204,7 +1204,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_mas_556x45_Ball_Mk262 : B_556x45_Ball { @@ -1217,7 +1217,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class B_mas_9x18_Ball_57N181S : BulletBase { @@ -1230,7 +1230,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class B_mas_9x21p_Ball: BulletBase { @@ -1243,7 +1243,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class B_mas_9x21_Ball: BulletBase { @@ -1256,7 +1256,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class B_mas_9x21d_Ball: BulletBase { @@ -1269,7 +1269,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={210, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class B_mas_765x17_Ball: BulletBase { @@ -1282,7 +1282,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class B_mas_762x39_Ball: BulletBase { @@ -1295,7 +1295,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_mas_762x39_Ball_T: BulletBase { @@ -1308,7 +1308,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_mas_762x51_Ball_M118LR : B_762x51_Ball { @@ -1321,7 +1321,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class B_mas_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { @@ -1334,7 +1334,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={865, 900, 924}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_mas_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { @@ -1347,7 +1347,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 867, 900}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_mas_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { @@ -1360,7 +1360,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={800, 853, 884}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_mas_762x54_Ball : BulletBase { @@ -1373,7 +1373,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class B_mas_762x54_Ball_T : BulletBase { @@ -1386,7 +1386,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class BWA3_B_762x51_Ball_LR : BulletBase { @@ -1399,7 +1399,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class BWA3_B_762x51_Ball_SD : BulletBase { @@ -1412,7 +1412,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={300, 340}; - ACE_barrelLengths[]={0.4064, 0.6096}; + ACE_barrelLengths[]={406.4, 609.6}; }; class BWA3_B_46x30_Ball : BulletBase @@ -1426,7 +1426,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 720, 730, 740}; - ACE_barrelLengths[]={0.1016, 0.1778, 0.2286, 0.3048}; + ACE_barrelLengths[]={101.6, 177.8, 228.6, 304.8}; }; class Trixie_338_Ball : BulletBase @@ -1440,7 +1440,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; - ACE_barrelLengths[]={0.6096, 0.6731, 0.7112}; + ACE_barrelLengths[]={609.6, 673.1, 711.2}; }; class Trixie_303_Ball : BulletBase { @@ -1453,7 +1453,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class rhs_ammo_556x45_Mk318_Ball : BulletBase @@ -1467,7 +1467,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class rhs_ammo_556x45_Mk262_Ball : BulletBase { @@ -1480,7 +1480,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class rhsammo_762x51_Ball : BulletBase { @@ -1493,7 +1493,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class rhs_B_545x39_Ball : BulletBase { @@ -1506,7 +1506,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class rhs_B_545x39_Ball_Tracer_Green : BulletBase { @@ -1519,7 +1519,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class rhs_ammo_762x51_M118_Special_Ball : BulletBase { @@ -1532,7 +1532,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class rhs_B_762x54_Ball : BulletBase { @@ -1545,7 +1545,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class rhs_B_762x54_Ball_Tracer_Green : BulletBase { @@ -1558,7 +1558,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class rhs_B_762x39_Ball : BulletBase { @@ -1571,7 +1571,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class rhs_B_762x39_Tracer : BulletBase { @@ -1584,7 +1584,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class rhs_ammo_762x51_M80_Ball : BulletBase { @@ -1597,7 +1597,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class rhsusf_B_300winmag : BulletBase { @@ -1610,7 +1610,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class R3F_9x19_Ball: BulletBase @@ -1624,7 +1624,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class R3F_556x45_Ball: BulletBase { @@ -1637,7 +1637,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class R3F_762x51_Ball: BulletBase { @@ -1650,7 +1650,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class R3F_762x51_Ball2: BulletBase { @@ -1663,7 +1663,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class R3F_127x99_Ball: BulletBase { @@ -1676,7 +1676,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class R3F_127x99_Ball2: BulletBase { @@ -1689,7 +1689,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class CUP_B_545x39_Ball: BulletBase @@ -1703,7 +1703,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Green: BulletBase { @@ -1716,7 +1716,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { @@ -1729,7 +1729,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { @@ -1742,7 +1742,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { @@ -1755,7 +1755,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x39_Ball: BulletBase { @@ -1768,7 +1768,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { @@ -1781,7 +1781,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_762x39mm_KLT: BulletBase { @@ -1794,7 +1794,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_9x18_Ball: BulletBase { @@ -1807,7 +1807,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { @@ -1820,7 +1820,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { @@ -1833,7 +1833,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { @@ -1846,7 +1846,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { @@ -1859,7 +1859,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x19_Ball: BulletBase { @@ -1872,7 +1872,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class CUP_B_762x51_noTracer: BulletBase { @@ -1885,7 +1885,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Red_Tracer_3RndBurst: BulletBase { @@ -1898,7 +1898,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_White_Tracer_3RndBurst: BulletBase { @@ -1911,7 +1911,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_303_Ball: BulletBase { @@ -1924,7 +1924,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { @@ -1937,7 +1937,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { @@ -1950,7 +1950,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { @@ -1963,7 +1963,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { @@ -1976,7 +1976,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { @@ -1989,7 +1989,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { @@ -2002,7 +2002,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_9x39_SP5: BulletBase { @@ -2015,7 +2015,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x51_Tracer_Green: BulletBase { @@ -2028,7 +2028,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_Red: BulletBase { @@ -2041,7 +2041,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_Yellow: BulletBase { @@ -2054,7 +2054,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_White: BulletBase { @@ -2067,7 +2067,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class B_127x107_Ball: BulletBase { @@ -2080,7 +2080,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class CUP_B_9x18_SD: BulletBase { @@ -2093,7 +2093,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 340}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_765x17_Ball: BulletBase { @@ -2106,7 +2106,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { @@ -2119,7 +2119,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; - ACE_barrelLengths[]={1.3462}; + ACE_barrelLengths[]={1346.2}; }; class CUP_B_127x99_Ball_White_Tracer: BulletBase { @@ -2132,7 +2132,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class CUP_B_86x70_Ball_noTracer: BulletBase { @@ -2145,7 +2145,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; - ACE_barrelLengths[]={0.6096, 0.6731, 0.7112}; + ACE_barrelLengths[]={609.6, 673.1, 711.2}; }; class VTN_9x18_Ball_FMJ: B_9x21_Ball @@ -2159,7 +2159,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class VTN_9x18_Ball_SC: VTN_9x18_Ball_FMJ { @@ -2172,7 +2172,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class VTN_9x18_Ball_TRC: VTN_9x18_Ball_FMJ { @@ -2185,7 +2185,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class VTN_9x18_Ball_AP1: VTN_9x18_Ball_FMJ { @@ -2198,7 +2198,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class VTN_9x18_Ball_AP2: VTN_9x18_Ball_FMJ { @@ -2211,7 +2211,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class VTN_9x18_Ball_PRS: VTN_9x18_Ball_FMJ { @@ -2224,7 +2224,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class VTN_9x19_Ball_SC: VTN_9x18_Ball_FMJ { @@ -2237,7 +2237,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_9x19_Ball_TRC: VTN_9x19_Ball_SC { @@ -2250,7 +2250,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_9x19_Ball_AP: VTN_9x19_Ball_SC { @@ -2263,7 +2263,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_9x19_Ball_PRS: VTN_9x19_Ball_SC { @@ -2276,7 +2276,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_9x39_Ball_SC: B_9x21_Ball { @@ -2289,7 +2289,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_9x39_Ball_AP: VTN_9x39_Ball_SC { @@ -2302,7 +2302,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_545x39_Ball_SC: B_556x45_Ball { @@ -2315,7 +2315,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_545x39_Ball_TRC: VTN_545x39_Ball_SC { @@ -2328,7 +2328,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_545x39_Ball_AP: VTN_545x39_Ball_TRC { @@ -2341,7 +2341,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_545x39_Ball_AP2: VTN_545x39_Ball_AP { @@ -2354,7 +2354,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_545x39_Ball_SS: VTN_545x39_Ball_SC { @@ -2367,7 +2367,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_762x39_Ball_SC: B_762x51_Ball { @@ -2380,7 +2380,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_762x39_Ball_TRC: VTN_762x39_Ball_SC { @@ -2393,7 +2393,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_762x39_Ball_AP: VTN_762x39_Ball_TRC { @@ -2406,7 +2406,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_762x39_Ball_INC: VTN_762x39_Ball_AP { @@ -2419,7 +2419,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_762x39_Ball_API: VTN_762x39_Ball_INC { @@ -2432,7 +2432,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_762x39_Ball_SS: VTN_762x39_Ball_SC { @@ -2445,7 +2445,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_762x41_Ball_SS: B_762x51_Ball { @@ -2458,7 +2458,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={200, 210, 220}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2032}; + ACE_barrelLengths[]={101.6, 152.4, 203.2}; }; class VTN_762x54_Ball_SC: VTN_762x39_Ball_SC { @@ -2471,7 +2471,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class VTN_762x54_Ball_TRC: VTN_762x54_Ball_SC { @@ -2484,7 +2484,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class VTN_762x54_Ball_AP: VTN_762x54_Ball_TRC { @@ -2497,7 +2497,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class VTN_762x54_Ball_INC: VTN_762x54_Ball_AP { @@ -2510,7 +2510,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class VTN_762x54_Ball_API: VTN_762x54_Ball_INC { @@ -2523,7 +2523,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class VTN_145x114_Ball_APT: B_127x108_Ball { @@ -2536,7 +2536,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; - ACE_barrelLengths[]={1.3462}; + ACE_barrelLengths[]={1346.2}; }; class VTN_6mm_BB: B_65x39_Caseless { @@ -2549,7 +2549,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={100}; - ACE_barrelLengths[]={0.381}; + ACE_barrelLengths[]={381.0}; }; class VTN_9x19_Ball_FMJ: B_9x21_Ball { @@ -2562,7 +2562,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_556x45_Ball_FMJ: B_556x45_Ball { @@ -2575,7 +2575,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class VTN_556x45_Ball_TRC: VTN_556x45_Ball_FMJ { @@ -2588,7 +2588,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class VTN_556x45_Ball_TRCN: VTN_556x45_Ball_TRC { @@ -2601,7 +2601,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class VTN_556x45_Ball_SC: VTN_556x45_Ball_FMJ { @@ -2614,7 +2614,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class VTN_556x45_Ball_AP: VTN_556x45_Ball_TRC { @@ -2627,7 +2627,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class VTN_556x45_Ball_INC: VTN_556x45_Ball_AP { @@ -2640,7 +2640,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class VTN_556x45_Ball_LR: VTN_556x45_Ball_FMJ { @@ -2653,7 +2653,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class VTN_556x45_Ball_SS: B_556x45_Ball { @@ -2666,7 +2666,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={0.254, 0.508, 0.6096}; + ACE_barrelLengths[]={254.0, 508.0, 609.6}; }; class VTN_762x51_Ball_SC: B_762x51_Ball { @@ -2679,7 +2679,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class VTN_762x51_Ball_TRC: VTN_762x51_Ball_SC { @@ -2692,7 +2692,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class VTN_762x51_Ball_TRCN: VTN_762x51_Ball_TRC { @@ -2705,7 +2705,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class VTN_762x51_Ball_AP: VTN_762x51_Ball_TRC { @@ -2718,7 +2718,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class VTN_762x51_Ball_LR: VTN_762x51_Ball_SC { @@ -2731,7 +2731,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class VTN_1143x23_Ball_FMJ: B_408_Ball { @@ -2744,7 +2744,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_1143x23_Ball_HP: VTN_1143x23_Ball_FMJ { @@ -2757,7 +2757,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_1143x23_Ball_JHP: VTN_1143x23_Ball_FMJ { @@ -2770,7 +2770,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class VTN_762x39_Ball_FMJ: B_762x51_Ball { @@ -2783,7 +2783,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class VTN_45_Pellet: B_762x51_Ball { @@ -2796,6 +2796,6 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={100, 138, 150}; - ACE_barrelLengths[]={0.127, 0.254, 0.4064}; + ACE_barrelLengths[]={127.0, 254.0, 406.4}; }; }; \ No newline at end of file diff --git a/extras/CfgWeaponsReference.hpp b/extras/CfgWeaponsReference.hpp index d46f8c7033..15df01e306 100644 --- a/extras/CfgWeaponsReference.hpp +++ b/extras/CfgWeaponsReference.hpp @@ -28,1867 +28,1867 @@ class CfgWeapons class hgun_P07_F : Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class hgun_Rook40_F : Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; }; class hgun_Pistol_heavy_01_F : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class hgun_Pistol_heavy_02_F : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.0762; + ACE_barrelLength=76.2; }; class hgun_ACPC2_F : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class hgun_PDW2000_F : PDW2000_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.1778; + ACE_barrelLength=177.8; }; class arifle_Katiba_F : arifle_Katiba_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.72898; + ACE_barrelLength=728.98; }; class arifle_Katiba_C_F : arifle_Katiba_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.68072; + ACE_barrelLength=680.72; }; class arifle_Katiba_GL_F : arifle_Katiba_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.72898; + ACE_barrelLength=728.98; }; class arifle_MX_F: arifle_MX_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class arifle_MX_GL_F: arifle_MX_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class arifle_MX_SW_F: arifle_MX_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class arifle_MXC_F: arifle_MX_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.2667; + ACE_barrelLength=266.7; }; class arifle_MXM_F: arifle_MX_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class arifle_SDAR_F : SDAR_base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class SMG_02_F : SMG_02_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.19558; + ACE_barrelLength=195.58; }; class arifle_TRG20_F : Tavor_base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.381; + ACE_barrelLength=381.0; }; class arifle_TRG21_F : Tavor_base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.45974; + ACE_barrelLength=459.74; }; class LMG_Zafir_F : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.45974; + ACE_barrelLength=459.74; }; class arifle_Mk20_F : Mk20_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.44196; + ACE_barrelLength=441.96; }; class arifle_Mk20C_F : Mk20_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class arifle_Mk20_GL_F : Mk20_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class SMG_01_F : SMG_01_Base { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1397; + ACE_barrelLength=139.7; }; class srifle_DMR_01_F : DMR_01_base_F { ACE_barrelTwist=241.3; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class srifle_EBR_F : EBR_base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class LMG_Mk200_F : Rifle_Long_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class srifle_LRR_F : LRR_base_F { ACE_barrelTwist=330.2; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class srifle_GM6_F : GM6_base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=1.09982; + ACE_barrelLength=1099.82; }; class srifle_DMR_02_F: DMR_02_base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.6604; + ACE_barrelLength=660.4; }; class srifle_DMR_03_F: DMR_03_base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class srifle_DMR_04_F: DMR_04_base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.450088; + ACE_barrelLength=450.088; }; class srifle_DMR_05_blk_F: DMR_05_base_F { ACE_barrelTwist=359.918; - ACE_barrelLength=0.620014; + ACE_barrelLength=620.014; }; class srifle_DMR_06_camo_F: DMR_06_base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class MMG_01_hex_F: MMG_01_base_F { ACE_barrelTwist=359.918; - ACE_barrelLength=0.54991; + ACE_barrelLength=549.91; }; class MMG_02_camo_F: MMG_02_base_F { ACE_barrelTwist=234.95; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class HMG_M2 : HMG_127 { ACE_barrelTwist=304.8; - ACE_barrelLength=1.143; + ACE_barrelLength=1143.0; }; class RH_deagle : Pistol_Base_F { ACE_barrelTwist=482.6; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_sw659 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.188976; + ACE_barrelLength=188.976; }; class RH_usp : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.112014; + ACE_barrelLength=112.014; }; class RH_uspm : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_mak : Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.093472; + ACE_barrelLength=93.472; }; class RH_m1911 : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class RH_kimber : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class RH_m9 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.12446; + ACE_barrelLength=124.46; }; class RH_vz61 : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class RH_tec9 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class RH_muzi : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class RH_g18 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.114046; + ACE_barrelLength=114.046; }; class RH_g17 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.114046; + ACE_barrelLength=114.046; }; class RH_tt33 : Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.11684; + ACE_barrelLength=116.84; }; class RH_mk2 : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class RH_p226 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; }; class RH_g19 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class RH_gsh18 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.10414; + ACE_barrelLength=104.14; }; class RH_mateba : Pistol_Base_F { ACE_barrelTwist=355.6; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_python : Pistol_Base_F { ACE_barrelTwist=355.6; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_bull : Pistol_Base_F { ACE_barrelTwist=609.6; - ACE_barrelLength=0.1651; + ACE_barrelLength=165.1; }; class RH_ttracker : Pistol_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class RH_mp412 : Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_fnp45 : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class RH_fn57 : Pistol_Base_F { ACE_barrelTwist=231.14; - ACE_barrelLength=0.12192; + ACE_barrelLength=121.92; }; class RH_vp70 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.11684; + ACE_barrelLength=116.84; }; class RH_cz75 : Pistol_Base_F { ACE_barrelTwist=246.38; - ACE_barrelLength=0.11938; + ACE_barrelLength=119.38; }; class RH_PDW : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.254; + ACE_barrelLength=254.0; }; class RH_hb : Rifle_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_sbr9 : Rifle_Base_F { ACE_barrelTwist=246.38; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class RH_ar10 : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.52832; + ACE_barrelLength=528.32; }; class RH_m4 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class RH_M4m : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2667; + ACE_barrelLength=266.7; }; class RH_M4sbr : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2667; + ACE_barrelLength=266.7; }; class RH_M16a1 : Rifle_Base_F { ACE_barrelTwist=355.6; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A2 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A3 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A4 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A6 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_hk416 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class RH_hk416c : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class RH_hk416s : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26416; + ACE_barrelLength=264.16; }; class RH_m27iar : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4191; + ACE_barrelLength=419.1; }; class RH_Mk12mod1 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class RH_SAMR : Rifle_Base_F { ACE_barrelTwist=195.58; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_m110 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_mk11 : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class RH_sr25ec : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class hlc_rifle_ak74 : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class hlc_rifle_aks74u : Rifle_Base_F { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class hlc_rifle_ak47 : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class hlc_rifle_akm : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class hlc_rifle_rpk : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class hlc_rifle_aek971 : Rifle_Base_F { ACE_barrelTwist=241.3; - ACE_barrelLength=0.4318; + ACE_barrelLength=431.8; }; class hlc_rifle_saiga12k : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.42926; + ACE_barrelLength=429.26; }; class hlc_ar15_base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2921; + ACE_barrelLength=292.1; }; class hlc_rifle_bcmjack : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class hlc_rifle_Bushmaster300 : Rifle_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class hlc_rifle_SAMR : Rifle_Base_F { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class hlc_rifle_honeybase : Rifle_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class hlc_rifle_SLRchopmod : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class hlc_rifle_LAR : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class hlc_rifle_c1A1 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.55118; + ACE_barrelLength=551.18; }; class hlc_rifle_FAL5061 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class hlc_rifle_STG58F : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class hlc_rifle_SLR : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.55118; + ACE_barrelLength=551.18; }; class hlc_rifle_falosw : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.3302; + ACE_barrelLength=330.2; }; class hlc_rifle_psg1 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.65024; + ACE_barrelLength=650.24; }; class hlc_rifle_g3sg1 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.44958; + ACE_barrelLength=449.58; }; class hlc_rifle_hk51 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.211074; + ACE_barrelLength=211.074; }; class hlc_rifle_hk53 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.211074; + ACE_barrelLength=211.074; }; class hlc_rifle_g3a3 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.44958; + ACE_barrelLength=449.58; }; class hlc_M14_base : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class hlc_rifle_m14sopmod : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class hlc_lmg_M60E4 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4318; + ACE_barrelLength=431.8; }; class hlc_lmg_m60 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class hlc_smg_mp5k_PDW : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class hlc_smg_mp5a2 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class hlc_smg_mp5a4 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class hlc_smg_mp5n : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class hlc_smg_mp5sd5 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.14478; + ACE_barrelLength=144.78; }; class hlc_smg_mp5sd6 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.14478; + ACE_barrelLength=144.78; }; class hlc_smg_9mmar : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class hlc_smg_mp510 : Rifle_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class hlc_smg_mp5a3 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class hgun_mas_usp_F: Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.112014; + ACE_barrelLength=112.014; }; class hgun_mas_m23_F: Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.149098; + ACE_barrelLength=149.098; }; class hgun_mas_acp_F: Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127762; + ACE_barrelLength=127.762; }; class hgun_mas_m9_F: Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.12446; + ACE_barrelLength=124.46; }; class hgun_mas_bhp_F: Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.11938; + ACE_barrelLength=119.38; }; class hgun_mas_glock_F: Pistol_Base_F { ACE_barrelTwist=249.936; - ACE_barrelLength=0.113792; + ACE_barrelLength=113.792; }; class hgun_mas_glocksf_F: Pistol_Base_F { ACE_barrelTwist=400.05; - ACE_barrelLength=0.11684; + ACE_barrelLength=116.84; }; class hgun_mas_grach_F: Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; }; class hgun_mas_mak_F: Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.093472; + ACE_barrelLength=93.472; }; class hgun_mas_sa61_F: Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class hgun_mas_uzi_F: Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.134112; + ACE_barrelLength=134.112; }; class arifle_mas_mk16 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.35052; + ACE_barrelLength=350.52; }; class arifle_mas_mk16_l : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class arifle_mas_mk17 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class srifle_mas_m110 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class arifle_mas_ak_74m : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.415036; + ACE_barrelLength=415.036; }; class arifle_mas_ak_74m_gl : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.415036; + ACE_barrelLength=415.036; }; class srifle_mas_svd : Rifle_Base_F { ACE_barrelTwist=238.76; - ACE_barrelLength=0.61976; + ACE_barrelLength=619.76; }; class srifle_mas_m91 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class srifle_mas_ksvk : Rifle_Base_F { ACE_barrelTwist=457.2; - ACE_barrelLength=0.999998; + ACE_barrelLength=999.998; }; class LMG_mas_rpk_F : Rifle_Base_F { ACE_barrelTwist=195.072; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class LMG_mas_pkm_F : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.64516; + ACE_barrelLength=645.16; }; class arifle_mas_aks74u : Rifle_Base_F { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class arifle_mas_bizon : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.23114; + ACE_barrelLength=231.14; }; class arifle_mas_saiga : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.430022; + ACE_barrelLength=430.022; }; class arifle_mas_hk416 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class arifle_mas_hk416_gl : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class arifle_mas_hk416c : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class arifle_mas_hk416_m203c : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class arifle_mas_hk417c : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.3302; + ACE_barrelLength=330.2; }; class arifle_mas_m4 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class arifle_mas_m4c : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26162; + ACE_barrelLength=261.62; }; class arifle_mas_l119 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class arifle_mas_l119_gl : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class arifle_mas_l119_m203 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class arifle_mas_m16 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class arifle_mas_m16_gl : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class srifle_mas_hk417 : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.4191; + ACE_barrelLength=419.1; }; class srifle_mas_sr25 : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class srifle_mas_ebr : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class srifle_mas_m24 : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class arifle_mas_mp5 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class arifle_mas_mp5sd : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.14478; + ACE_barrelLength=144.78; }; class srifle_mas_m107 : Rifle_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class LMG_mas_M249_F : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class LMG_mas_M249a_F : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class LMG_mas_mk48_F : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.50165; + ACE_barrelLength=501.65; }; class LMG_mas_m240_F : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class LMG_mas_mg3_F : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.56388; + ACE_barrelLength=563.88; }; class arifle_mas_g3 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.44958; + ACE_barrelLength=449.58; }; class arifle_mas_g3_m203 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.44958; + ACE_barrelLength=449.58; }; class arifle_mas_fal : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class arifle_mas_fal_m203 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class arifle_mas_m1014 : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.4699; + ACE_barrelLength=469.9; }; class BWA3_P8 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.10795; + ACE_barrelLength=107.95; }; class BWA3_MP7 : Pistol_Base_F { ACE_barrelTwist=160.02; - ACE_barrelLength=0.18034; + ACE_barrelLength=180.34; }; class BWA3_G36 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.48006; + ACE_barrelLength=480.06; }; class BWA3_G36K : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class BWA3_G28_Standard : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4191; + ACE_barrelLength=419.1; }; class BWA3_G27 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class BWA3_MG4 : Rifle_Long_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.48006; + ACE_barrelLength=480.06; }; class BWA3_MG5 : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.54864; + ACE_barrelLength=548.64; }; class BWA3_G82 : Rifle_Long_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class Trixie_L131A1 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class Trixie_XM8_Carbine : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class Trixie_XM8_Compact : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class Trixie_XM8_SAW : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class Trixie_XM8_SAW_NB : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class Trixie_XM8_DMR : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class Trixie_XM8_DMR_NB : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class L129A1_base : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class Trixie_Enfield : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.64008; + ACE_barrelLength=640.08; }; class Trixie_CZ550_Rail : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.599999; + ACE_barrelLength=599.999; }; class Trixie_FNFAL_Rail : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class Trixie_M110 : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class Trixie_MK12 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class Trixie_LM308MWS : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class Trixie_M14DMR : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class Trixie_M14DMR_NG_Black_Short : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class Trixie_M14DMR_NG_Short : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class Trixie_M14 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class Trixie_M40A3 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class Trixie_CZ750 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.6604; + ACE_barrelLength=660.4; }; class Trixie_M24 : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class Trixie_AWM338 : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.6858; + ACE_barrelLength=685.8; }; class Trixie_M107 : Rifle_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class Trixie_AS50 : Rifle_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class L110A1_base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.34798; + ACE_barrelLength=347.98; }; class Trixie_L86A2_base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.64516; + ACE_barrelLength=645.16; }; class Trixie_l85a2_base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.51816; + ACE_barrelLength=518.16; }; class L7A2_base : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class rhs_weap_pya : Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; }; class rhs_weap_pkp : Rifle_Long_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.65786; + ACE_barrelLength=657.86; }; class rhs_weap_pkm : Rifle_Long_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.64516; + ACE_barrelLength=645.16; }; class rhs_weap_rpk74m : Rifle_Long_Base_F { ACE_barrelTwist=195.072; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class rhs_weap_rpk74 : Rifle_Long_Base_F { ACE_barrelTwist=195.072; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class rhs_weap_ak74m : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class rhs_weap_aks74u : Rifle_Base_F { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class rhs_weap_akm : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class rhs_weap_svd : Rifle_Base_F { ACE_barrelTwist=238.76; - ACE_barrelLength=0.61976; + ACE_barrelLength=619.76; }; class rhs_weap_svds : Rifle_Base_F { ACE_barrelTwist=238.76; - ACE_barrelLength=0.56388; + ACE_barrelLength=563.88; }; class rhs_weap_m4_Base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class rhs_weap_m16a4 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class rhs_weap_m16a4_carryhandle : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class rhs_weap_m16a4_grip : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class rhs_weap_m240B : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class rhs_weap_m249_pip : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class rhs_weap_mk18 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26162; + ACE_barrelLength=261.62; }; class rhs_weap_M590_5RD : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.4699; + ACE_barrelLength=469.9; }; class rhs_weap_M590_8RD : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class rhs_weap_sr25 : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class rhs_weap_sr25_ec : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class rhs_weap_XM2010_Base_F: Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class R3F_PAMAS : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.12446; + ACE_barrelLength=124.46; }; class R3F_Famas_F1: Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.48768; + ACE_barrelLength=487.68; }; class R3F_Famas_surb: Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.40386; + ACE_barrelLength=403.86; }; class R3F_Minimi: Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.34798; + ACE_barrelLength=347.98; }; class R3F_Minimi_762: Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.50292; + ACE_barrelLength=502.92; }; class R3F_FRF2: Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.649986; + ACE_barrelLength=649.986; }; class R3F_PGM_Hecate_II: Rifle_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.70104; + ACE_barrelLength=701.04; }; class R3F_HK417S_HG : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.3048; + ACE_barrelLength=304.8; }; class R3F_HK417M : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class R3F_HK417L : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class R3F_M107 : Rifle_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class R3F_HK416M : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3556; + ACE_barrelLength=355.6; }; class R3F_MP5SD : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.14478; + ACE_barrelLength=144.78; }; class CUP_hgun_Colt1911 : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class CUP_sgun_AA12 : Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class CUP_arifle_AK_Base : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class CUP_arifle_AK107_Base : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class CUP_arifle_AKS_Base : Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class CUP_arifle_AKS74U : Rifle_Base_F { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class CUP_arifle_RPK74 : Rifle_Long_Base_F { ACE_barrelTwist=195.072; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class CUP_srifle_AS50 : Rifle_Long_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class CUP_srifle_AWM_Base : Rifle_Long_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.6858; + ACE_barrelLength=685.8; }; class CUP_smg_bizon : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.23114; + ACE_barrelLength=231.14; }; class CUP_hgun_Compact : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.094996; + ACE_barrelLength=94.996; }; class CUP_srifle_CZ750 : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.6604; + ACE_barrelLength=660.4; }; class CUP_arifle_CZ805_Base : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.3556; + ACE_barrelLength=355.6; }; class CUP_arifle_CZ805_A1 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.3556; + ACE_barrelLength=355.6; }; class CUP_arifle_CZ805_A2 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.27686; + ACE_barrelLength=276.86; }; class CUP_srifle_DMR : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class CUP_hgun_Duty : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.094996; + ACE_barrelLength=94.996; }; class CUP_arifle_FNFAL : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class CUP_arifle_G36A : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.48006; + ACE_barrelLength=480.06; }; class CUP_arifle_G36K : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class CUP_arifle_G36C : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class CUP_arifle_MG36 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.48006; + ACE_barrelLength=480.06; }; class CUP_hgun_Glock17 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.114046; + ACE_barrelLength=114.046; }; class CUP_srifle_CZ550 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.599999; + ACE_barrelLength=599.999; }; class CUP_srifle_ksvk : Rifle_Long_Base_F { ACE_barrelTwist=457.2; - ACE_barrelLength=0.999998; + ACE_barrelLength=999.998; }; class CUP_lmg_L7A2 : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class CUP_arifle_L85A2_Base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.51816; + ACE_barrelLength=518.16; }; class CUP_lmg_L110A1 : Rifle_Long_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.34798; + ACE_barrelLength=347.98; }; class CUP_srifle_LeeEnfield : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.64008; + ACE_barrelLength=640.08; }; class CUP_hgun_M9 : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.12446; + ACE_barrelLength=124.46; }; class CUP_srifle_M14 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class CUP_arifle_M16_Base : Rifle_Base_F { ACE_barrelTwist=355.6; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class CUP_arifle_M4_Base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class CUP_srifle_Mk12SPR : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class CUP_srifle_M24_des : Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class CUP_lmg_M60A4 : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4318; + ACE_barrelLength=431.8; }; class CUP_srifle_M107_Base : Rifle_Long_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.7366; + ACE_barrelLength=736.6; }; class CUP_srifle_M110 : Rifle_Base_F { ACE_barrelTwist=279.4; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class CUP_lmg_M240 : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class CUP_lmg_M249_para : Rifle_Long_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class CUP_lmg_M249 : Rifle_Long_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class CUP_sgun_M1014 : Rifle_Base_F { ACE_twistDirection=0; ACE_barrelTwist=0.0; - ACE_barrelLength=0.4699; + ACE_barrelLength=469.9; }; class CUP_hgun_Makarov : Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.093472; + ACE_barrelLength=93.472; }; class CUP_hgun_MicroUzi : Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class CUP_lmg_Mk48_Base : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.50165; + ACE_barrelLength=501.65; }; class CUP_smg_MP5SD6 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.14478; + ACE_barrelLength=144.78; }; class CUP_smg_MP5A5 : Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.22606; + ACE_barrelLength=226.06; }; class CUP_hgun_PB6P9 : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.10414; + ACE_barrelLength=104.14; }; class CUP_hgun_Phantom : Rifle_Base_F { ACE_barrelTwist=246.38; - ACE_barrelLength=0.11938; + ACE_barrelLength=119.38; }; class CUP_lmg_PKM : Rifle_Long_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.64516; + ACE_barrelLength=645.16; }; class CUP_lmg_Pecheneg : Rifle_Long_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.65786; + ACE_barrelLength=657.86; }; class CUP_hgun_TaurusTracker455 : Pistol_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class CUP_arifle_Sa58P : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.39116; + ACE_barrelLength=391.16; }; class CUP_arifle_Sa58V : Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.39116; + ACE_barrelLength=391.16; }; class CUP_hgun_SA61 : Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class CUP_sgun_Saiga12K: Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.42926; + ACE_barrelLength=429.26; } class CUP_arifle_Mk16_CQC : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.254; + ACE_barrelLength=254.0; }; class CUP_arifle_Mk16_STD : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3556; + ACE_barrelLength=355.6; }; class CUP_arifle_Mk16_SV : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class CUP_arifle_Mk17_CQC : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.3302; + ACE_barrelLength=330.2; }; class CUP_arifle_Mk17_STD : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class CUP_arifle_Mk20 : Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class CUP_srifle_SVD : Rifle_Base_F { ACE_barrelTwist=238.76; - ACE_barrelLength=0.61976; + ACE_barrelLength=619.76; }; class CUP_lmg_UK59 : Rifle_Long_Base_F { ACE_barrelTwist=381.0; - ACE_barrelLength=0.55118; + ACE_barrelLength=551.18; }; class CUP_DSHKM_W : MGun { ACE_barrelTwist=381.0; - ACE_barrelLength=1.06934; + ACE_barrelLength=1069.34; }; class CUP_KPVT_W : MGun { ACE_barrelTwist=454.914; - ACE_barrelLength=1.3462; + ACE_barrelLength=1346.2; }; class CUP_KPVB_W : MGun { ACE_barrelTwist=454.914; - ACE_barrelLength=1.3462; + ACE_barrelLength=1346.2; }; class CUP_M134 : MGunCore { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class CUP_M240_veh_W : Rifle_Long_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class CUP_PKT_W : MGun { ACE_barrelTwist=240.03; - ACE_barrelLength=0.722122; + ACE_barrelLength=722.122; }; class CUP_srifle_VSSVintorez : Rifle_Base_F { ACE_barrelTwist=210.82; - ACE_barrelLength=0.20066; + ACE_barrelLength=200.66; }; class CUP_arifle_XM8_Base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class CUP_arifle_XM8_Carbine : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class CUP_arifle_xm8_sharpshooter : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class CUP_arifle_xm8_SAW : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class CUP_arifle_XM8_Compact : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class CUP_arifle_XM8_Railed_Base : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class CUP_arifle_XM8_Carbine_FG : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3175; + ACE_barrelLength=317.5; }; class VTN_AK_BASE: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AK74M: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AK74M_GP25: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AK74M_GP30M: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AKS74: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AKS74N: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AKS74N_76: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AK74_76: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AKMS_aa: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.26162; + ACE_barrelLength=261.62; }; class VTN_AKS74U_BASE: Rifle_Base_F { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class VTN_AKM_BASE: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AKMS: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AKMS_T_P: Rifle_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AK103_BASE: Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_AK104_BASE: Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.31496; + ACE_barrelLength=314.96; }; class VTN_AK105_BASE: Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.31496; + ACE_barrelLength=314.96; }; class VTN_AK105_P_BASE: Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.31496; + ACE_barrelLength=314.96; }; class VTN_SVD_BASE: Rifle_Base_F { ACE_barrelTwist=238.76; - ACE_barrelLength=0.61976; + ACE_barrelLength=619.76; }; class VTN_SVD_63: Rifle_Base_F { ACE_barrelTwist=238.76; - ACE_barrelLength=0.61976; + ACE_barrelLength=619.76; }; class VTN_SVD_86: Rifle_Base_F { ACE_barrelTwist=238.76; - ACE_barrelLength=0.61976; + ACE_barrelLength=619.76; }; class VTN_SV98_BASE: Rifle_Base_F { ACE_barrelTwist=320.04; - ACE_barrelLength=0.649986; + ACE_barrelLength=649.986; }; class VTN_PKM_BAS: Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.64516; + ACE_barrelLength=645.16; }; class VTN_PKP: Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.65786; + ACE_barrelLength=657.86; }; class VTN_PYA: Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; }; class VTN_PM: Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.093472; + ACE_barrelLength=93.472; }; class VTN_PB: Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.10414; + ACE_barrelLength=104.14; }; class VTN_GSH18: Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.10414; + ACE_barrelLength=104.14; }; class VTN_PSS: Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.03556; + ACE_barrelLength=35.56; }; class VTN_PKT: Rifle_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.722122; + ACE_barrelLength=722.122; }; class VTN_KORD: Rifle_Base_F { ACE_barrelTwist=454.914; - ACE_barrelLength=1.3462; + ACE_barrelLength=1346.2; }; class VTN_KPVT: Rifle_Base_F { ACE_barrelTwist=454.914; - ACE_barrelLength=1.3462; + ACE_barrelLength=1346.2; }; class VTN_C_M4A1 : Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class VTN_MK18MOD0: Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26162; + ACE_barrelLength=261.62; }; class VTN_M16_BASE: Rifle_Base_F { ACE_barrelTwist=355.6; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class VTN_FN_SAMR_BASE: Rifle_Base_F { ACE_barrelTwist=195.58; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class VTN_M249_SAW_BASE: Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class VTN_M249_PARA: Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class VTN_M240G_BASE: Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class VTN_M9: Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.12446; + ACE_barrelLength=124.46; }; class VTN_M45A1: Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class VTN_M24: Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class VTN_M240: Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class VTN_KO44: Rifle_Base_F { ACE_barrelTwist=241.3; - ACE_barrelLength=0.51308; + ACE_barrelLength=513.08; }; class VTN_SAIGA_MK03: Rifle_Base_F { ACE_twistDirection=9.45; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; }; \ No newline at end of file diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index e58561ec1f..58f61aedce 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -14,7 +14,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { @@ -27,7 +27,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Red: BulletBase { @@ -40,7 +40,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_White: BulletBase { @@ -53,7 +53,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { @@ -66,7 +66,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x39_Ball: BulletBase { @@ -79,7 +79,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x39_Ball_Tracer_Green: BulletBase { @@ -92,7 +92,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_9x18_Ball: BulletBase { @@ -105,7 +105,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Green: BulletBase { @@ -118,7 +118,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Red: BulletBase { @@ -131,7 +131,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { @@ -144,7 +144,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x18_Ball_White_Tracer: BulletBase { @@ -157,7 +157,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_9x19_Ball: BulletBase { @@ -170,7 +170,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class CUP_B_762x51_noTracer: B_762x51_Ball { @@ -183,7 +183,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_303_Ball: BulletBase { @@ -196,7 +196,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { @@ -209,7 +209,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class CUP_B_127x108_Ball_Green_Tracer: BulletBase { @@ -222,7 +222,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class CUP_B_762x54_Ball_White_Tracer: BulletBase { @@ -235,7 +235,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Red_Tracer: BulletBase { @@ -248,7 +248,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Green_Tracer: BulletBase { @@ -261,7 +261,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { @@ -274,7 +274,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class CUP_B_9x39_SP5: BulletBase { @@ -287,7 +287,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class CUP_B_762x51_Tracer_Green: BulletBase { @@ -300,7 +300,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_Red: BulletBase { @@ -313,7 +313,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_Yellow: BulletBase { @@ -326,7 +326,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class CUP_B_762x51_Tracer_White: BulletBase { @@ -339,7 +339,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class B_127x107_Ball: BulletBase { @@ -352,7 +352,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={820}; - ACE_barrelLengths[]={0.72898}; + ACE_barrelLengths[]={728.98}; }; class CUP_B_9x18_SD: BulletBase { @@ -365,7 +365,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 340}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class CUP_B_765x17_Ball: BulletBase { @@ -378,7 +378,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class CUP_B_145x115_AP_Green_Tracer: BulletBase { @@ -391,7 +391,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; - ACE_barrelLengths[]={1.3462}; + ACE_barrelLengths[]={1346.2}; }; class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { @@ -404,7 +404,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={853}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class CUP_B_86x70_Ball_noTracer: BulletBase { @@ -417,6 +417,6 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; - ACE_barrelLengths[]={0.6096, 0.6731, 0.7112}; + ACE_barrelLengths[]={609.6, 673.1, 711.2}; }; }; \ No newline at end of file diff --git a/optionals/compat_hlc_ar15/CfgWeapons.hpp b/optionals/compat_hlc_ar15/CfgWeapons.hpp index 4f3fb2328c..53928f25d4 100644 --- a/optionals/compat_hlc_ar15/CfgWeapons.hpp +++ b/optionals/compat_hlc_ar15/CfgWeapons.hpp @@ -5,61 +5,61 @@ class CfgWeapons class hlc_ar15_base: Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2921; + ACE_barrelLength=292.1; }; class hlc_rifle_RU556: hlc_ar15_base { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26162; + ACE_barrelLength=261.62; }; class hlc_rifle_RU5562: hlc_rifle_RU556 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26162; + ACE_barrelLength=261.62; }; class hlc_rifle_CQBR: hlc_rifle_RU556 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.254; + ACE_barrelLength=254.0; }; class hlc_rifle_M4: hlc_rifle_RU556 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class hlc_rifle_bcmjack: hlc_ar15_base { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class hlc_rifle_Colt727: hlc_ar15_base { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class hlc_rifle_Colt727_GL: hlc_rifle_Colt727 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class hlc_rifle_Bushmaster300: hlc_rifle_Colt727 { ACE_barrelTwist=203.2; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class hlc_rifle_vendimus: hlc_rifle_Bushmaster300 { ACE_barrelTwist=203.2; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class hlc_rifle_SAMR: hlc_rifle_RU556 { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class hlc_rifle_honeybase: hlc_rifle_RU556 { ACE_barrelTwist=203.2; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; }; \ No newline at end of file diff --git a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp index 1c67a19815..b9cc94818e 100644 --- a/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp +++ b/optionals/compat_hlc_wp_mp5/CfgWeapons.hpp @@ -5,56 +5,56 @@ class CfgWeapons class hlc_MP5_base: Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_mp5k_PDW: hlc_MP5_base { ACE_barrelTwist=254.0; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class hlc_smg_mp5k: hlc_smg_mp5k_PDW { ACE_barrelTwist=254.0; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class hlc_smg_mp5a2: hlc_MP5_base { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_MP5N: hlc_MP5_base { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_9mmar: hlc_smg_MP5N { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_mp5a4: hlc_MP5_base { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_mp510: hlc_smg_MP5N { ACE_barrelTwist=381.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_mp5sd5: hlc_MP5_base { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_mp5a3: hlc_smg_mp5a2 { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class hlc_smg_mp5sd6: hlc_smg_mp5sd5 { ACE_barrelTwist=254.0; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; }; diff --git a/optionals/compat_hlcmods_ak/CfgWeapons.hpp b/optionals/compat_hlcmods_ak/CfgWeapons.hpp index a69f1b192e..82e319ef7c 100644 --- a/optionals/compat_hlcmods_ak/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_ak/CfgWeapons.hpp @@ -7,52 +7,52 @@ class CfgWeapons class hlc_rifle_ak74: hlc_ak_base { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class hlc_rifle_aku12: hlc_rifle_ak12 { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class hlc_rifle_RPK12: hlc_rifle_ak12 { - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class hlc_rifle_aks74u: hlc_rifle_ak74 { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class hlc_rifle_ak47: hlc_rifle_ak74 { ACE_barrelTwist=240.03; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class hlc_rifle_akm: hlc_rifle_ak47 { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class hlc_rifle_rpk: hlc_rifle_ak47 { ACE_barrelTwist=240.03; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class hlc_rifle_rpk74n: hlc_rifle_rpk { ACE_barrelTwist=240.03; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class hlc_rifle_aek971: hlc_rifle_ak74 { ACE_barrelTwist=241.3; - ACE_barrelLength=0.4318; + ACE_barrelLength=431.8; }; class hlc_rifle_saiga12k: hlc_rifle_ak47 { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.42926; + ACE_barrelLength=429.26; }; class HLC_Optic_PSO1 : optic_dms { diff --git a/optionals/compat_hlcmods_aug/CfgWeapons.hpp b/optionals/compat_hlcmods_aug/CfgWeapons.hpp index 9e34e45f2f..4666605348 100644 --- a/optionals/compat_hlcmods_aug/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_aug/CfgWeapons.hpp @@ -6,46 +6,46 @@ class CfgWeapons class hlc_rifle_aug: hlc_aug_base { ACE_barrelTwist=228.6; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class hlc_rifle_auga1carb: hlc_rifle_aug { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4064; + ACE_barrelLength=406.4; }; class hlc_rifle_aughbar: hlc_rifle_aug { ACE_barrelTwist=228.6; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class hlc_rifle_augpara: hlc_rifle_aug { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4191; + ACE_barrelLength=419.1; }; class hlc_rifle_auga2: hlc_rifle_aug { ACE_barrelTwist=228.6; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class hlc_rifle_auga2para: hlc_rifle_auga2 { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4191; + ACE_barrelLength=419.1; }; class hlc_rifle_auga2carb: hlc_rifle_auga2 { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class hlc_rifle_auga2lsw: hlc_rifle_aughbar { ACE_barrelTwist=228.6; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class hlc_rifle_auga3: hlc_rifle_aug { ACE_barrelTwist=228.6; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_core/CfgAmmo.hpp b/optionals/compat_hlcmods_core/CfgAmmo.hpp index c9446ff29e..afe3f03973 100644 --- a/optionals/compat_hlcmods_core/CfgAmmo.hpp +++ b/optionals/compat_hlcmods_core/CfgAmmo.hpp @@ -17,7 +17,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class HLC_556NATO_SOST: B_556x45_Ball { @@ -30,7 +30,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class HLC_556NATO_SPR: B_556x45_Ball { @@ -43,7 +43,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class HLC_300Blackout_Ball: B_556x45_Ball { @@ -56,7 +56,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; + ACE_barrelLengths[]={152.4, 406.4, 508.0}; }; class HLC_300Blackout_SMK: HLC_300Blackout_Ball { @@ -69,7 +69,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; + ACE_barrelLengths[]={228.6, 406.4, 508.0}; }; class HLC_762x39_Ball: HLC_300Blackout_Ball { @@ -82,7 +82,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class HLC_762x39_Tracer: HLC_762x39_Ball { @@ -95,7 +95,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class HLC_762x51_MK316_20in: B_762x51_Ball { @@ -108,7 +108,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_762x51_BTSub: B_762x51_Ball { @@ -121,7 +121,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_762x54_ball: HLC_762x51_ball { @@ -134,7 +134,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_762x54_tracer: HLC_762x51_tracer { @@ -147,7 +147,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class HLC_303Brit_B: B_556x45_Ball { @@ -160,7 +160,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class HLC_792x57_Ball: HLC_303Brit_B { @@ -173,7 +173,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={785, 800, 815}; - ACE_barrelLengths[]={0.508, 0.599948, 0.6604}; + ACE_barrelLengths[]={508.0, 599.948, 660.4}; }; class HLC_542x42_ball: HLC_303Brit_B { @@ -192,14 +192,14 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class FH_545x39_7u1: FH_545x39_Ball { ACE_bulletMass=5.184; ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_muzzleVelocities[]={260, 303, 320}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class HLC_57x28mm_JHP: FH_545x39_Ball { @@ -212,7 +212,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={550, 625, 720}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.26289}; + ACE_barrelLengths[]={101.6, 152.4, 262.89}; }; class HLC_9x19_Ball: B_556x45_Ball { @@ -225,7 +225,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class HLC_9x19_M882_SMG: B_556x45_Ball { @@ -238,7 +238,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class HLC_9x19_GoldDot: HLC_9x19_Ball { @@ -259,7 +259,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; - ACE_barrelLengths[]={0.1016, 0.117094, 0.2286}; + ACE_barrelLengths[]={101.6, 117.094, 228.6}; }; class HLC_45ACP_Ball: B_556x45_Ball { @@ -272,7 +272,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class FH_44Mag: HLC_45ACP_Ball { @@ -285,7 +285,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 390, 420}; - ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; + ACE_barrelLengths[]={101.6, 190.5, 228.6}; }; class FH_50BMG_SLAP: B_127x99_Ball { @@ -298,7 +298,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={1204}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; class FH_50BMG_Raufoss: B_127x99_Ball { @@ -311,6 +311,6 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={817}; - ACE_barrelLengths[]={0.7366}; + ACE_barrelLengths[]={736.6}; }; }; diff --git a/optionals/compat_hlcmods_fal/CfgWeapons.hpp b/optionals/compat_hlcmods_fal/CfgWeapons.hpp index 5e4a18caf1..fd826a6804 100644 --- a/optionals/compat_hlcmods_fal/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_fal/CfgWeapons.hpp @@ -5,46 +5,46 @@ class CfgWeapons class hlc_rifle_falosw: hlc_fal_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.3302; + ACE_barrelLength=330.2; }; class hlc_rifle_osw_GL: hlc_rifle_falosw { ACE_barrelTwist=304.8; - ACE_barrelLength=0.3302; + ACE_barrelLength=330.2; }; class hlc_rifle_SLR: hlc_fal_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.55118; + ACE_barrelLength=551.18; }; class hlc_rifle_STG58F: hlc_fal_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class hlc_rifle_FAL5061: hlc_fal_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class hlc_rifle_L1A1SLR: hlc_rifle_SLR { ACE_barrelTwist=304.8; - ACE_barrelLength=0.55118; + ACE_barrelLength=551.18; }; class hlc_rifle_c1A1: hlc_rifle_SLR { ACE_barrelTwist=304.8; - ACE_barrelLength=0.55118; + ACE_barrelLength=551.18; }; class hlc_rifle_LAR: hlc_rifle_FAL5061 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5334; + ACE_barrelLength=533.4; }; class hlc_rifle_SLRchopmod: hlc_rifle_FAL5061 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_g3/CfgWeapons.hpp b/optionals/compat_hlcmods_g3/CfgWeapons.hpp index f6b7a9c133..dc02124667 100644 --- a/optionals/compat_hlcmods_g3/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_g3/CfgWeapons.hpp @@ -5,41 +5,41 @@ class CfgWeapons class hlc_rifle_g3sg1: hlc_g3_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.44958; + ACE_barrelLength=449.58; }; class hlc_rifle_psg1: hlc_rifle_g3sg1 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.65024; + ACE_barrelLength=650.24; }; class hlc_rifle_g3a3: hlc_rifle_g3sg1 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.44958; + ACE_barrelLength=449.58; }; class hlc_rifle_g3a3ris: hlc_rifle_g3a3 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.44958; + ACE_barrelLength=449.58; }; class hlc_rifle_g3ka4: hlc_rifle_g3a3 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.31496; + ACE_barrelLength=314.96; }; class HLC_Rifle_g3ka4_GL: hlc_rifle_g3ka4 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.31496; + ACE_barrelLength=314.96; }; class hlc_rifle_hk51: hlc_rifle_g3sg1 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.211074; + ACE_barrelLength=211.074; }; class hlc_rifle_hk53: hlc_rifle_g3sg1 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.211074; + ACE_barrelLength=211.074; }; }; \ No newline at end of file diff --git a/optionals/compat_hlcmods_m14/CfgWeapons.hpp b/optionals/compat_hlcmods_m14/CfgWeapons.hpp index e2f081c547..64db736003 100644 --- a/optionals/compat_hlcmods_m14/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m14/CfgWeapons.hpp @@ -6,11 +6,11 @@ class CfgWeapons class hlc_M14_base: Rifle_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class hlc_rifle_m14sopmod: hlc_rifle_M14 { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; }; diff --git a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp index 682e2cd5fa..50b4ffbc80 100644 --- a/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp +++ b/optionals/compat_hlcmods_m60e4/CfgWeapons.hpp @@ -5,11 +5,11 @@ class CfgWeapons class hlc_lmg_M60E4: hlc_M60e4_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.4318; + ACE_barrelLength=431.8; }; class hlc_lmg_m60: hlc_M60e4_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; }; diff --git a/optionals/compat_rh_de/CfgAmmo.hpp b/optionals/compat_rh_de/CfgAmmo.hpp index 8d3e230e1c..2297d89023 100644 --- a/optionals/compat_rh_de/CfgAmmo.hpp +++ b/optionals/compat_rh_de/CfgAmmo.hpp @@ -13,7 +13,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 398, 420}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_454_Casull: BulletBase { @@ -26,7 +26,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={450, 490, 500}; - ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; + ACE_barrelLengths[]={101.6, 190.5, 228.6}; }; class RH_32ACP: BulletBase { @@ -39,7 +39,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_45ACP: BulletBase { @@ -52,7 +52,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_B_40SW: BulletBase { @@ -65,7 +65,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_44mag_ball: BulletBase { @@ -78,7 +78,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 390, 420}; - ACE_barrelLengths[]={0.1016, 0.1905, 0.2286}; + ACE_barrelLengths[]={101.6, 190.5, 228.6}; }; class RH_357mag_ball: BulletBase { @@ -91,7 +91,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={490, 510, 535}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_762x25: BulletBase { @@ -104,7 +104,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 380, 400}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_9x18_Ball: BulletBase { @@ -117,7 +117,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class RH_B_9x19_Ball: BulletBase { @@ -130,7 +130,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_B_22LR_SD: BulletBase { @@ -143,7 +143,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={330, 340, 360}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.2286}; + ACE_barrelLengths[]={101.6, 152.4, 228.6}; }; class RH_57x28mm: BulletBase { @@ -156,6 +156,6 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={550, 625, 720}; - ACE_barrelLengths[]={0.1016, 0.1524, 0.26289}; + ACE_barrelLengths[]={101.6, 152.4, 262.89}; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_de/CfgWeapons.hpp b/optionals/compat_rh_de/CfgWeapons.hpp index bfb45732e5..eb7d902a8b 100644 --- a/optionals/compat_rh_de/CfgWeapons.hpp +++ b/optionals/compat_rh_de/CfgWeapons.hpp @@ -5,136 +5,136 @@ class CfgWeapons class RH_deagle: RH_Pistol_Base_F { ACE_barrelTwist=482.6; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_mateba: Pistol_Base_F { ACE_barrelTwist=355.6; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_mp412: Pistol_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_python: Pistol_Base_F { ACE_barrelTwist=355.6; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_bull: RH_python { ACE_barrelTwist=609.6; - ACE_barrelLength=0.1651; + ACE_barrelLength=165.1; }; class RH_ttracker: Pistol_Base_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class RH_cz75: RH_Pistol_Base_F { ACE_barrelTwist=246.38; - ACE_barrelLength=0.11938; + ACE_barrelLength=119.38; }; class RH_p226: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; }; class RH_sw659: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.188976; + ACE_barrelLength=188.976; }; class RH_usp: RH_Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.112014; + ACE_barrelLength=112.014; }; class RH_uspm: RH_Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_kimber: RH_Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class RH_m1911: RH_Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class RH_tt33: RH_Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.11684; + ACE_barrelLength=116.84; }; class RH_mak: RH_Pistol_Base_F { ACE_barrelTwist=240.03; - ACE_barrelLength=0.093472; + ACE_barrelLength=93.472; }; class RH_mk2: RH_Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class RH_m9: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.12446; + ACE_barrelLength=124.46; }; class RH_g18: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.114046; + ACE_barrelLength=114.046; }; class RH_g17: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.114046; + ACE_barrelLength=114.046; }; class RH_g19: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.1016; + ACE_barrelLength=101.6; }; class RH_gsh18: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.10414; + ACE_barrelLength=104.14; }; class RH_fnp45: RH_Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class RH_fn57: RH_fnp45 { ACE_barrelTwist=231.14; - ACE_barrelLength=0.12192; + ACE_barrelLength=121.92; }; class RH_vp70: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.11684; + ACE_barrelLength=116.84; }; class RH_vz61: RH_Pistol_Base_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.1143; + ACE_barrelLength=114.3; }; class RH_tec9: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class RH_muzi: RH_Pistol_Base_F { ACE_barrelTwist=248.92; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_m4/CfgAmmo.hpp b/optionals/compat_rh_m4/CfgAmmo.hpp index fa4cc2ba07..763d96e3e7 100644 --- a/optionals/compat_rh_m4/CfgAmmo.hpp +++ b/optionals/compat_rh_m4/CfgAmmo.hpp @@ -19,7 +19,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_9x19_B_HP: BulletBase { @@ -32,7 +32,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_9x19_B_HPSB: BulletBase { @@ -45,7 +45,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={295, 310, 330}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class RH_556x45_B_M855A1: B_556x45_Ball { @@ -58,7 +58,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900}; - ACE_barrelLengths[]={0.21082, 0.23876, 0.26924, 0.29972, 0.3302, 0.36068, 0.39116, 0.4191, 0.44958, 0.48006, 0.508, 0.6096}; + ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6}; }; class RH_556x45_B_Mk318: B_556x45_Ball { @@ -71,7 +71,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class RH_556x45_B_Mk262: B_556x45_Ball { @@ -84,7 +84,7 @@ class CfgAmmo { ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class RH_68x43_B_FMJ: B_65x39_Caseless { @@ -97,7 +97,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={713, 785, 810, 850}; - ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; + ACE_barrelLengths[]={304.8, 406.4, 508.0, 609.6}; }; class RH_68x43_B_Match: B_65x39_Caseless { @@ -110,7 +110,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 732, 750, 780}; - ACE_barrelLengths[]={0.3048, 0.4064, 0.508, 0.6096}; + ACE_barrelLengths[]={304.8, 406.4, 508.0, 609.6}; }; class RH_762x35_B_FMJ: B_65x39_Caseless { @@ -123,7 +123,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={559, 609, 625}; - ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; + ACE_barrelLengths[]={152.4, 406.4, 508.0}; }; class RH_762x35_B_Match: B_65x39_Caseless { @@ -136,7 +136,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={572, 676, 700}; - ACE_barrelLengths[]={0.1524, 0.4064, 0.508}; + ACE_barrelLengths[]={152.4, 406.4, 508.0}; }; class RH_762x35_B_MSB: B_65x39_Caseless { @@ -149,7 +149,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={300, 320, 340}; - ACE_barrelLengths[]={0.2286, 0.4064, 0.508}; + ACE_barrelLengths[]={228.6, 406.4, 508.0}; }; class RH_762x51_B_M80A1: B_762x51_Ball { @@ -162,7 +162,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class RH_762x51_B_Mk316LR: B_762x51_Ball { @@ -175,7 +175,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={775, 790, 805, 810}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class RH_762x51_B_Mk319: B_762x51_Ball { @@ -188,7 +188,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={838, 892, 910}; - ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; + ACE_barrelLengths[]={330.2, 406.4, 508.0}; }; class RH_762x51_B_LFMJSB: B_762x51_Ball { @@ -201,6 +201,6 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; }; diff --git a/optionals/compat_rh_m4/CfgWeapons.hpp b/optionals/compat_rh_m4/CfgWeapons.hpp index 0cebd83fa6..ad612383d1 100644 --- a/optionals/compat_rh_m4/CfgWeapons.hpp +++ b/optionals/compat_rh_m4/CfgWeapons.hpp @@ -5,126 +5,126 @@ class CfgWeapons class RH_ar10: Rifle_Base_F { ACE_barrelTwist=285.75; - ACE_barrelLength=0.52832; + ACE_barrelLength=528.32; }; class RH_m110: Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_Mk11: RH_m110 { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class RH_SR25EC: RH_m110 { ACE_barrelTwist=285.75; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_m4: Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class RH_M4_ris: RH_m4 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class RH_M4A1_ris: RH_M4_ris { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class RH_M4m: RH_M4A1_ris { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2667; + ACE_barrelLength=266.7; }; class RH_M4sbr: RH_M4A1_ris { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2667; + ACE_barrelLength=266.7; }; class RH_hb: Rifle_Base_F { ACE_barrelTwist=203.2; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_hb_b: RH_hb { ACE_barrelTwist=203.2; - ACE_barrelLength=0.1524; + ACE_barrelLength=152.4; }; class RH_sbr9: Rifle_Base_F { ACE_barrelTwist=246.38; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class RH_M4A6: RH_M4A1_ris { ACE_barrelTwist=254.0; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class RH_M16a1: RH_m4 { ACE_barrelTwist=355.6; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A2: RH_m4 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A4 : RH_M4_ris { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A3: RH_M16A4 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A4_m: RH_M16A4 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_M16A6: RH_M16A4 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_Mk12mod1: RH_M16A4 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4572; + ACE_barrelLength=457.2; }; class RH_SAMR: RH_Mk12mod1 { ACE_barrelTwist=195.58; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class RH_Hk416: RH_M4A1_ris { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class RH_Hk416s: RH_M4sbr { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26416; + ACE_barrelLength=264.16; }; class RH_Hk416c: RH_M4sbr { ACE_barrelTwist=177.8; - ACE_barrelLength=0.2286; + ACE_barrelLength=228.6; }; class RH_M27IAR: RH_Mk12mod1 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.4191; + ACE_barrelLength=419.1; }; }; \ No newline at end of file diff --git a/optionals/compat_rh_pdw/CfgAmmo.hpp b/optionals/compat_rh_pdw/CfgAmmo.hpp index a1503f2284..9474ec47eb 100644 --- a/optionals/compat_rh_pdw/CfgAmmo.hpp +++ b/optionals/compat_rh_pdw/CfgAmmo.hpp @@ -11,5 +11,5 @@ class RH_B_6x35: BulletBase ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={730, 750, 760}; - ACE_barrelLengths[]={0.2032, 0.254, 0.3048}; + ACE_barrelLengths[]={203.2, 254.0, 304.8}; }; \ No newline at end of file diff --git a/optionals/compat_rh_pdw/CfgWeapons.hpp b/optionals/compat_rh_pdw/CfgWeapons.hpp index 7f86318c55..37e7f7ffb4 100644 --- a/optionals/compat_rh_pdw/CfgWeapons.hpp +++ b/optionals/compat_rh_pdw/CfgWeapons.hpp @@ -5,6 +5,6 @@ class CfgWeapons class RH_PDW: Rifle_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.254; + ACE_barrelLength=254.0; }; }; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 4cf181b9fc..541437458e 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -14,7 +14,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { @@ -27,7 +27,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_762x51_Ball; class rhs_B_762x54_Ball: B_762x51_Ball @@ -41,7 +41,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { @@ -54,7 +54,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={680, 750, 798, 800}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { @@ -67,7 +67,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={700, 800, 820, 833}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class rhs_B_762x39_Ball: B_762x51_Ball { @@ -80,7 +80,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { @@ -93,7 +93,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; - ACE_barrelLengths[]={0.254, 0.41402, 0.508}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_9x21_Ball; class rhs_B_9x19_7N21: B_9x21_Ball @@ -107,7 +107,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={445, 460, 480}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; class rhs_B_9x18_57N181S: B_9x21_Ball { @@ -120,6 +120,6 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; - ACE_barrelLengths[]={0.09652, 0.127, 0.2286}; + ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; }; \ No newline at end of file diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp index d557111b6f..90474a958f 100644 --- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp @@ -5,57 +5,57 @@ class CfgWeapons class rhs_weap_pya: hgun_Rook40_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.11176; + ACE_barrelLength=111.76; }; class Pistol_Base_F; class rhs_weap_makarov_pmm: rhs_weap_pya { ACE_barrelTwist=240.03; - ACE_barrelLength=0.093472; + ACE_barrelLength=93.472; }; class rhs_weap_ak74m_Base_F; class rhs_weap_ak74m: rhs_weap_ak74m_Base_F { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class rhs_weap_akm: rhs_weap_ak74m { ACE_barrelTwist=199.898; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class rhs_weap_aks74; class rhs_weap_aks74u: rhs_weap_aks74 { ACE_barrelTwist=160.02; - ACE_barrelLength=0.21082; + ACE_barrelLength=210.82; }; class rhs_weap_svd: rhs_weap_ak74m { ACE_barrelTwist=238.76; - ACE_barrelLength=0.61976; + ACE_barrelLength=619.76; }; class rhs_weap_svdp; class rhs_weap_svds: rhs_weap_svdp { ACE_barrelTwist=238.76; - ACE_barrelLength=0.56388; + ACE_barrelLength=563.88; }; class rhs_pkp_base; class rhs_weap_pkp: rhs_pkp_base { ACE_barrelTwist=240.03; - ACE_barrelLength=0.65786; + ACE_barrelLength=657.86; }; class rhs_weap_pkm: rhs_weap_pkp { ACE_barrelTwist=240.03; - ACE_barrelLength=0.64516; + ACE_barrelLength=645.16; }; class rhs_weap_rpk74m: rhs_weap_pkp { ACE_barrelTwist=195.072; - ACE_barrelLength=0.58928; + ACE_barrelLength=589.28; }; class rhs_acc_sniper_base; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index b46f155b17..382ad1480e 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -13,7 +13,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={847, 867, 877}; - ACE_barrelLengths[]={0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; class B_556x45_Ball; class rhs_ammo_556x45_Mk318_Ball: B_556x45_Ball @@ -27,7 +27,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={780, 886, 950}; - ACE_barrelLengths[]={0.254, 0.3937, 0.508}; + ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class rhs_ammo_556x45_Mk262_Ball: B_556x45_Ball { @@ -40,7 +40,7 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={624, 816, 832, 838}; - ACE_barrelLengths[]={0.1905, 0.3683, 0.4572, 0.508}; + ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0}; }; class rhs_ammo_762x51_M80_Ball: BulletBase { @@ -53,7 +53,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; - ACE_barrelLengths[]={0.254, 0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; class rhs_ammo_762x51_M118_Special_Ball: rhs_ammo_762x51_M80_Ball { @@ -66,7 +66,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; - ACE_barrelLengths[]={0.4064, 0.508, 0.6096, 0.6604}; + ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; class rhs_ammo_762x51_M993_Ball: rhs_ammo_762x51_M80_Ball { @@ -79,7 +79,7 @@ class CfgAmmo ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={875, 910, 930}; - ACE_barrelLengths[]={0.3302, 0.4064, 0.508}; + ACE_barrelLengths[]={330.2, 406.4, 508.0}; }; class rhs_ammo_45ACP_MHP: BulletBase { @@ -92,6 +92,6 @@ class CfgAmmo ACE_standardAtmosphere="ASM"; ACE_dragModel=1; ACE_muzzleVelocities[]={230, 250, 285}; - ACE_barrelLengths[]={0.1016, 0.127, 0.2286}; + ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; }; \ No newline at end of file diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index 36968ce6c7..72ea2db1e7 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -7,69 +7,69 @@ class CfgWeapons class rhs_weap_XM2010_Base_F: Rifle_Base_F { ACE_barrelTwist=254.0; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class arifle_MX_Base_F; class rhs_weap_m4_Base: arifle_MX_Base_F { ACE_barrelTwist=177.8; - ACE_barrelLength=0.3683; + ACE_barrelLength=368.3; }; class rhs_weap_m4a1; class rhs_weap_mk18: rhs_weap_m4a1 { ACE_barrelTwist=177.8; - ACE_barrelLength=0.26162; + ACE_barrelLength=261.62; }; class rhs_weap_m16a4: rhs_weap_m4_Base { ACE_barrelTwist=177.8; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class rhs_M249_base; class rhs_weap_m249_pip: rhs_M249_base { ACE_barrelTwist=177.8; - ACE_barrelLength=0.41402; + ACE_barrelLength=414.02; }; class weap_m240_base; class rhs_weap_m240B: weap_m240_base { ACE_barrelTwist=304.8; - ACE_barrelLength=0.62992; + ACE_barrelLength=629.92; }; class rhs_weap_m14ebrri: srifle_EBR_F { ACE_barrelTwist=304.8; - ACE_barrelLength=0.5588; + ACE_barrelLength=558.8; }; class rhs_weap_sr25: rhs_weap_m14ebrri { ACE_barrelTwist=285.75; - ACE_barrelLength=0.6096; + ACE_barrelLength=609.6; }; class rhs_weap_sr25_ec: rhs_weap_sr25 { ACE_barrelTwist=285.75; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class rhs_weap_M590_5RD: Rifle_Base_F { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.4699; + ACE_barrelLength=469.9; }; class rhs_weap_M590_8RD: rhs_weap_M590_5RD { ACE_barrelTwist=0.0; ACE_twistDirection=0; - ACE_barrelLength=0.508; + ACE_barrelLength=508.0; }; class hgun_ACPC2_F; class rhsusf_weap_m1911a1: hgun_ACPC2_F { ACE_barrelTwist=406.4; - ACE_barrelLength=0.127; + ACE_barrelLength=127.0; }; class rhsusf_acc_sniper_base; From 0e74fa56f70592e3e05a0a9775022693ec1f68a9 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 13:45:00 +0200 Subject: [PATCH 0060/1101] Corrected several armour piercing round configs --- addons/atragmx/XEH_postInit.sqf | 6 ++++-- addons/atragmx/script_component.hpp | 2 +- addons/ballistics/CfgAmmo.hpp | 24 ++++++++++++------------ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 7b0a2c9962..1e86838b8b 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -19,7 +19,7 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == [".338LM 250gr" , 880, 100, 0.0598, -0.0006060, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"], [".338LM 300gr" , 800, 100, 0.0677, -0.0005350, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"], - [".338LM API526" , 880, 100, 0.0601, -0.0006730, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.290, 7, "ICAO"], + [".338LM API526" , 895, 100, 0.0601, -0.0006730, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ], [".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"], [".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"], @@ -30,6 +30,7 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ["7.62x51mm M80" , 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"], ["7.62x51mm M118LR" , 780, 100, 0.0710, -0.0008525, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"], ["7.62x51mm Mk319" , 910, 100, 0.0585, -0.0010300, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"], + ["7.62x51mm M993" , 930, 100, 0.0585, -0.0010300, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"], ["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"], ["6.5x39mm" , 800, 100, 0.0683, -0.0007850, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"], @@ -38,7 +39,8 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ["5.56x45mm M855" , 870, 100, 0.0626, -0.0012650, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ], ["5.56x45mm Mk262" , 820, 100, 0.0671, -0.0011250, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ], - ["5.56x45mm Mk318" , 880, 100, 0.0616, -0.0011200, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ]]; + ["5.56x45mm Mk318" , 880, 100, 0.0616, -0.0011200, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ], + ["5.56x45mm M995" , 869, 100, 0.0616, -0.0011200, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]]; [] call FUNC(clear_user_data); profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp index 090e82246d..585070d401 100644 --- a/addons/atragmx/script_component.hpp +++ b/addons/atragmx/script_component.hpp @@ -11,4 +11,4 @@ #include "\z\ace\addons\main\script_macros.hpp" -#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.4 +#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.5 diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 59fa7cf621..3ab265091e 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -75,16 +75,16 @@ class CfgAmmo { caliber=1.6; deflecting=18; hit=6; - typicalSpeed=886; + typicalSpeed=869; ACE_caliber=5.69; ACE_bulletLength=23.012; - ACE_bulletMass=2.9808; + ACE_bulletMass=4.5359237; 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.151}; + ACE_ballisticCoefficients[]={0.310}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ASM"; - ACE_dragModel=7; - ACE_muzzleVelocities[]={950, 1030, 1040}; + ACE_dragModel=1; + ACE_muzzleVelocities[]={820, 865, 880}; ACE_barrelLengths[]={254.0, 393.7, 508.0}; }; class B_556x45_Ball_Tracer_Red; @@ -253,12 +253,12 @@ class CfgAmmo { airFriction=-0.00103; caliber=2.2; hit=11; - typicalSpeed=930; + typicalSpeed=910; ACE_caliber=7.823; ACE_bulletLength=31.496; - ACE_bulletMass=8.2296; + ACE_bulletMass=8.22946157; 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.377}; + ACE_ballisticCoefficients[]={0.359}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; @@ -657,15 +657,15 @@ class CfgAmmo { timeToLive=10; airFriction=-0.000673; caliber=2.8; - typicalSpeed=826; + typicalSpeed=895; ACE_caliber=8.585; ACE_bulletLength=38.989; - ACE_bulletMass=16.3944; + ACE_bulletMass=16.3941242; 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.290}; + ACE_ballisticCoefficients[]={0.560}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; - ACE_dragModel=7; + ACE_dragModel=1; ACE_muzzleVelocities[]={880, 915, 925}; ACE_barrelLengths[]={508.0, 660.4, 711.2}; }; From 3495196f40b53984367b2d46d91d30a2db182670 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 13:56:38 +0200 Subject: [PATCH 0061/1101] Fixes broken ATragMX (calculateStabilityFactor now requires metric input) --- addons/atragmx/functions/fnc_calculate_range_card.sqf | 4 ++-- addons/atragmx/functions/fnc_calculate_target_solution.sqf | 4 ++-- 2 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 cfaf7441f8..5d5253d1bf 100644 --- a/addons/atragmx/functions/fnc_calculate_range_card.sqf +++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf @@ -52,11 +52,11 @@ if (!GVAR(atmosphereModeTBH)) then { }; private ["_bulletLength", "_stabilityFactor"]; -_bulletLength = 1.8; +_bulletLength = 45.72; _stabilityFactor = 1.5; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { - _stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor); + _stabilityFactor = [_bulletDiameter, _bulletLength, _bulletMass, _barrelTwist * 10, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor); }; }; diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf index 677c4bb793..2be1197a9b 100644 --- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf @@ -52,11 +52,11 @@ if (!GVAR(atmosphereModeTBH)) then { }; private ["_bulletLength", "_stabilityFactor"]; -_bulletLength = 1.8; +_bulletLength = 45.72; _stabilityFactor = 1.5; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { - _stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor); + _stabilityFactor = [_bulletDiameter, _bulletLength, _bulletMass, _barrelTwist * 10, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor); }; }; From 6b604c101cf5f2e1b3af60bba85bf7984ddde7e5 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 14:14:15 +0200 Subject: [PATCH 0062/1101] First working version --- addons/viewdistance/ACE_Settings.hpp | 25 ++++++++--- addons/viewdistance/CfgEventHandlers.hpp | 6 +++ addons/viewdistance/XEH_postInit.sqf | 4 ++ addons/viewdistance/XEH_preInit.sqf | 6 ++- addons/viewdistance/config.cpp | 2 +- .../functions/fnc_changeViewDistance.sqf | 27 +++++++++--- .../functions/fnc_initViewDistance.sqf | 24 +++++++++++ .../functions/fnc_returnViewDistanceValue.sqf | 42 +++++++++++++++++++ 8 files changed, 123 insertions(+), 13 deletions(-) create mode 100644 addons/viewdistance/XEH_postInit.sqf create mode 100644 addons/viewdistance/functions/fnc_initViewDistance.sqf create mode 100644 addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index 572358876a..48e5f7324e 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -1,9 +1,24 @@ class ACE_Settings { - class GVAR(viewdistance) { + class GVAR(changeAllowed) { + typeName = "BOOL"; + value = 1; + displayName = "Allow View Distance Changing"; + description = "Enables changing in game view distance"; + }; + class GVAR(top_limit) { + typeName = "SCALAR"; + values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; // correspond to the index values + displayName = "View Distance Limit"; + description = "Sets the top limit for all clients"; + }; + class GVAR(newViewDistance) { typeName = "SCALAR"; isClientSettable = 1; - values[] = {1500,2000,2500,3000,3500,4000,5000,6000,7000,8000,9000,10000}; - displayName = "View Distance"; // has to be changed to string table type - description = "Change View Distance"; + //value = 1; + values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; + displayName = "Change View Distance"; + description = "Changes in game view distance"; }; -}; \ No newline at end of file +}; + +// To do: include string table style displayName & description. \ No newline at end of file diff --git a/addons/viewdistance/CfgEventHandlers.hpp b/addons/viewdistance/CfgEventHandlers.hpp index f0a9f14d91..0f1d8878ba 100644 --- a/addons/viewdistance/CfgEventHandlers.hpp +++ b/addons/viewdistance/CfgEventHandlers.hpp @@ -4,3 +4,9 @@ class Extended_PreInit_EventHandlers { 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/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf new file mode 100644 index 0000000000..8f1fd94fc3 --- /dev/null +++ b/addons/viewdistance/XEH_postInit.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" + +if (!hasInterface || !GVAR(enabled)) exitWith {}; +[] call FUNC(initViewDistance); \ No newline at end of file diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index 69abb46fa9..4da9b33c83 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -2,6 +2,8 @@ ADDON = false; -PREP(empty); +PREP(returnViewDistanceValue); +PREP(changeViewDistance); +PREP(initViewDistance); -ADDON = true; +ADDON = true; \ No newline at end of file diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index dcffe0f257..86453c5be3 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -13,4 +13,4 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" -#include "ACE_Settings.hpp" \ No newline at end of file +#include "ACE_Settings.hpp" \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 4543be000b..f28ce70e3d 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -4,21 +4,38 @@ * * * Arguments: - * 0: View Distance Setting (SCALAR) + * None * * Return Value: * None * * Example: - * [1500] call ace_common_fnc_imanexample + * [] call ace_viewdistance_fnc_changeViewDistance; * * Public: No */ #include "script_component.hpp" -private ["_new_view_distance"]; +private ["_new_view_distance_index","_new_view_distance"]; -_new_view_distance = _this select 0; +_new_view_distance_index = GVAR(newViewDistance); -player setViewDistance (_new_view_distance); \ No newline at end of file +_new_view_distance = [_new_view_distance_index] call FUNC(returnViewDistanceValue); + +/* +hint format ["DEBUG: Player: %1 new view distance index: %2 new view distance value: %3",(name player),_new_view_distance_index,_new_view_distance]; +diag_log format ["DEBUG: Player: %1 new view distance index: %2 new view distance value: %3",(name player),_new_view_distance_index,_new_view_distance]; +*/ + + +// To do: add a check against a sever or module top limit here. + +if !GVAR(changeAllowed) then +{ + hint "You cannot change the view distance!" +} +else +{ + setViewDistance _new_view_distance; +}; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_initViewDistance.sqf b/addons/viewdistance/functions/fnc_initViewDistance.sqf new file mode 100644 index 0000000000..2a419fe7fc --- /dev/null +++ b/addons/viewdistance/functions/fnc_initViewDistance.sqf @@ -0,0 +1,24 @@ +/* + * Author: Winter + * Sets the player's current view distance according to allowed values. + * + * + * Arguments: + * 0: View Distance Setting (SCALAR) + * + * Return Value: + * None + * + * Example: + * [1500] call ace_common_fnc_imanexample + * + * Public: No + */ + +#include "script_component.hpp" + +["SettingChanged",{ + if (_this select 0 == QGVAR(newViewDistance)) then { + [] call FUNC(changeViewDistance); + }; +},true] call ace_common_fnc_addEventHandler; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf new file mode 100644 index 0000000000..7d55062c65 --- /dev/null +++ b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf @@ -0,0 +1,42 @@ +/* + * Author: Winter + * Returns the view distance value according to the given index + * + * + * Arguments: + * 0: View Distance Index (SCALAR) + * + * Return Value: + * View Distance (SCALAR) + * + * Example: + * [2] call ace_viewdistance_fnc_returnViewDistanceValue; + * + * Public: Yes + */ + +#include "script_component.hpp" + +private ["_index","_return"]; + +_index = _this select 0; +_return = 0; + +switch (_index) do +{ + case 0: {_return = 1500}; + case 1: {_return = 2000}; + case 2: {_return = 2500}; + case 3: {_return = 3000}; + case 4: {_return = 3500}; + case 5: {_return = 4000}; + case 6: {_return = 5000}; + case 7: {_return = 6000}; + case 8: {_return = 7000}; + case 9: {_return = 8000}; + case 10: {_return = 9000}; + case 11: {_return = 10000}; + default {hint "something broke!";}; +}; + +_return; \ No newline at end of file From a5d68f122d6975ec20d051b8599f99e35e5255b8 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 14:49:52 +0200 Subject: [PATCH 0063/1101] Added working limiter (config based) --- addons/viewdistance/ACE_Settings.hpp | 9 ++--- .../functions/fnc_changeViewDistance.sqf | 34 ++++++++----------- .../functions/fnc_returnViewDistanceValue.sqf | 30 ++++++++-------- 3 files changed, 36 insertions(+), 37 deletions(-) diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index 48e5f7324e..55b38df7df 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -3,18 +3,19 @@ class ACE_Settings { typeName = "BOOL"; value = 1; displayName = "Allow View Distance Changing"; - description = "Enables changing in game view distance"; + description = "Allows clients to be able to change their view distance"; }; - class GVAR(top_limit) { + class GVAR(topViewDistanceLimit) { typeName = "SCALAR"; + value = 11; // setting the highest number in the array below means no limit. values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; // correspond to the index values - displayName = "View Distance Limit"; + displayName = "Change View Distance Limit"; description = "Sets the top limit for all clients"; }; class GVAR(newViewDistance) { typeName = "SCALAR"; isClientSettable = 1; - //value = 1; + value = 0; // not sure what to set this to. values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; displayName = "Change View Distance"; description = "Changes in game view distance"; diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index f28ce70e3d..a25837bd0f 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -17,25 +17,21 @@ #include "script_component.hpp" -private ["_new_view_distance_index","_new_view_distance"]; +private ["_new_view_distance","_new_view_distance_limit"]; -_new_view_distance_index = GVAR(newViewDistance); +_new_view_distance = [GVAR(newViewDistance)] call FUNC(returnViewDistanceValue); +_view_distance_limit = [GVAR(topViewDistanceLimit)] call FUNC(returnViewDistanceValue); -_new_view_distance = [_new_view_distance_index] call FUNC(returnViewDistanceValue); +if !GVAR(changeAllowed) then { + hint "You are not allowed to change the view distance!"; +} else { + if (_new_view_distance > _view_distance_limit) then { + hint format ["That option is not allowed! The limit is: %1m",_view_distance_limit]; + } + else { + hint format ["View distance successfully changed to: %1m",_new_view_distance]; + setViewDistance _new_view_distance; + }; +}; -/* -hint format ["DEBUG: Player: %1 new view distance index: %2 new view distance value: %3",(name player),_new_view_distance_index,_new_view_distance]; -diag_log format ["DEBUG: Player: %1 new view distance index: %2 new view distance value: %3",(name player),_new_view_distance_index,_new_view_distance]; -*/ - - -// To do: add a check against a sever or module top limit here. - -if !GVAR(changeAllowed) then -{ - hint "You cannot change the view distance!" -} -else -{ - setViewDistance _new_view_distance; -}; \ No newline at end of file +// To do: add a check against a module limit. \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf index 7d55062c65..ec55a2a755 100644 --- a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf +++ b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf @@ -4,10 +4,10 @@ * * * Arguments: - * 0: View Distance Index (SCALAR) + * 0: View Distance Index * * Return Value: - * View Distance (SCALAR) + * View Distance * * Example: * [2] call ace_viewdistance_fnc_returnViewDistanceValue; @@ -22,20 +22,22 @@ private ["_index","_return"]; _index = _this select 0; _return = 0; + +// change to if () exitWith {};? switch (_index) do { - case 0: {_return = 1500}; - case 1: {_return = 2000}; - case 2: {_return = 2500}; - case 3: {_return = 3000}; - case 4: {_return = 3500}; - case 5: {_return = 4000}; - case 6: {_return = 5000}; - case 7: {_return = 6000}; - case 8: {_return = 7000}; - case 9: {_return = 8000}; - case 10: {_return = 9000}; - case 11: {_return = 10000}; + case 0: {_return = 1500;}; + case 1: {_return = 2000;}; + case 2: {_return = 2500;}; + case 3: {_return = 3000;}; + case 4: {_return = 3500;}; + case 5: {_return = 4000;}; + case 6: {_return = 5000;}; + case 7: {_return = 6000;}; + case 8: {_return = 7000;}; + case 9: {_return = 8000;}; + case 10: {_return = 9000;}; + case 11: {_return = 10000;}; default {hint "something broke!";}; }; From fd0ca58fe6c600c46b4a013ea787a36d129f92a8 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 15:25:32 +0200 Subject: [PATCH 0064/1101] Fixes broken bullet trace effect (caliber is now in mm, not inches) --- addons/advanced_ballistics/functions/fnc_handleFired.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index e63b1d7dfc..f6458b5f41 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -158,7 +158,7 @@ GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000; }; if (_bulletTraceVisible && _bulletSpeed > 600) then { - drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.4*_caliber,0.2*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""]; + drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.0157480315*_caliber,0.00787401574*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""]; }; call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, floor(time), time - floor(time)]); From bb625aac583e24702e5b09b7591e714e8e9f4448 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 15:27:13 +0200 Subject: [PATCH 0065/1101] Used ACE common function instead of hint --- .../viewdistance/functions/fnc_changeViewDistance.sqf | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index a25837bd0f..046a483557 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -17,19 +17,22 @@ #include "script_component.hpp" -private ["_new_view_distance","_new_view_distance_limit"]; +private ["_text","_new_view_distance","_view_distance_limit"]; _new_view_distance = [GVAR(newViewDistance)] call FUNC(returnViewDistanceValue); _view_distance_limit = [GVAR(topViewDistanceLimit)] call FUNC(returnViewDistanceValue); if !GVAR(changeAllowed) then { - hint "You are not allowed to change the view distance!"; + _text = "You are not allowed to change the view distance!"; + [_text,2] call EFUNC(common,displayTextStructured); } else { if (_new_view_distance > _view_distance_limit) then { - hint format ["That option is not allowed! The limit is: %1m",_view_distance_limit]; + _text = composeText ["That option is not allowed! The limit is: ",str(_view_distance_limit)]; + [_text,1] call EFUNC(common,displayTextStructured); } else { - hint format ["View distance successfully changed to: %1m",_new_view_distance]; + _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; + [_text,1] call EFUNC(common,displayTextStructured); setViewDistance _new_view_distance; }; }; From 5732015370f9ca2c8ac1d9e365c822b2ad442554 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 15:36:47 +0200 Subject: [PATCH 0066/1101] Added moduleViewDistance file --- addons/viewdistance/XEH_preInit.sqf | 1 + .../functions/fnc_changeViewDistance.sqf | 2 +- .../functions/fnc_initViewDistance.sqf | 8 +++---- .../functions/fnc_moduleViewDistance.sqf | 23 +++++++++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 addons/viewdistance/functions/fnc_moduleViewDistance.sqf diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index 4da9b33c83..94c52ce76a 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -2,6 +2,7 @@ ADDON = false; +PREP(moduleViewDistance); PREP(returnViewDistanceValue); PREP(changeViewDistance); PREP(initViewDistance); diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 046a483557..f514951c20 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -12,7 +12,7 @@ * Example: * [] call ace_viewdistance_fnc_changeViewDistance; * - * Public: No + * Public: Yes */ #include "script_component.hpp" diff --git a/addons/viewdistance/functions/fnc_initViewDistance.sqf b/addons/viewdistance/functions/fnc_initViewDistance.sqf index 2a419fe7fc..c425338c3f 100644 --- a/addons/viewdistance/functions/fnc_initViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_initViewDistance.sqf @@ -1,18 +1,18 @@ /* * Author: Winter - * Sets the player's current view distance according to allowed values. + * Assigns the Event Handler which fires when a player adjusts their view distance in the menu * * * Arguments: - * 0: View Distance Setting (SCALAR) + * None * * Return Value: * None * * Example: - * [1500] call ace_common_fnc_imanexample + * [] call ace_viewdistance_fnc_initViewDistance; * - * Public: No + * Public: Yes */ #include "script_component.hpp" diff --git a/addons/viewdistance/functions/fnc_moduleViewDistance.sqf b/addons/viewdistance/functions/fnc_moduleViewDistance.sqf new file mode 100644 index 0000000000..5e7d3da94b --- /dev/null +++ b/addons/viewdistance/functions/fnc_moduleViewDistance.sqf @@ -0,0 +1,23 @@ +/* + * Author: Winter + * Initialises the view distance limiter module + * + * + * Arguments: + * + * + * Return Value: + * View Distance Limit + * + * Example: + * + */ + +#include "script_component.hpp" + +if (!isServer) exitWith {}; +/* +PARAMS_2(_logic,_activated); + +if !(_activated) exitWith {}; +*/ \ No newline at end of file From 3e6c203655eacd9b88b7fdf504ca75e90ed28c97 Mon Sep 17 00:00:00 2001 From: jaynus Date: Fri, 8 May 2015 06:57:19 -0700 Subject: [PATCH 0067/1101] size+1 --- 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 554c21b601..e6c55184a7 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -340,7 +340,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) tickTime += strtod(strtok_s(NULL, ":", &next_token), NULL); if (index >= bulletDatabase.size()) - bulletDatabase.resize(index); + bulletDatabase.resize(index+1); bulletDatabase[index].airFriction = airFriction; bulletDatabase[index].ballisticCoefficients = ballisticCoefficients; From 1f15e68c304a3576b7cba709e13fcafd52be8f33 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 16:00:41 +0200 Subject: [PATCH 0068/1101] Global variable cleanup --- addons/advanced_ballistics/XEH_postInit.sqf | 15 +-------------- .../functions/fnc_initializeTerrainExtension.sqf | 4 ++-- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index 8efdd6799b..b59737412a 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -4,24 +4,11 @@ GVAR(currentbulletID) = -1; -GVAR(bulletDatabase) = []; -GVAR(bulletDatabaseStartTime) = []; -GVAR(bulletDatabaseSpeed) = []; -GVAR(bulletDatabaseFrames) = []; -GVAR(bulletDatabaseLastFrame) = []; -GVAR(bulletDatabaseHDeflect) = []; -GVAR(bulletDatabaseSpinDrift) = []; -GVAR(bulletDatabaseOccupiedIndices) = []; -GVAR(bulletDatabaseFreeIndices) = []; - -GVAR(WindInfo) = false; -GVAR(WindInfoStart) = time; - GVAR(Protractor) = false; GVAR(ProtractorStart) = time; GVAR(currentGrid) = 0; -GVAR(INIT_MESSAGE_ENABLED) = false; +GVAR(initMessageEnabled) = false; GVAR(extensionAvailable) = true; /* @TODO: Remove this until versioning is in sync with cmake/build versioning diff --git a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf index 3930526433..93a79138c6 100644 --- a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf +++ b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf @@ -22,7 +22,7 @@ _initStartTime = time; _mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize"); if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith { - if (GVAR(INIT_MESSAGE_ENABLED)) then { + if (GVAR(initMessageEnabled)) then { systemChat "AdvancedBallistics: Terrain already initialized"; }; }; @@ -40,7 +40,7 @@ GVAR(currentGrid) = 0; _initStartTime = _args select 2; if (GVAR(currentGrid) >= _gridCells) exitWith { - if (GVAR(INIT_MESSAGE_ENABLED)) then { + if (GVAR(initMessageEnabled)) then { systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(time - _initStartTime)]; }; [_this select 1] call cba_fnc_removePerFrameHandler; From 6cda97e3a0cd540d37052c8aed5fcd368171c6d7 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 16:07:57 +0200 Subject: [PATCH 0069/1101] Adding required files for module integration --- addons/viewdistance/CfgVehicles.hpp | 20 ++++++++++++++ addons/viewdistance/XEH_postInit.sqf | 1 + .../functions/fnc_changeViewDistance.sqf | 3 +++ .../functions/fnc_moduleViewDistance.sqf | 12 ++++++--- .../functions/fnc_returnViewDistanceLimit.sqf | 26 +++++++++++++++++++ .../functions/fnc_returnViewDistanceValue.sqf | 4 +-- 6 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 addons/viewdistance/CfgVehicles.hpp create mode 100644 addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp new file mode 100644 index 0000000000..a39c94c4c5 --- /dev/null +++ b/addons/viewdistance/CfgVehicles.hpp @@ -0,0 +1,20 @@ +class CfgVehicles { + class Module_F; + class ACE_ModuleViewDistance : Module_F { + author = "$STR_ACE_Common_ACETeam"; + category = "ACE"; + displayName = "View Distance Limit"; + function = QFUNC(moduleViewDistance); + scope = 2; + isGlobal = 1; + //icon = ""; // needs an icon + class Arguments { + class ViewDistanceLimit { + displayName = "View Distance setting limit"; + description = "Sets the limit for how high clients can raise their view distance (< 10,000)"; + typeName = "NUMBER"; + defaultValue = 10000; + }; + }; + }; +}; \ No newline at end of file diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index 8f1fd94fc3..85cd16d387 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -1,4 +1,5 @@ #include "script_component.hpp" +[] call FUNC(moduleViewDistance); if (!hasInterface || !GVAR(enabled)) exitWith {}; [] call FUNC(initViewDistance); \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index f514951c20..e7529d6116 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -19,9 +19,12 @@ private ["_text","_new_view_distance","_view_distance_limit"]; +// Change the received index number into an actual view distance number as set in the config: _new_view_distance = [GVAR(newViewDistance)] call FUNC(returnViewDistanceValue); + _view_distance_limit = [GVAR(topViewDistanceLimit)] call FUNC(returnViewDistanceValue); + if !GVAR(changeAllowed) then { _text = "You are not allowed to change the view distance!"; [_text,2] call EFUNC(common,displayTextStructured); diff --git a/addons/viewdistance/functions/fnc_moduleViewDistance.sqf b/addons/viewdistance/functions/fnc_moduleViewDistance.sqf index 5e7d3da94b..582db6ea79 100644 --- a/addons/viewdistance/functions/fnc_moduleViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_moduleViewDistance.sqf @@ -15,9 +15,15 @@ #include "script_component.hpp" -if (!isServer) exitWith {}; -/* +if (!isServer) exitWith { + GVAR(modulePresent) = false +}; + PARAMS_2(_logic,_activated); if !(_activated) exitWith {}; -*/ \ No newline at end of file + +GVAR(modulePresent) = true; +publicVariable QGVAR(modulePresent); + +diag_log text "[ACE]: ViewDistance Module Initialized."; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf new file mode 100644 index 0000000000..cfdb30fe05 --- /dev/null +++ b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf @@ -0,0 +1,26 @@ +/* + * Author: Winter + * Returns the view distance limit depending on either the config or (if present) the module. + * + * + * Arguments: + * None + * + * Return Value: + * View Distance Limit + * + * Example: + * [] call ace_viewdistance_fnc_returnViewDistanceLimit; + * + * Public: Yes + */ + +#include "script_component.hpp" + +if GVAR(modulePresent) then { + // module always takes priority + _view_distance_limit = +} else { + +}; +// To do: add a check against a module limit. \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf index ec55a2a755..0c14214371 100644 --- a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf +++ b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf @@ -17,9 +17,9 @@ #include "script_component.hpp" -private ["_index","_return"]; +PARAMS_1(_index); -_index = _this select 0; +private ["_return"]; _return = 0; From 9a0fcd4fece4a5580d0c43a7f40c17333208c771 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 17:20:56 +0200 Subject: [PATCH 0070/1101] AB config read caching --- addons/advanced_ballistics/XEH_postInit.sqf | 5 + ..._calculateAmmoTemperatureVelocityShift.sqf | 18 +-- ...fnc_calculateBarrelLengthVelocityShift.sqf | 29 ++--- .../functions/fnc_handleFired.sqf | 123 +++++++++++------- 4 files changed, 97 insertions(+), 78 deletions(-) diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index b59737412a..faaa468bc8 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -4,6 +4,11 @@ GVAR(currentbulletID) = -1; +GVAR(AmmoCacheIndex) = []; +GVAR(AmmoCacheData) = []; +GVAR(WeaponCacheIndex) = []; +GVAR(WeaponCacheData) = []; + GVAR(Protractor) = false; GVAR(ProtractorStart) = time; diff --git a/addons/advanced_ballistics/functions/fnc_calculateAmmoTemperatureVelocityShift.sqf b/addons/advanced_ballistics/functions/fnc_calculateAmmoTemperatureVelocityShift.sqf index c92e679a66..28df9d1d97 100644 --- a/addons/advanced_ballistics/functions/fnc_calculateAmmoTemperatureVelocityShift.sqf +++ b/addons/advanced_ballistics/functions/fnc_calculateAmmoTemperatureVelocityShift.sqf @@ -4,7 +4,7 @@ * Calculates the ammo temperature induced muzzle velocity shift * * Arguments: - * 0: ammo - classname + * 0: muzzle velocity shift lookup table - m/s * 1: temperature - degrees celcius * * Return Value: @@ -15,17 +15,11 @@ */ #include "script_component.hpp" -private ["_ammo", "_temperature", "_muzzleVelocityTable", "_muzzleVelocityShift", "_temperatureIndexA", "_temperatureIndexB", "_temperatureRatio"]; -_ammo = _this select 0; -_temperature = _this select 1; +private ["_muzzleVelocityShiftTable", "_temperature", "_muzzleVelocityShift", "_temperatureIndexA", "_temperatureIndexB", "_temperatureRatio"]; +_muzzleVelocityShiftTable = _this select 0; +_temperature = _this select 1; -_muzzleVelocityTable = []; - -if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts")) then { - _muzzleVelocityTable = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts"); -}; - -if (count _muzzleVelocityTable != 11) exitWith { 0 }; +if (count _muzzleVelocityShiftTable != 11) exitWith { 0 }; _temperatureIndexA = floor((_temperature + 15) / 5); _temperatureIndexA = 0 max _temperatureIndexA; @@ -37,6 +31,6 @@ _temperatureIndexB = _temperatureIndexB min 10; _temperatureRatio = ((_temperature + 15) / 5) - floor((_temperature + 15) / 5); -_muzzleVelocityShift = (_muzzleVelocityTable select _temperatureIndexA) * (1 - _temperatureRatio) + (_muzzleVelocityTable select _temperatureIndexB) * _temperatureRatio; +_muzzleVelocityShift = (_muzzleVelocityShiftTable select _temperatureIndexA) * (1 - _temperatureRatio) + (_muzzleVelocityShiftTable select _temperatureIndexB) * _temperatureRatio; _muzzleVelocityShift diff --git a/addons/advanced_ballistics/functions/fnc_calculateBarrelLengthVelocityShift.sqf b/addons/advanced_ballistics/functions/fnc_calculateBarrelLengthVelocityShift.sqf index b4cbd5bdc0..de037f49bc 100644 --- a/addons/advanced_ballistics/functions/fnc_calculateBarrelLengthVelocityShift.sqf +++ b/addons/advanced_ballistics/functions/fnc_calculateBarrelLengthVelocityShift.sqf @@ -4,9 +4,10 @@ * Calculates the muzzle velocity shift caused by different barrel lengths * * Arguments: - * 0: ammo - classname - * 0: weapon - classname - * 1: muzzle velocity - m/s + * 0: barrel length - mm + * 1: muzzle velocity lookup table - m/s + * 2: barrel length lookup table - mm + * 3: muzzle velocity - m/s * * Return Value: * 0: muzzle velocity shift - m/s @@ -16,25 +17,13 @@ */ #include "script_component.hpp" -private ["_ammo", "_weapon", "_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity", "_lowerIndex", "_upperIndex", "_barrelLengthRatio", "_muzzleVelocityNew"]; -_ammo = _this select 0; -_weapon = _this select 1; -_muzzleVelocity = _this select 2; - -_barrelLength = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelLength"); +private ["_barrelLength", "_muzzleVelocityTable", "_barrelLengthTable", "_muzzleVelocity", "_lowerIndex", "_upperIndex", "_barrelLengthRatio", "_muzzleVelocityNew"]; +_barrelLength = _this select 0; +_muzzleVelocityTable = _this select 1; +_barrelLengthTable = _this select 2; +_muzzleVelocity = _this select 3; if (_barrelLength == 0) exitWith { 0 }; - -_muzzleVelocityTable = []; -_barrelLengthTable = []; - -if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_muzzleVelocities")) then { - _muzzleVelocityTable = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_muzzleVelocities"); -}; -if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_barrelLengths")) then { - _barrelLengthTable = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_barrelLengths"); -}; - if (count _muzzleVelocityTable != count _barrelLengthTable) exitWith { 0 }; if (count _muzzleVelocityTable == 0 || count _barrelLengthTable == 0) exitWith { 0 }; if (count _muzzleVelocityTable == 1) exitWith { (_muzzleVelocityTable select 0) - _muzzleVelocity }; diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index f6458b5f41..5862786228 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -19,7 +19,7 @@ */ #include "script_component.hpp" -private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_index", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ballisticCoefficients", "_velocityBoundaries"]; +private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_AmmoCacheIndex", "_AmmoCacheEntry", "_WeaponCacheIndex", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_barrelLength", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ballisticCoefficients", "_velocityBoundaries"]; _unit = _this select 0; _weapon = _this select 1; _mode = _this select 3; @@ -40,7 +40,7 @@ if (GVAR(onlyActiveForLocalPlayers) && !(local _unit)) then { // The shooter is non local if (currentWeapon _unit == primaryWeapon _unit && count primaryWeaponItems _unit > 2) then { _opticsName = (primaryWeaponItems _unit) select 2; - _opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType"); + _opticType = getNumber(configFile >> "CfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType"); _abort = _opticType != 2; // We only abort if the non local shooter is not a sniper }; } else { @@ -48,19 +48,83 @@ if (GVAR(onlyActiveForLocalPlayers) && !(local _unit)) then { }; }; //if (!GVAR(vehicleGunnerEnabled) && !(_unit isKindOf "Man")) then { _abort = true; }; // We currently do not have firedEHs on vehicles -if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "cfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; }; +if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; }; if (_abort || !(GVAR(extensionAvailable))) exitWith { - [_bullet, getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction")] call EFUNC(winddeflection,updateTrajectoryPFH); + [_bullet, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")] call EFUNC(winddeflection,updateTrajectoryPFH); }; -_airFriction = getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction"); +_AmmoCacheIndex = GVAR(AmmoCacheIndex) find _ammo; +if (_AmmoCacheIndex == -1) then { + _airFriction = getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction"); + _caliber = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_caliber"); + _bulletLength = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletLength"); + _bulletMass = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletMass"); + _transonicStabilityCoef = 0.5; + if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef")) then { + _transonicStabilityCoef = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef"); + }; + _dragModel = 1; + _ballisticCoefficients = []; + _velocityBoundaries = []; + _atmosphereModel = "ICAO"; + if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel")) then { + _dragModel = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel"); + if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then { + _dragModel = 1; + }; + }; + if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then { + _ballisticCoefficients = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients"); + }; + if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then { + _velocityBoundaries = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries"); + }; + if (isText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then { + _atmosphereModel = getText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere"); + }; + _ammoTempMuzzleVelocityShifts = []; + if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts")) then { + _ammoTempMuzzleVelocityShifts = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts"); + }; + _muzzleVelocityTable = []; + _barrelLengthTable = []; + if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable")) then { + _muzzleVelocityTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable"); + }; + if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengths")) then { + _barrelLengthTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengthTable"); + }; + _AmmoCacheIndex = count GVAR(AmmoCacheIndex); + GVAR(AmmoCacheIndex) pushBack _ammo; + GVAR(AmmoCacheData) pushBack [_ammo, _airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable]; +}; +_AmmoCacheEntry = GVAR(AmmoCacheData) select _AmmoCacheIndex; + +_WeaponCacheIndex = GVAR(WeaponCacheIndex) find _weapon; +if (_WeaponCacheIndex == -1) then { + _barrelTwist = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelTwist"); + _twistDirection = 1; + if (isNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection")) then { + _twistDirection = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection"); + if (_twistDirection != -1 && _twistDirection != 0 && _twistDirection != 1) then { + _twistDirection = 1; + }; + }; + _barrelLength = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelLength"); + _WeaponCacheIndex = count GVAR(WeaponCacheIndex); + GVAR(WeaponCacheIndex) pushBack _weapon; + GVAR(WeaponCacheData) pushBack [_weapon, _barrelTwist, _twistDirection, _barrelLength]; +}; +_WeaponCacheEntry = GVAR(WeaponCacheData) select _WeaponCacheIndex; + +_airFriction = _AmmoCacheEntry select 1; _bulletVelocity = velocity _bullet; _muzzleVelocity = vectorMagnitude _bulletVelocity; if (GVAR(barrelLengthInfluenceEnabled)) then { - _muzzleVelocityShift = [_ammo, _weapon, _muzzleVelocity] call FUNC(calculateBarrelLengthVelocityShift); + _muzzleVelocityShift = [_WeaponCacheEntry select 3, _AmmoCacheEntry select 11, _AmmoCacheEntry select 12, _muzzleVelocity] call FUNC(calculateBarrelLengthVelocityShift); if (_muzzleVelocityShift != 0) then { _bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift)); _bullet setVelocity _bulletVelocity; @@ -70,7 +134,7 @@ if (GVAR(barrelLengthInfluenceEnabled)) then { if (GVAR(ammoTemperatureEnabled)) then { _temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2); - _muzzleVelocityShift = [_ammo, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift); + _muzzleVelocityShift = [_AmmoCacheEntry select 10, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift); if (_muzzleVelocityShift != 0) then { _bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift)); _bullet setVelocity _bulletVelocity; @@ -85,16 +149,16 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { } else { if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { _opticsName = (primaryWeaponItems ACE_player) select 2; - _opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType"); + _opticType = getNumber(configFile >> "CfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType"); _bulletTraceVisible = _opticType == 2; }; }; }; -_caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); -_bulletLength = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletLength"); -_bulletMass = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_bulletMass"); -_barrelTwist = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_barrelTwist"); +_caliber = _AmmoCacheEntry select 2; +_bulletLength = _AmmoCacheEntry select 3; +_bulletMass = _AmmoCacheEntry select 4; +_barrelTwist = _WeaponCacheEntry select 1; _stabilityFactor = 1.5; if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { @@ -103,42 +167,9 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th _stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor); }; -_twistDirection = 1; -if (isNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_twistDirection")) then { - _twistDirection = getNumber(configFile >> "cfgWeapons" >> _weapon >> "ACE_twistDirection"); - if (_twistDirection != -1 && _twistDirection != 0 && _twistDirection != 1) then { - _twistDirection = 1; - }; -}; - -_transonicStabilityCoef = 0.5; -if (isNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef")) then { - _transonicStabilityCoef = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef"); -}; - -_dragModel = 1; -_ballisticCoefficients = []; -_velocityBoundaries = []; -_atmosphereModel = "ICAO"; -if (isNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel")) then { - _dragModel = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_dragModel"); - if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then { - _dragModel = 1; - }; -}; -if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then { - _ballisticCoefficients = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_ballisticCoefficients"); -}; -if (isArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then { - _velocityBoundaries = getArray(configFile >> "cfgAmmo" >> _ammo >> "ACE_velocityBoundaries"); -}; -if (isText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then { - _atmosphereModel = getText(configFile >> "cfgAmmo" >> _ammo >> "ACE_standardAtmosphere"); -}; - GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000; -"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(time), time - floor(time)]; +"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _AmmoCacheEntry select 1, _AmmoCacheEntry select 7, _AmmoCacheEntry select 8, _AmmoCacheEntry select 9, _AmmoCacheEntry select 6, _stabilityFactor, _WeaponCacheEntry select 2, _muzzleVelocity, _AmmoCacheEntry select 5, getPosASL _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(time), time - floor(time)]; [{ private ["_args", "_index", "_bullet", "_caliber", "_bulletTraceVisible", "_bulletVelocity", "_bulletPosition"]; From 45992e5e7fb0fdce0327609ce827230e17f68aa6 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 18:30:28 +0200 Subject: [PATCH 0071/1101] All working except module returning any. ace_viewdistance_moduleViewDistanceLimit always returning as any. No error in the RPT relating to readSettingfromModule failing --- addons/viewdistance/ACE_Settings.hpp | 2 +- addons/viewdistance/CfgVehicles.hpp | 8 ++--- addons/viewdistance/XEH_postInit.sqf | 3 +- addons/viewdistance/XEH_preInit.sqf | 3 +- addons/viewdistance/config.cpp | 3 +- .../functions/fnc_changeViewDistance.sqf | 28 ++++++---------- .../functions/fnc_initViewDistance.sqf | 4 ++- addons/viewdistance/functions/fnc_module.sqf | 33 +++++++++++++++++++ .../functions/fnc_moduleViewDistance.sqf | 29 ---------------- .../functions/fnc_returnViewDistanceLimit.sqf | 18 +++++++--- .../functions/fnc_returnViewDistanceValue.sqf | 3 +- 11 files changed, 70 insertions(+), 64 deletions(-) create mode 100644 addons/viewdistance/functions/fnc_module.sqf delete mode 100644 addons/viewdistance/functions/fnc_moduleViewDistance.sqf diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index 55b38df7df..497fe0f330 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -5,7 +5,7 @@ class ACE_Settings { displayName = "Allow View Distance Changing"; description = "Allows clients to be able to change their view distance"; }; - class GVAR(topViewDistanceLimit) { + class GVAR(viewDistanceLimit) { typeName = "SCALAR"; value = 11; // setting the highest number in the array below means no limit. values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; // correspond to the index values diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index a39c94c4c5..4906edfecf 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -3,16 +3,16 @@ class CfgVehicles { class ACE_ModuleViewDistance : Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "View Distance Limit"; - function = QFUNC(moduleViewDistance); + displayName = "View Distance Limiter"; + function = QFUNC(module); scope = 2; isGlobal = 1; //icon = ""; // needs an icon class Arguments { - class ViewDistanceLimit { + class moduleViewDistanceLimit { displayName = "View Distance setting limit"; description = "Sets the limit for how high clients can raise their view distance (< 10,000)"; - typeName = "NUMBER"; + typeName = "SCALAR"; defaultValue = 10000; }; }; diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index 85cd16d387..6fffa14cc6 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -1,5 +1,4 @@ #include "script_component.hpp" -[] call FUNC(moduleViewDistance); -if (!hasInterface || !GVAR(enabled)) exitWith {}; +if (!GVAR(changeAllowed)) exitWith {}; // if viewdistance is disabled from config, exit here. [] call FUNC(initViewDistance); \ No newline at end of file diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index 94c52ce76a..9f66b79e2e 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -2,8 +2,9 @@ ADDON = false; -PREP(moduleViewDistance); +PREP(module); PREP(returnViewDistanceValue); +PREP(returnViewDistanceLimit); PREP(changeViewDistance); PREP(initViewDistance); diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index 86453c5be3..a1afbcc93f 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -13,4 +13,5 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" -#include "ACE_Settings.hpp" \ No newline at end of file +#include "ACE_Settings.hpp" +#include "CfgVehicles.hpp" \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index e7529d6116..4d35974466 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -22,22 +22,14 @@ private ["_text","_new_view_distance","_view_distance_limit"]; // Change the received index number into an actual view distance number as set in the config: _new_view_distance = [GVAR(newViewDistance)] call FUNC(returnViewDistanceValue); -_view_distance_limit = [GVAR(topViewDistanceLimit)] call FUNC(returnViewDistanceValue); +_view_distance_limit = [] call FUNC(returnViewDistanceLimit); - -if !GVAR(changeAllowed) then { - _text = "You are not allowed to change the view distance!"; - [_text,2] call EFUNC(common,displayTextStructured); -} else { - if (_new_view_distance > _view_distance_limit) then { - _text = composeText ["That option is not allowed! The limit is: ",str(_view_distance_limit)]; - [_text,1] call EFUNC(common,displayTextStructured); - } - else { - _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; - [_text,1] call EFUNC(common,displayTextStructured); - setViewDistance _new_view_distance; - }; -}; - -// To do: add a check against a module limit. \ No newline at end of file +if (_new_view_distance > _view_distance_limit) then { + _text = composeText ["That option is not allowed! The limit is: ",str(_view_distance_limit)]; + [_text,1] call EFUNC(common,displayTextStructured); +} +else { + _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; + [_text,1] call EFUNC(common,displayTextStructured); + setViewDistance _new_view_distance; +}; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_initViewDistance.sqf b/addons/viewdistance/functions/fnc_initViewDistance.sqf index c425338c3f..5372fdedca 100644 --- a/addons/viewdistance/functions/fnc_initViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_initViewDistance.sqf @@ -14,9 +14,11 @@ * * Public: Yes */ - + #include "script_component.hpp" +if (!hasInterface) exitWith {}; + ["SettingChanged",{ if (_this select 0 == QGVAR(newViewDistance)) then { [] call FUNC(changeViewDistance); diff --git a/addons/viewdistance/functions/fnc_module.sqf b/addons/viewdistance/functions/fnc_module.sqf new file mode 100644 index 0000000000..bf336bc88e --- /dev/null +++ b/addons/viewdistance/functions/fnc_module.sqf @@ -0,0 +1,33 @@ +/* + * Author: Winter + * Initialises the view distance limiter module + * + * + * Arguments: + * 0: logic + * 1: Synchronised Units + * 2: Module Activated + * + * Return Value: + * None + * + * Example: + * + */ + +#include "script_component.hpp" + +if (!isServer) exitWith {}; + +PARAMS_3(_logic,_units,_activated); + +if (!_activated) exitWith { + diag_log text "[ACE]: View Distance Limit Module is placed but NOT active"; +}; + +GVAR(modulePresent) = true; + +[_logic, QGVAR(moduleViewDistanceLimit),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); + +//hint format["[ACE]: View Distance Limit Module Initialized with limit: %1",GVAR(moduleViewDistanceLimit)]; // only used for debug +diag_log format["[ACE]: View Distance Limit Module Initialized with limit: %1",GVAR(moduleViewDistanceLimit)]; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_moduleViewDistance.sqf b/addons/viewdistance/functions/fnc_moduleViewDistance.sqf deleted file mode 100644 index 582db6ea79..0000000000 --- a/addons/viewdistance/functions/fnc_moduleViewDistance.sqf +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Author: Winter - * Initialises the view distance limiter module - * - * - * Arguments: - * - * - * Return Value: - * View Distance Limit - * - * Example: - * - */ - -#include "script_component.hpp" - -if (!isServer) exitWith { - GVAR(modulePresent) = false -}; - -PARAMS_2(_logic,_activated); - -if !(_activated) exitWith {}; - -GVAR(modulePresent) = true; -publicVariable QGVAR(modulePresent); - -diag_log text "[ACE]: ViewDistance Module Initialized."; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf index cfdb30fe05..871ac34e67 100644 --- a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf +++ b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf @@ -17,10 +17,18 @@ #include "script_component.hpp" -if GVAR(modulePresent) then { - // module always takes priority - _view_distance_limit = +private ["_limit"]; + +_limit = 20000; // unrealistic amount for debug + +if (!isNil QGVAR(moduleViewDistanceLimit)) then { + _limit = GVAR(moduleViewDistanceLimit); // module always takes priority } else { - + // if module is not present, take the value from the config instead + _limit = [GVAR(viewDistanceLimit)] call FUNC(returnViewDistanceValue); // this function converts the array index in the config to it's relevant scalar value. }; -// To do: add a check against a module limit. \ No newline at end of file + +hint format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; +diag_log format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; + +_limit; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf index 0c14214371..5f06256b09 100644 --- a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf +++ b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf @@ -22,7 +22,6 @@ PARAMS_1(_index); private ["_return"]; _return = 0; - // change to if () exitWith {};? switch (_index) do { @@ -38,7 +37,7 @@ switch (_index) do case 9: {_return = 8000;}; case 10: {_return = 9000;}; case 11: {_return = 10000;}; - default {hint "something broke!";}; + default {hint "something broke!";}; // should replace with something a bit more graceful }; _return; \ No newline at end of file From 0b4137763d20b5634338c0f24e0f0a4ebffd9bb5 Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 18:41:32 +0200 Subject: [PATCH 0072/1101] Cleaned up code --- addons/viewdistance/ACE_Settings.hpp | 4 ++-- addons/viewdistance/CfgVehicles.hpp | 2 +- addons/viewdistance/XEH_postInit.sqf | 5 ++++- .../viewdistance/functions/fnc_changeViewDistance.sqf | 1 + addons/viewdistance/functions/fnc_initViewDistance.sqf | 1 + addons/viewdistance/functions/fnc_module.sqf | 4 ++-- .../functions/fnc_returnViewDistanceLimit.sqf | 10 +++++----- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index 497fe0f330..d7a9dbb9fc 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -8,7 +8,7 @@ class ACE_Settings { class GVAR(viewDistanceLimit) { typeName = "SCALAR"; value = 11; // setting the highest number in the array below means no limit. - values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; // correspond to the index values + values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; // correspond to the INDEX values displayName = "Change View Distance Limit"; description = "Sets the top limit for all clients"; }; @@ -16,7 +16,7 @@ class ACE_Settings { typeName = "SCALAR"; isClientSettable = 1; value = 0; // not sure what to set this to. - values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; + values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnViewDistanceValue.sqf displayName = "Change View Distance"; description = "Changes in game view distance"; }; diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 4906edfecf..38ef214c09 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { class Arguments { class moduleViewDistanceLimit { displayName = "View Distance setting limit"; - description = "Sets the limit for how high clients can raise their view distance (< 10,000)"; + description = "Sets the limit for how high clients can raise their view distance (< 10000)"; typeName = "SCALAR"; defaultValue = 10000; }; diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index 6fffa14cc6..f5a5079273 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -1,4 +1,7 @@ #include "script_component.hpp" -if (!GVAR(changeAllowed)) exitWith {}; // if viewdistance is disabled from config, exit here. +if (!GVAR(changeAllowed)) exitWith { + // if viewdistance module is disabled from config, exit here. + diag_log format["[ACE]: View Distance is disabled from the config.cpp in the pbo"]; +}; [] call FUNC(initViewDistance); \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 4d35974466..8c017ec1eb 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -22,6 +22,7 @@ private ["_text","_new_view_distance","_view_distance_limit"]; // Change the received index number into an actual view distance number as set in the config: _new_view_distance = [GVAR(newViewDistance)] call FUNC(returnViewDistanceValue); +// Grab the limit, either from the module OR if the module is not valid, the config. _view_distance_limit = [] call FUNC(returnViewDistanceLimit); if (_new_view_distance > _view_distance_limit) then { diff --git a/addons/viewdistance/functions/fnc_initViewDistance.sqf b/addons/viewdistance/functions/fnc_initViewDistance.sqf index 5372fdedca..75ca076ff6 100644 --- a/addons/viewdistance/functions/fnc_initViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_initViewDistance.sqf @@ -19,6 +19,7 @@ if (!hasInterface) exitWith {}; +// Set the EH which waits for the View Distance setting to be changed ["SettingChanged",{ if (_this select 0 == QGVAR(newViewDistance)) then { [] call FUNC(changeViewDistance); diff --git a/addons/viewdistance/functions/fnc_module.sqf b/addons/viewdistance/functions/fnc_module.sqf index bf336bc88e..66c2aed793 100644 --- a/addons/viewdistance/functions/fnc_module.sqf +++ b/addons/viewdistance/functions/fnc_module.sqf @@ -22,12 +22,12 @@ if (!isServer) exitWith {}; PARAMS_3(_logic,_units,_activated); if (!_activated) exitWith { - diag_log text "[ACE]: View Distance Limit Module is placed but NOT active"; + diag_log text "[ACE]: View Distance Limit Module is placed but NOT active."; }; GVAR(modulePresent) = true; [_logic, QGVAR(moduleViewDistanceLimit),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); -//hint format["[ACE]: View Distance Limit Module Initialized with limit: %1",GVAR(moduleViewDistanceLimit)]; // only used for debug +hint format["[ACE]: View Distance Limit Module Initialized with limit: %1",GVAR(moduleViewDistanceLimit)]; // only used for debug, GVAR(moduleViewDistanceLimit) keeps returning as ANY. Remember to remove before finalising the module. diag_log format["[ACE]: View Distance Limit Module Initialized with limit: %1",GVAR(moduleViewDistanceLimit)]; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf index 871ac34e67..8ae9e6538d 100644 --- a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf +++ b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf @@ -19,16 +19,16 @@ private ["_limit"]; -_limit = 20000; // unrealistic amount for debug +_limit = 20000; // unrealistic amount since A3 max is 10000, helps in debug if (!isNil QGVAR(moduleViewDistanceLimit)) then { - _limit = GVAR(moduleViewDistanceLimit); // module always takes priority + _limit = GVAR(moduleViewDistanceLimit); // module value always takes priority over config } else { - // if module is not present, take the value from the config instead + // If the module is not present, take the value from the config instead _limit = [GVAR(viewDistanceLimit)] call FUNC(returnViewDistanceValue); // this function converts the array index in the config to it's relevant scalar value. }; -hint format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; -diag_log format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; +hint format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; // only used for debug, trying to get the module to work. Remember to remove before finalising pbo +diag_log format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; // only used for debug, trying to get the module to work. Remember to remove before finalising pbo _limit; \ No newline at end of file From 03fd740f8eebd6b707fd20cfc77c3a7133c77743 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 18:43:26 +0200 Subject: [PATCH 0073/1101] Config caching is now done in the uiNamespace --- addons/advanced_ballistics/XEH_postInit.sqf | 5 -- addons/advanced_ballistics/XEH_preInit.sqf | 2 + .../functions/fnc_handleFired.sqf | 83 ++++--------------- .../functions/fnc_readAmmoDataFromConfig.sqf | 64 ++++++++++++++ .../fnc_readWeaponDataFromConfig.sqf | 34 ++++++++ 5 files changed, 114 insertions(+), 74 deletions(-) create mode 100644 addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf create mode 100644 addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index faaa468bc8..b59737412a 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -4,11 +4,6 @@ GVAR(currentbulletID) = -1; -GVAR(AmmoCacheIndex) = []; -GVAR(AmmoCacheData) = []; -GVAR(WeaponCacheIndex) = []; -GVAR(WeaponCacheData) = []; - GVAR(Protractor) = false; GVAR(ProtractorStart) = time; diff --git a/addons/advanced_ballistics/XEH_preInit.sqf b/addons/advanced_ballistics/XEH_preInit.sqf index 1d19a9c492..b5ffa62fe8 100644 --- a/addons/advanced_ballistics/XEH_preInit.sqf +++ b/addons/advanced_ballistics/XEH_preInit.sqf @@ -13,5 +13,7 @@ PREP(displayProtractor); PREP(handleFired); PREP(initializeTerrainExtension); PREP(initModuleSettings); +PREP(readAmmoDataFromConfig); +PREP(readWeaponDataFromConfig); ADDON = true; diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 5862786228..73c7a28f32 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -19,7 +19,7 @@ */ #include "script_component.hpp" -private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_AmmoCacheIndex", "_AmmoCacheEntry", "_WeaponCacheIndex", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_barrelLength", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ballisticCoefficients", "_velocityBoundaries"]; +private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_barrelLength", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ballisticCoefficients", "_velocityBoundaries"]; _unit = _this select 0; _weapon = _this select 1; _mode = _this select 3; @@ -54,69 +54,14 @@ if (_abort || !(GVAR(extensionAvailable))) exitWith { [_bullet, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")] call EFUNC(winddeflection,updateTrajectoryPFH); }; -_AmmoCacheIndex = GVAR(AmmoCacheIndex) find _ammo; -if (_AmmoCacheIndex == -1) then { - _airFriction = getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction"); - _caliber = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_caliber"); - _bulletLength = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletLength"); - _bulletMass = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletMass"); - _transonicStabilityCoef = 0.5; - if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef")) then { - _transonicStabilityCoef = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef"); - }; - _dragModel = 1; - _ballisticCoefficients = []; - _velocityBoundaries = []; - _atmosphereModel = "ICAO"; - if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel")) then { - _dragModel = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel"); - if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then { - _dragModel = 1; - }; - }; - if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then { - _ballisticCoefficients = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients"); - }; - if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then { - _velocityBoundaries = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries"); - }; - if (isText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then { - _atmosphereModel = getText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere"); - }; - _ammoTempMuzzleVelocityShifts = []; - if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts")) then { - _ammoTempMuzzleVelocityShifts = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts"); - }; - _muzzleVelocityTable = []; - _barrelLengthTable = []; - if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable")) then { - _muzzleVelocityTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable"); - }; - if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengths")) then { - _barrelLengthTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengthTable"); - }; - _AmmoCacheIndex = count GVAR(AmmoCacheIndex); - GVAR(AmmoCacheIndex) pushBack _ammo; - GVAR(AmmoCacheData) pushBack [_ammo, _airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable]; +_AmmoCacheEntry = uiNamespace getVariable format[QGVAR(%1), _ammo]; +if (isNil {_AmmoCacheEntry}) then { + _AmmoCacheEntry = _ammo call FUNC(readAmmoDataFromConfig); }; -_AmmoCacheEntry = GVAR(AmmoCacheData) select _AmmoCacheIndex; - -_WeaponCacheIndex = GVAR(WeaponCacheIndex) find _weapon; -if (_WeaponCacheIndex == -1) then { - _barrelTwist = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelTwist"); - _twistDirection = 1; - if (isNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection")) then { - _twistDirection = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection"); - if (_twistDirection != -1 && _twistDirection != 0 && _twistDirection != 1) then { - _twistDirection = 1; - }; - }; - _barrelLength = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelLength"); - _WeaponCacheIndex = count GVAR(WeaponCacheIndex); - GVAR(WeaponCacheIndex) pushBack _weapon; - GVAR(WeaponCacheData) pushBack [_weapon, _barrelTwist, _twistDirection, _barrelLength]; +_WeaponCacheEntry = uiNamespace getVariable format[QGVAR(%1), _weapon]; +if (isNil {_WeaponCacheEntry}) then { + _WeaponCacheEntry = _weapon call FUNC(readWeaponDataFromConfig); }; -_WeaponCacheEntry = GVAR(WeaponCacheData) select _WeaponCacheIndex; _airFriction = _AmmoCacheEntry select 1; @@ -124,7 +69,7 @@ _bulletVelocity = velocity _bullet; _muzzleVelocity = vectorMagnitude _bulletVelocity; if (GVAR(barrelLengthInfluenceEnabled)) then { - _muzzleVelocityShift = [_WeaponCacheEntry select 3, _AmmoCacheEntry select 11, _AmmoCacheEntry select 12, _muzzleVelocity] call FUNC(calculateBarrelLengthVelocityShift); + _muzzleVelocityShift = [_WeaponCacheEntry select 2, _AmmoCacheEntry select 10, _AmmoCacheEntry select 11, _muzzleVelocity] call FUNC(calculateBarrelLengthVelocityShift); if (_muzzleVelocityShift != 0) then { _bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift)); _bullet setVelocity _bulletVelocity; @@ -134,7 +79,7 @@ if (GVAR(barrelLengthInfluenceEnabled)) then { if (GVAR(ammoTemperatureEnabled)) then { _temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2); - _muzzleVelocityShift = [_AmmoCacheEntry select 10, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift); + _muzzleVelocityShift = [_AmmoCacheEntry select 9, _temperature] call FUNC(calculateAmmoTemperatureVelocityShift); if (_muzzleVelocityShift != 0) then { _bulletVelocity = _bulletVelocity vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply (_muzzleVelocityShift)); _bullet setVelocity _bulletVelocity; @@ -155,10 +100,10 @@ if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { }; }; -_caliber = _AmmoCacheEntry select 2; -_bulletLength = _AmmoCacheEntry select 3; -_bulletMass = _AmmoCacheEntry select 4; -_barrelTwist = _WeaponCacheEntry select 1; +_caliber = _AmmoCacheEntry select 1; +_bulletLength = _AmmoCacheEntry select 2; +_bulletMass = _AmmoCacheEntry select 3; +_barrelTwist = _WeaponCacheEntry select 0; _stabilityFactor = 1.5; if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then { @@ -169,7 +114,7 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000; -"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _AmmoCacheEntry select 1, _AmmoCacheEntry select 7, _AmmoCacheEntry select 8, _AmmoCacheEntry select 9, _AmmoCacheEntry select 6, _stabilityFactor, _WeaponCacheEntry select 2, _muzzleVelocity, _AmmoCacheEntry select 5, getPosASL _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(time), time - floor(time)]; +"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _AmmoCacheEntry select 0, _AmmoCacheEntry select 6, _AmmoCacheEntry select 7, _AmmoCacheEntry select 8, _AmmoCacheEntry select 5, _stabilityFactor, _WeaponCacheEntry select 1, _muzzleVelocity, _AmmoCacheEntry select 4, getPosASL _bullet, EGVAR(weather,Latitude), EGVAR(weather,currentTemperature), EGVAR(weather,Altitude), EGVAR(weather,currentHumidity), overcast, floor(time), time - floor(time)]; [{ private ["_args", "_index", "_bullet", "_caliber", "_bulletTraceVisible", "_bulletVelocity", "_bulletPosition"]; diff --git a/addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf b/addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf new file mode 100644 index 0000000000..7ff94387d1 --- /dev/null +++ b/addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf @@ -0,0 +1,64 @@ +/* + * Author: Ruthberg + * + * Reads the ammo class config and updates the config cache + * + * Arguments: + * 0: ammo - classname + * + * Return Value: + * 0: [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable] + * + * Return value: + * None + */ +#include "script_component.hpp" + +private ["_ammo", "_airFriction", "_caliber", "_bulletLength", "_bulletMass", "_transonicStabilityCoef", "_dragModel", "_ballisticCoefficients", "_velocityBoundaries", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_result"]; +_ammo = _this; + +_airFriction = getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction"); +_caliber = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_caliber"); +_bulletLength = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletLength"); +_bulletMass = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_bulletMass"); +_transonicStabilityCoef = 0.5; +if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef")) then { + _transonicStabilityCoef = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_transonicStabilityCoef"); +}; +_dragModel = 1; +_ballisticCoefficients = []; +_velocityBoundaries = []; +_atmosphereModel = "ICAO"; +if (isNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel")) then { + _dragModel = getNumber(configFile >> "CfgAmmo" >> _ammo >> "ACE_dragModel"); + if (!(_dragModel in [1, 2, 5, 6, 7, 8])) then { + _dragModel = 1; + }; +}; +if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients")) then { + _ballisticCoefficients = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ballisticCoefficients"); +}; +if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries")) then { + _velocityBoundaries = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_velocityBoundaries"); +}; +if (isText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere")) then { + _atmosphereModel = getText(configFile >> "CfgAmmo" >> _ammo >> "ACE_standardAtmosphere"); +}; +_ammoTempMuzzleVelocityShifts = []; +if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts")) then { + _ammoTempMuzzleVelocityShifts = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShifts"); +}; +_muzzleVelocityTable = []; +_barrelLengthTable = []; +if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable")) then { + _muzzleVelocityTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable"); +}; +if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengths")) then { + _barrelLengthTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengthTable"); +}; + +_result = [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable]; + +uiNamespace setVariable [format[QGVAR(%1), _ammo], _result]; + +_result diff --git a/addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf b/addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf new file mode 100644 index 0000000000..cbf8731336 --- /dev/null +++ b/addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf @@ -0,0 +1,34 @@ +/* + * Author: Ruthberg + * + * Reads the weapon class config and updates the config cache + * + * Arguments: + * 0: ammo - classname + * + * Return Value: + * 0: [_barrelTwist, _twistDirection, _barrelLength] + * + * Return value: + * None + */ +#include "script_component.hpp" + +private ["_weapon", "_barrelTwist", "_twistDirection", "_barrelLength", "_result"]; +_weapon = _this; + +_barrelTwist = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelTwist"); +_twistDirection = 1; +if (isNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection")) then { + _twistDirection = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_twistDirection"); + if (_twistDirection != -1 && _twistDirection != 0 && _twistDirection != 1) then { + _twistDirection = 1; + }; +}; +_barrelLength = getNumber(configFile >> "CfgWeapons" >> _weapon >> "ACE_barrelLength"); + +_result = [_barrelTwist, _twistDirection, _barrelLength]; + +uiNamespace setVariable [format[QGVAR(%1), _weapon], _result]; + +_result From 96e1e9c59fc9dcc6b50fbc0ad74b72bc55b8a21b Mon Sep 17 00:00:00 2001 From: SAM Date: Fri, 8 May 2015 18:46:30 +0200 Subject: [PATCH 0074/1101] Added name + email to authors.txt --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 366664efbd..a167a48dce 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -93,3 +93,4 @@ Bla1337 nikolauska adam3adam Professor +Winter From 0a9dbfba871a892b14466dcd50db4004af96ef6a Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 8 May 2015 18:47:17 +0200 Subject: [PATCH 0075/1101] Privates cleanup --- addons/advanced_ballistics/functions/fnc_handleFired.sqf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 73c7a28f32..5404953bd0 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -19,7 +19,7 @@ */ #include "script_component.hpp" -private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_ammoTempMuzzleVelocityShifts", "_muzzleVelocityTable", "_barrelLengthTable", "_barrelLength", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ballisticCoefficients", "_velocityBoundaries"]; +private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_bulletMass", "_bulletLength", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_barrelTwist", "_stabilityFactor"]; _unit = _this select 0; _weapon = _this select 1; _mode = _this select 3; @@ -63,8 +63,6 @@ if (isNil {_WeaponCacheEntry}) then { _WeaponCacheEntry = _weapon call FUNC(readWeaponDataFromConfig); }; -_airFriction = _AmmoCacheEntry select 1; - _bulletVelocity = velocity _bullet; _muzzleVelocity = vectorMagnitude _bulletVelocity; From 24505f59e16559b6eb176f6843a43aa83e800a74 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 19:27:42 +0200 Subject: [PATCH 0076/1101] Add option to stringtablediag to only show markdown --- tools/stringtablediag.py | 44 ++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/tools/stringtablediag.py b/tools/stringtablediag.py index c4aab0b104..8cd585ac2a 100755 --- a/tools/stringtablediag.py +++ b/tools/stringtablediag.py @@ -57,14 +57,16 @@ def main(): projectpath = os.path.dirname(os.path.dirname(scriptpath)) projectpath = os.path.join(projectpath, "addons") - print("#########################") - print("# Stringtable Diag Tool #") - print("#########################") + if "--markdown" not in sys.argv: + print("#########################") + print("# Stringtable Diag Tool #") + print("#########################") languages = get_all_languages(projectpath) - print("\nLanguages present in the repo:") - print(", ".join(languages)) + if "--markdown" not in sys.argv: + print("\nLanguages present in the repo:") + print(", ".join(languages)) keysum = 0 localizedsum = list(map(lambda x: 0, languages)) @@ -76,31 +78,33 @@ def main(): if keynumber == 0: continue - print("\n# " + module) + if "--markdown" not in sys.argv: + print("\n# " + module) keysum += keynumber for i in range(len(localized)): - print(" %s %s / %i" % ((languages[i]+":").ljust(10), str(localized[i]).ljust(3), keynumber)) + if "--markdown" not in sys.argv: + print(" %s %s / %i" % ((languages[i]+":").ljust(10), str(localized[i]).ljust(3), keynumber)) localizedsum[i] += localized[i] if localized[i] < keynumber: missing[i].append(module) - print("\n###########") - print("# RESULTS #") - print("###########") + if "--markdown" not in sys.argv: + print("\n###########") + print("# RESULTS #") + print("###########") + print("\nTotal number of keys: %i\n" % (keysum)) - print("\nTotal number of keys: %i\n" % (keysum)) + for i in range(len(languages)): + if localizedsum[i] == keysum: + print("%s No missing stringtable entries." % ((languages[i] + ":").ljust(12))) + else: + print("%s %s missing stringtable entry/entries." % ((languages[i] + ":").ljust(12), str(keysum - localizedsum[i]).rjust(4)), end="") + print(" ("+", ".join(missing[i])+")") - for i in range(len(languages)): - if localizedsum[i] == keysum: - print("%s No missing stringtable entries." % ((languages[i] + ":").ljust(12))) - else: - print("%s %s missing stringtable entry/entries." % ((languages[i] + ":").ljust(12), str(keysum - localizedsum[i]).rjust(4)), end="") - print(" ("+", ".join(missing[i])+")") + print("\n\n### MARKDOWN ###\n") - print("\n\n### MARKDOWN ###") - - print("\nTotal number of keys: %i\n" % (keysum)) + print("Total number of keys: %i\n" % (keysum)) print("| Language | Missing Entries | Relevant Modules | % done |") print("|----------|----------------:|------------------|--------|") From 6d44889292e093d032ebfaba0debfd630507841f Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 19:27:58 +0200 Subject: [PATCH 0077/1101] Add deploy script --- tools/deploy.py | 101 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100755 tools/deploy.py diff --git a/tools/deploy.py b/tools/deploy.py new file mode 100755 index 0000000000..baefbf44e2 --- /dev/null +++ b/tools/deploy.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 + +#################################### +# ACE3 automatic deployment script # +# ================================ # +# This is not meant to be run # +# directly! # +#################################### + +import os +import sys +import shutil +import traceback +import subprocess as sp +from pygithub3 import Github + + +TRANSLATIONISSUE = 367 +TRANSLATIONBODY = """**How to translate ACE3:** +https://github.com/acemod/ACE3/blob/master/documentation/development/how-to-translate-ace3.md + +{} +""" + +REPOUSER = "acemod" +REPONAME = "ACE3" +REPOPATH = "{}/{}".format(REPOUSER,REPONAME) + +USERNAME = "ACE3 Travis" +USEREMAIL = "travis@ace3mod.com" + + +def update_translations(token): + diag = sp.check_output(["python3", "tools/stringtablediag.py", "--markdown"]) + diag = str(diag, "utf-8") + repo = Github(token).get_repo(REPOPATH) + issue = repo.get_issue(TRANSLATIONISSUE) + issue.edit(body=TRANSLATIONBODY.format(diag)) + + +def deploy_documentation(token): + devnull = open(os.devnull, "w") + url = "https://{}@github.com/{}".format(token, REPOPATH) + + sp.check_call(["git", "clone", url, "out", "--depth", "10", "--branch", "gh-pages"], stdout=devnull, stderr=devnull) + os.chdir("out") + + sp.check_call(["git", "config", "user.name", USERNAME]) + sp.check_call(["git", "config", "user.email", USEREMAIL]) + + for root, dirs, files in os.walk("../documentation", topdown=False): + target = root.replace("../documentation", "wiki") + if root == "../documentation": + continue + for name in files: + print("{} => {}".format(os.path.join(root, name), os.path.join(target, name))) + shutil.copyfile(os.path.join(root, name), os.path.join(target, name)) + + sp.check_call(["git", "add", "--all", "."]) + sp.check_call(["git", "commit", "-m", "Automatic gh-pages deployment"]) + sp.check_call(["git", "push", "origin", "gh-pages"], stdout=devnull, stderr=devnull) + + os.chdir("..") + + +def main(): + print("Obtaining token ...") + try: + token = os.environ["GH_TOKEN"] + except: + print("Could not obtain token.") + print(traceback.format_exc()) + return 1 + else: + print("done.") + + print("\nUpdating translation issue ...") + try: + update_translations(token) + except: + print("Failed to update translation issue.") + print(traceback.format_exc()) + return 1 + else: + print("done.") + + print("\nDeploying documentation ...") + try: + deploy_documentation(token) + except: + print("Failed to deploy documentation.") + print(traceback.format_exc()) + return 1 + else: + print("done.") + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) From b1f16132e561814278d68f8ff98a18a52c6e8f77 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 19:28:06 +0200 Subject: [PATCH 0078/1101] Add travis file --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..65990248bf --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: python +python: + - "3.4" +before_script: + - pip install pygithub + - pip install pygithub3 +script: + - python3 tools/deploy.py +env: + global: + - secure: "KcJQbknBOdC5lA4nFGKPXVRVIGLDXDRzC8XkHuXJCE9pIR/wbxbkvx8fHKcC6SC9eHgzneC3+o4m4+CjIbVvIwDgslRbJ8Y59i90ncONmdoRx1HUYHwuYWVZm9HJFjCsIbrEqhSyyKS+PB3WZVOLbErtNHsgS8f43PTh5Ujg7Vg=" From 38b03e2b180c9236bc58c49e3a157aee0cdc224f Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 19:37:14 +0200 Subject: [PATCH 0079/1101] Only commit if there's something to do --- tools/deploy.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/deploy.py b/tools/deploy.py index baefbf44e2..501987810a 100755 --- a/tools/deploy.py +++ b/tools/deploy.py @@ -57,8 +57,12 @@ def deploy_documentation(token): shutil.copyfile(os.path.join(root, name), os.path.join(target, name)) sp.check_call(["git", "add", "--all", "."]) - sp.check_call(["git", "commit", "-m", "Automatic gh-pages deployment"]) - sp.check_call(["git", "push", "origin", "gh-pages"], stdout=devnull, stderr=devnull) + + filenum = sp.check_output(["git", "status", "--porcelain"]) + filenum = len(str(filenum, "utf-8").split("\n")) - 1 + if filenum > 0: + sp.check_call(["git", "commit", "-m", "Automatic gh-pages deployment"]) + sp.check_call(["git", "push", "origin", "gh-pages"], stdout=devnull, stderr=devnull) os.chdir("..") From a5fb8a1a4f7fe5cbbe81d0ec1491a4de9b13b693 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 19:37:25 +0200 Subject: [PATCH 0080/1101] Restore missing line --- .../development/setting-up-the-development-environment.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/development/setting-up-the-development-environment.md b/documentation/development/setting-up-the-development-environment.md index 14d5e067c9..8a572c1ec6 100644 --- a/documentation/development/setting-up-the-development-environment.md +++ b/documentation/development/setting-up-the-development-environment.md @@ -14,6 +14,7 @@ This page describes how you can setup your development environment for ACE3, all - Arma 3 (duh) - A proper installation of the Arma 3 Tools (available on Steam) - A properly setup P-drive +- Run ArmA 3 and Arma 3 Tools directly from steam once to install registry entries (and again after every update) - Python 3.x, available [here](http://www.python.org) - The following Mikero Tools (available [here](https://dev.withsix.com/projects/mikero-pbodll/files)): DePBO, Rapify, MakePBO, PBOProject - A properly setup PATH variable (containing Python and the Mikero tools) From e674229dde4d49dd51d5e23e4fe637e365c6e52c Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 8 May 2015 20:10:40 +0200 Subject: [PATCH 0081/1101] enabledFor > enableFor --- addons/medical/XEH_postInit.sqf | 2 -- addons/medical/functions/fnc_hasMedicalEnabled.sqf | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 1bb0e744bc..f8129e5e78 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -2,8 +2,6 @@ #include "script_component.hpp" -GVAR(enabledFor) = 1; // TODO remove this once we implement settings. Just here to get the vitals working. - GVAR(heartBeatSounds_Fast) = ["ACE_heartbeat_fast_1", "ACE_heartbeat_fast_2", "ACE_heartbeat_fast_3"]; GVAR(heartBeatSounds_Normal) = ["ACE_heartbeat_norm_1", "ACE_heartbeat_norm_2"]; GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; diff --git a/addons/medical/functions/fnc_hasMedicalEnabled.sqf b/addons/medical/functions/fnc_hasMedicalEnabled.sqf index ee433c1715..fb5a45fe70 100644 --- a/addons/medical/functions/fnc_hasMedicalEnabled.sqf +++ b/addons/medical/functions/fnc_hasMedicalEnabled.sqf @@ -15,7 +15,7 @@ _unit = _this select 0; _medicalEnabled = _unit getvariable QGVAR(enableMedical); if (isnil "_medicalEnabled") exitwith { - (((GVAR(enabledFor) == 0 && (isPlayer _unit || (_unit getvariable [QEGVAR(common,isDeadPlayer), false])))) || (GVAR(enabledFor) == 1)); + (((GVAR(enableFor) == 0 && (isPlayer _unit || (_unit getvariable [QEGVAR(common,isDeadPlayer), false])))) || (GVAR(enableFor) == 1)); }; _medicalEnabled; From 7294056da0b2412c7c3443fef670cfe4f31d3481 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 8 May 2015 20:13:20 +0200 Subject: [PATCH 0082/1101] keep ai tweaks except of relaod --- addons/ai/CfgAISkill.hpp | 3 ++- addons/ai/config.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/ai/CfgAISkill.hpp b/addons/ai/CfgAISkill.hpp index dfa0299509..c01b5eb96e 100644 --- a/addons/ai/CfgAISkill.hpp +++ b/addons/ai/CfgAISkill.hpp @@ -21,7 +21,8 @@ class CfgAISkill { courage[] = {0,0, 1,0.7}; // {0,0,1,1}; endurance[] = {0,0, 1,0.7}; // {0,0,1,1}; general[] = {0,0, 1,0.9}; // {0,0,1,1}; - reloadSpeed[] = {0,0, 1,0.8}; // {0,0,1,1}; + // apparently breaks rapid firing in single fire mode for players + //reloadSpeed[] = {0,0, 1,0.8}; // {0,0,1,1}; spotDistance[] = {0,0, 1,0.9}; // {0,0.2,1,0.4}; spotTime[] = {0,0, 1,0.7}; // {0,0,1,0.7}; }; diff --git a/addons/ai/config.cpp b/addons/ai/config.cpp index 0d5f7c62c3..fdcb6afe9d 100644 --- a/addons/ai/config.cpp +++ b/addons/ai/config.cpp @@ -12,5 +12,5 @@ class CfgPatches { }; }; -//#include "CfgAISkill.hpp" +#include "CfgAISkill.hpp" #include "CfgWeapons.hpp" From b7b6cb60860ec724f56ecbfcd360c0c6e3623bad Mon Sep 17 00:00:00 2001 From: jaynus Date: Fri, 8 May 2015 11:27:17 -0700 Subject: [PATCH 0083/1101] Fixed: Adds an enabler config to ace_frag, disabling the PFH for any round not enabled. --- addons/frag/CfgAmmo.hpp | 30 +++++++++++++++++++++++++++++ addons/frag/functions/fnc_fired.sqf | 6 +++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/addons/frag/CfgAmmo.hpp b/addons/frag/CfgAmmo.hpp index ac20dabf5e..19414965b2 100644 --- a/addons/frag/CfgAmmo.hpp +++ b/addons/frag/CfgAmmo.hpp @@ -10,6 +10,8 @@ class CfgAmmo { //}; class Bo_GBU12_LGB; class ACE_GBU12 : Bo_GBU12_LGB { + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 140000; GVAR(charge) = 87000; @@ -23,6 +25,8 @@ class CfgAmmo { class GrenadeBase; class Grenade; class GrenadeHand: Grenade { + GVAR(enabled) = 1; + GVAR(skip) = 0; GVAR(force) = 1; // This is a good high-drag frag type for grenades. @@ -46,6 +50,8 @@ class CfgAmmo { class RocketBase; class R_Hydra_HE: RocketBase { // Source: http://fas.org/man/dod-101/sys/missile/hydra-70.htm + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 3850; GVAR(charge) = 1040; @@ -66,6 +72,8 @@ class CfgAmmo { class BombCore; class Bo_Mk82: BombCore { + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 140000; GVAR(charge) = 87000; @@ -75,6 +83,8 @@ class CfgAmmo { class G_40mm_HE: GrenadeBase { // Source: http://www.inetres.com/gp/military/infantry/grenade/40mm_ammo.html#M441 + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_tiny_HD"}; GVAR(metal) = 200; GVAR(charge) = 32; @@ -83,6 +93,8 @@ class CfgAmmo { }; class G_40mm_HEDP: G_40mm_HE { // Source: http://www.inetres.com/gp/military/infantry/grenade/40mm_ammo.html#M433 + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_tiny_HD"}; GVAR(metal) = 200; GVAR(charge) = 45; @@ -107,6 +119,8 @@ class CfgAmmo { class Sh_125mm_HEAT; class Sh_155mm_AMOS: ShellBase { // Source: http://www.globalsecurity.org/military/systems/munitions/m795.htm + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 36000; GVAR(charge) = 9979; @@ -115,6 +129,8 @@ class CfgAmmo { }; class Sh_82mm_AMOS : Sh_155mm_AMOS { // Source: http://www.arsenal-bg.com/defense_police/mortar_bombs_82mm.htm + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 3200; GVAR(charge) = 420; @@ -122,6 +138,8 @@ class CfgAmmo { GVAR(gurney_k) = 1/2; }; class ModuleOrdnanceMortar_F_Ammo: Sh_82mm_AMOS { + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 800; GVAR(charge) = 4200; @@ -129,6 +147,8 @@ class CfgAmmo { GVAR(gurney_k) = 1/2; }; class Sh_105mm_HEAT_MP : Sh_125mm_HEAT { + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 11400; GVAR(charge) = 7100; @@ -136,6 +156,8 @@ class CfgAmmo { GVAR(gurney_k) = 1/2; }; class Sh_120mm_HE : ShellBase { + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 23000; GVAR(charge) = 3148; @@ -143,6 +165,8 @@ class CfgAmmo { GVAR(gurney_k) = 1/2; }; class Sh_125mm_HE: Sh_120mm_HE { + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 16000; GVAR(charge) = 3200; @@ -150,6 +174,8 @@ class CfgAmmo { GVAR(gurney_k) = 1/2; }; class ModuleOrdnanceHowitzer_F_ammo: Sh_155mm_AMOS { + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 1950; GVAR(charge) = 15800; @@ -175,6 +201,8 @@ class CfgAmmo { class MissileBase; class Missile_AGM_02_F : MissileBase { // Source: http://fas.org/man/dod-101/sys/smart/agm-65.htm + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 56250; GVAR(charge) = 39000; @@ -183,6 +211,8 @@ class CfgAmmo { }; class M_Hellfire_AT: MissileBase { // Source: http://www.designation-systems.net/dusrm/m-114.html + GVAR(enabled) = 1; + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 8000; GVAR(charge) = 2400; diff --git a/addons/frag/functions/fnc_fired.sqf b/addons/frag/functions/fnc_fired.sqf index 7ed717c2b8..9b89e40897 100644 --- a/addons/frag/functions/fnc_fired.sqf +++ b/addons/frag/functions/fnc_fired.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -private ["_gun", "_type", "_round", "_doFragTrack", "_doSpall", "_spallTrack", "_spallTrackID"]; +private ["_enabled", "_gun", "_type", "_round", "_doFragTrack", "_doSpall", "_spallTrack", "_spallTrackID"]; if (!GVAR(enabled)) exitWith {}; @@ -8,10 +8,14 @@ _gun = _this select 0; _type = _this select 4; _round = _this select 6; +_enabled = getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(enabled)); +if(_enabled < 1) exitWith {}; + if(_round in GVAR(blackList)) exitWith { GVAR(blackList) = GVAR(blackList) - [_round]; }; + _doFragTrack = false; if(_gun == ACE_player) then { _doFragTrack = true; From a4c710bd28c5822912f46088e0bd92ce9620408d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 8 May 2015 13:36:24 -0500 Subject: [PATCH 0084/1101] Switch scopes to use firedBIS --- addons/scopes/CfgEventHandlers.hpp | 4 ++-- addons/scopes/functions/fnc_firedEH.sqf | 27 ++++++++++++++----------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/addons/scopes/CfgEventHandlers.hpp b/addons/scopes/CfgEventHandlers.hpp index b3d70a2861..5c23e0c462 100644 --- a/addons/scopes/CfgEventHandlers.hpp +++ b/addons/scopes/CfgEventHandlers.hpp @@ -10,10 +10,10 @@ class Extended_PostInit_EventHandlers { }; }; -class Extended_Fired_EventHandlers { +class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - fired = QUOTE(_this call FUNC(firedEH);); + firedBIS = QUOTE(_this call FUNC(firedEH);); }; }; }; diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index 8753019931..1b692e340a 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -3,12 +3,13 @@ * Adjusts the flight path of the bullet according to the zeroing * * Argument: - * 0: Unit - * 1: Weapon - * 3: Muzzle - * 4: Magazine - * 5: Ammo - * 6: Projectile + * 0: unit - Object the event handler is assigned to + * 1: weapon - Fired weapon + * 2: muzzle - Muzzle that was used + * 3: mode - Current mode of the fired weapon + * 4: ammo - Ammo used + * 5: magazine - magazine name which was used + * 6: projectile - Object of the projectile that was shot * * Return value: * None @@ -20,23 +21,25 @@ private ["_unit", "_adjustment", "_weapon", "_projectile", "_weaponIndex", "_zeroing", "_adjustment"]; _unit = _this select 0; +_weapon = _this select 1; +_projectile = _this select 6; // Exit if the unit doesn't have any adjusment variable -_adjustment = _unit getVariable QGVAR(Adjustment); -if (isNil "_adjustment") exitWith {}; +_adjustment = _unit getVariable [QGVAR(Adjustment), []]; +if (_adjustment isEqualTo []) exitWith {}; // Exit if the unit isn't a player if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; -_weapon = _this select 1; -_projectile = _this select 5; - _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {}; _zeroing = _adjustment select _weaponIndex; +//Exit if adjusment is zero: +if (_zeroing isEqualTo [0,0,0]) exitWith {}; + // Convert zeroing from mils to degrees -_zeroing = [_zeroing, {_this * 0.05625}] call EFUNC(common,map); +_zeroing = _zeroing vectorMultiply 0.05625; [_projectile, (_zeroing select 1), (_zeroing select 0) + (_zeroing select 2), 0] call EFUNC(common,changeProjectileDirection); From 53360ff0a736dc5f3de4c4885af42476d2bae4b3 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Fri, 8 May 2015 20:40:40 +0200 Subject: [PATCH 0085/1101] Add some more descriptive output to deploy.py --- tools/deploy.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/deploy.py b/tools/deploy.py index 501987810a..b9fade83a0 100755 --- a/tools/deploy.py +++ b/tools/deploy.py @@ -62,7 +62,10 @@ def deploy_documentation(token): filenum = len(str(filenum, "utf-8").split("\n")) - 1 if filenum > 0: sp.check_call(["git", "commit", "-m", "Automatic gh-pages deployment"]) + print("Pushing changes ...") sp.check_call(["git", "push", "origin", "gh-pages"], stdout=devnull, stderr=devnull) + else: + print("No changes.") os.chdir("..") From 2a9f4d779da6f3f9d25a132fa233d8cb6efe23fd Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 May 2015 03:09:26 +0200 Subject: [PATCH 0086/1101] Lowercased beginning of function names --- .../{fnc_AddSelectableItem.sqf => fnc_addSelectableItem.sqf} | 0 .../interaction/functions/{fnc_MoveDown.sqf => fnc_moveDown.sqf} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename addons/interaction/functions/{fnc_AddSelectableItem.sqf => fnc_addSelectableItem.sqf} (100%) rename addons/interaction/functions/{fnc_MoveDown.sqf => fnc_moveDown.sqf} (100%) diff --git a/addons/interaction/functions/fnc_AddSelectableItem.sqf b/addons/interaction/functions/fnc_addSelectableItem.sqf similarity index 100% rename from addons/interaction/functions/fnc_AddSelectableItem.sqf rename to addons/interaction/functions/fnc_addSelectableItem.sqf diff --git a/addons/interaction/functions/fnc_MoveDown.sqf b/addons/interaction/functions/fnc_moveDown.sqf similarity index 100% rename from addons/interaction/functions/fnc_MoveDown.sqf rename to addons/interaction/functions/fnc_moveDown.sqf From 50d5e845ee517ca28d10393adfe6cf399d8ea0f3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 May 2015 03:12:28 +0200 Subject: [PATCH 0087/1101] Lowercased beginning of functions pt2 --- addons/interaction/functions/fnc_moveDown.sqf | 4 ++-- addons/interaction/functions/fnc_openMenuSelectUI.sqf | 2 +- addons/interaction/functions/fnc_prepareSelectMenu.sqf | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/interaction/functions/fnc_moveDown.sqf b/addons/interaction/functions/fnc_moveDown.sqf index eac30e4008..3b7a7074e9 100644 --- a/addons/interaction/functions/fnc_moveDown.sqf +++ b/addons/interaction/functions/fnc_moveDown.sqf @@ -11,8 +11,8 @@ Nothing Example: - 1 call FUNC(MoveDown); - -1 call FUNC(MoveDown); + 1 call FUNC(moveDown); + -1 call FUNC(moveDown); */ #include "script_component.hpp" diff --git a/addons/interaction/functions/fnc_openMenuSelectUI.sqf b/addons/interaction/functions/fnc_openMenuSelectUI.sqf index a13fa6a9f0..55eaba6423 100644 --- a/addons/interaction/functions/fnc_openMenuSelectUI.sqf +++ b/addons/interaction/functions/fnc_openMenuSelectUI.sqf @@ -26,7 +26,7 @@ _actions = [localize "STR_ACE_Interaction_InteractionMenu", localize "STR_ACE_In [_x] call EFUNC(common,getName), QUOTE(PATHTOF(UI\dot_ca.paa)), _forEachIndex - ] call FUNC(AddSelectableItem); + ] call FUNC(addSelectableItem); }; } forEach _cargo; diff --git a/addons/interaction/functions/fnc_prepareSelectMenu.sqf b/addons/interaction/functions/fnc_prepareSelectMenu.sqf index 593f0d4c47..34a1bfea5b 100644 --- a/addons/interaction/functions/fnc_prepareSelectMenu.sqf +++ b/addons/interaction/functions/fnc_prepareSelectMenu.sqf @@ -9,7 +9,7 @@ 1: TEXT - Approve button text Returns: - ARRAY/NUMBER - container object for use with AddSelectableItem. + ARRAY/NUMBER - container object for use with addSelectableItem. Example: ["Select Explosive", "Place"] call FUNC(prepareSelectMenu); From 2ff372e2a1f56801935340684018dbd4c68a870c Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 May 2015 04:47:15 +0200 Subject: [PATCH 0088/1101] Function headers per Coding Guidelines for Interaction --- .../functions/fnc_addPassengerActions.sqf | 5 +- .../functions/fnc_addPassengersActions.sqf | 7 ++- .../functions/fnc_addSelectableItem.sqf | 34 ++++++------- .../functions/fnc_applyButtons.sqf | 17 ++++++- .../functions/fnc_canBecomeLeader.sqf | 4 +- .../functions/fnc_canInteractWithCivilian.sqf | 19 +++++-- .../functions/fnc_canJoinGroup.sqf | 17 ++++++- .../interaction/functions/fnc_canJoinTeam.sqf | 17 ++++++- .../functions/fnc_canTapShoulder.sqf | 18 ++++++- .../functions/fnc_doBecomeLeader.sqf | 4 +- addons/interaction/functions/fnc_getDoor.sqf | 18 ++++++- .../functions/fnc_getDoorAnimations.sqf | 19 ++++++- addons/interaction/functions/fnc_getDown.sqf | 12 +++-- .../functions/fnc_getSelectedButton.sqf | 16 +++++- .../functions/fnc_getWeaponPos.sqf | 5 +- addons/interaction/functions/fnc_hideMenu.sqf | 30 +++++------ .../functions/fnc_hideMouseHint.sqf | 31 ++++++----- .../interaction/functions/fnc_isInRange.sqf | 14 +++-- addons/interaction/functions/fnc_joinTeam.sqf | 17 ++++++- .../functions/fnc_moduleInteraction.sqf | 14 +++-- addons/interaction/functions/fnc_moveDown.sqf | 29 +++++------ .../interaction/functions/fnc_onButtonUp.sqf | 16 +++++- addons/interaction/functions/fnc_onClick.sqf | 16 +++++- .../functions/fnc_onSelectMenuDblClick.sqf | 16 +++++- addons/interaction/functions/fnc_openDoor.sqf | 17 ++++++- .../functions/fnc_openMenuSelectUI.sqf | 51 ++++++++++++------- .../functions/fnc_openSelectMenu.sqf | 45 ++++++++-------- .../functions/fnc_prepareSelectMenu.sqf | 30 +++++------ addons/interaction/functions/fnc_push.sqf | 15 ++++-- .../interaction/functions/fnc_removeTag.sqf | 16 +++++- addons/interaction/functions/fnc_sendAway.sqf | 32 +++++++----- .../functions/fnc_showMouseHint.sqf | 35 +++++++------ .../functions/fnc_sortOptionsByPriority.sqf | 16 +++++- .../interaction/functions/fnc_tapShoulder.sqf | 17 ++++++- .../functions/fnc_updateTooltipPosition.sqf | 18 ++++++- 35 files changed, 490 insertions(+), 197 deletions(-) diff --git a/addons/interaction/functions/fnc_addPassengerActions.sqf b/addons/interaction/functions/fnc_addPassengerActions.sqf index 82e3b3b4fb..f17ca649c2 100644 --- a/addons/interaction/functions/fnc_addPassengerActions.sqf +++ b/addons/interaction/functions/fnc_addPassengerActions.sqf @@ -2,7 +2,7 @@ * Author: esteldunedain * Mount unit actions inside passenger submenu * - * Argument: + * Arguments: * 0: Vehicle * 1: Player * 3: Parameters @@ -10,6 +10,9 @@ * Return value: * Children actions * + * Example: + * _array = [vehicle, player, [params]] call ace_interaction_fnc_addPassengerAction + * * Public: No */ #include "script_component.hpp" diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf index c446be3737..661c43a643 100644 --- a/addons/interaction/functions/fnc_addPassengersActions.sqf +++ b/addons/interaction/functions/fnc_addPassengersActions.sqf @@ -2,7 +2,7 @@ * Author: esteldunedain * Create one action per passenger * - * Argument: + * Arguments: * 0: Vehicle * 1: Player * 3: Parameters @@ -10,6 +10,9 @@ * Return value: * Children actions * + * Example: + * _array = [vehicle, player, [params]] call ace_interaction_fnc_addPassengersActions + * * Public: No */ #include "script_component.hpp" @@ -39,4 +42,4 @@ _actions = []; }; } forEach crew _vehicle; -_actions \ No newline at end of file +_actions diff --git a/addons/interaction/functions/fnc_addSelectableItem.sqf b/addons/interaction/functions/fnc_addSelectableItem.sqf index 498b852635..8f5676b4ca 100644 --- a/addons/interaction/functions/fnc_addSelectableItem.sqf +++ b/addons/interaction/functions/fnc_addSelectableItem.sqf @@ -1,21 +1,21 @@ /* - Author: Garth de Wet (LH) - - Description: - Adds an item to the select menu - - Parameters: - 0: ARRAY/NUMBER - List container - 1: String - Display Name - 2: String - Picture - 3: String/code - data - - Returns: - ARRAY/Number - - Example: -*/ - + * Author: Garth de Wet (LH) + * Adds an item to the select menu + * + * Arguments: + * 0: List container + * 1: Display name + * 2: Picture + * 3: Data + * + * Return value: + * Container + * + * Example: + * _array = [_actions, "Banana", "UI\dot_ca.paa", data] call ace_interaction_fnc_addSelectableItem + * + * Public: No + */ #include "script_component.hpp" private ["_container", "_displayName", "_picture", "_data", "_index"]; diff --git a/addons/interaction/functions/fnc_applyButtons.sqf b/addons/interaction/functions/fnc_applyButtons.sqf index be35b34877..5baa158eb5 100644 --- a/addons/interaction/functions/fnc_applyButtons.sqf +++ b/addons/interaction/functions/fnc_applyButtons.sqf @@ -1,5 +1,18 @@ -// by commy2 - +/* + * Author: commy2 + * Applies buttons + * + * Arguments: + * None + * + * Return value: + * None + * + * Example: + * call ace_interaction_fnc_applyButtons + * + * Public: No + */ #include "script_component.hpp" private ["_object", "_actions", "_dlgInteractionDialog", "_ctrlInteractionDialog", "_index", "_ctrlInteractionDialogIcon"]; diff --git a/addons/interaction/functions/fnc_canBecomeLeader.sqf b/addons/interaction/functions/fnc_canBecomeLeader.sqf index 11234ad6d7..0bb555c49a 100644 --- a/addons/interaction/functions/fnc_canBecomeLeader.sqf +++ b/addons/interaction/functions/fnc_canBecomeLeader.sqf @@ -7,10 +7,10 @@ * 1: player * * Return Value: - * + * Able to become leader of group * * Example: - * [player, player] call ace_interaction_fnc_canBecomeLeader + * _bool = [player, player] call ace_interaction_fnc_canBecomeLeader * * Public: No */ diff --git a/addons/interaction/functions/fnc_canInteractWithCivilian.sqf b/addons/interaction/functions/fnc_canInteractWithCivilian.sqf index 6408d66aa8..c89f4c9868 100644 --- a/addons/interaction/functions/fnc_canInteractWithCivilian.sqf +++ b/addons/interaction/functions/fnc_canInteractWithCivilian.sqf @@ -1,5 +1,18 @@ -// by commy2 - +/* + * Author: commy2 + * Checks if the player can interact with civilian + * + * Arguments: + * 0: Target + * + * Return value: + * Able to interact with civilian + * + * Example: + * _bool = [target] call ace_interaction_fnc_canInteractWithCivilian + * + * Public: No + */ #include "script_component.hpp" EXPLODE_2_PVT(_this,_unit,_isCivilian); @@ -8,4 +21,4 @@ if (isNil "_isCivilian") then {_isCivilian = true}; alive _unit && [side _unit != side ACE_player, side group _unit == civilian] select _isCivilian -//&& {count (weapons _unit) == 0} \ No newline at end of file +//&& {count (weapons _unit) == 0} diff --git a/addons/interaction/functions/fnc_canJoinGroup.sqf b/addons/interaction/functions/fnc_canJoinGroup.sqf index d299524925..26597ca0a0 100644 --- a/addons/interaction/functions/fnc_canJoinGroup.sqf +++ b/addons/interaction/functions/fnc_canJoinGroup.sqf @@ -1,4 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * Checks if the player can join a group + * + * Arguments: + * 0: Player + * 1: Target + * + * Return value: + * Able to join a group + * + * Example: + * _bool = [player, target] call ace_interaction_fnc_canJoinGroup + * + * Public: No + */ #include "script_component.hpp" private ["_unit", "_target"]; diff --git a/addons/interaction/functions/fnc_canJoinTeam.sqf b/addons/interaction/functions/fnc_canJoinTeam.sqf index 45f96393a9..4312981978 100644 --- a/addons/interaction/functions/fnc_canJoinTeam.sqf +++ b/addons/interaction/functions/fnc_canJoinTeam.sqf @@ -1,4 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * Checks if the player can join a team + * + * Arguments: + * 0: Player + * 1: Target + * + * Return value: + * Able to join a team + * + * Example: + * _bool = [player, target] call ace_interaction_fnc_canJoinTeam + * + * Public: No + */ #include "script_component.hpp" private ["_unit", "_target"]; diff --git a/addons/interaction/functions/fnc_canTapShoulder.sqf b/addons/interaction/functions/fnc_canTapShoulder.sqf index 4ea9836117..2be9bf70a9 100644 --- a/addons/interaction/functions/fnc_canTapShoulder.sqf +++ b/addons/interaction/functions/fnc_canTapShoulder.sqf @@ -1,5 +1,19 @@ -// by commy2 - +/* + * Author: commy2 + * Checks if the player can tap a shoulder + * + * Arguments: + * 0: Player + * 1: Target + * + * Return value: + * Able to tap a shoulder + * + * Example: + * _bool = [player, target] call ace_interaction_fnc_canTapShoulder + * + * Public: No + */ #include "script_component.hpp" private ["_unit", "_target"]; diff --git a/addons/interaction/functions/fnc_doBecomeLeader.sqf b/addons/interaction/functions/fnc_doBecomeLeader.sqf index 24bfa66c11..0fd81cbc96 100644 --- a/addons/interaction/functions/fnc_doBecomeLeader.sqf +++ b/addons/interaction/functions/fnc_doBecomeLeader.sqf @@ -3,8 +3,8 @@ * Become Leader of group * * Arguments: - * 0: target - * 1: player + * 0: Target + * 1: Player * * Return Value: * None diff --git a/addons/interaction/functions/fnc_getDoor.sqf b/addons/interaction/functions/fnc_getDoor.sqf index 91c2161d9f..460a325954 100644 --- a/addons/interaction/functions/fnc_getDoor.sqf +++ b/addons/interaction/functions/fnc_getDoor.sqf @@ -1,4 +1,20 @@ -// by commy2 +/* + * Author: commy2 + * Get door + * + * Arguments: + * 0: Distance + * + * Return value: + * House objects and door + * 0: House + * 1: Door Name + * + * Example: + * _array = [player, target] call ace_interaction_fnc_getDoor + * + * Public: No + */ #include "script_component.hpp" private ["_distance", "_position0", "_position1", "_intersections", "_count", "_house", "_door", "_index", "_id"]; diff --git a/addons/interaction/functions/fnc_getDoorAnimations.sqf b/addons/interaction/functions/fnc_getDoorAnimations.sqf index ca59ec177c..cb0b7122b0 100644 --- a/addons/interaction/functions/fnc_getDoorAnimations.sqf +++ b/addons/interaction/functions/fnc_getDoorAnimations.sqf @@ -1,4 +1,21 @@ -// by commy2 +/* + * Author: commy2 + * Get door animations + * + * Arguments: + * 0: House + * 1: Door + * + * Return value: + * Animation and Locked variable + * 0: Animation + * 1: Locked variable + * + * Example: + * _array = [target, "door"] call ace_interaction_fnc_getDoorAnimations + * + * Public: No + */ #include "script_component.hpp" private ["_house", "_door", "_animations", "_lockedVariable"]; diff --git a/addons/interaction/functions/fnc_getDown.sqf b/addons/interaction/functions/fnc_getDown.sqf index ead5dcd290..9e7daecb46 100644 --- a/addons/interaction/functions/fnc_getDown.sqf +++ b/addons/interaction/functions/fnc_getDown.sqf @@ -1,13 +1,17 @@ /* * Author: KoffeinFlummi - * - * Forces a civilian to the ground. (chance of failure). + * Forces a civilian to the ground (with a chance of failure) * * Arguments: - * 0: Unit to be sent away (Object) + * 0: Unit * * Return value: - * none + * None + * + * Example: + * [target] call ace_interaction_fnc_getDown + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/interaction/functions/fnc_getSelectedButton.sqf b/addons/interaction/functions/fnc_getSelectedButton.sqf index d1c801e1dc..52ba3d67e0 100644 --- a/addons/interaction/functions/fnc_getSelectedButton.sqf +++ b/addons/interaction/functions/fnc_getSelectedButton.sqf @@ -1,4 +1,18 @@ -// by commy2 +/* + * Author: commy2 + * Get selected button + * + * Arguments: + * None + * + * Return value: + * Angle + * + * Example: + * _number = call ace_interaction_fnc_getSelectedButton + * + * Public: No + */ #include "script_component.hpp" #define MIN_DISTANCE 0.0065 diff --git a/addons/interaction/functions/fnc_getWeaponPos.sqf b/addons/interaction/functions/fnc_getWeaponPos.sqf index 477e74f9bf..35ea202b1d 100644 --- a/addons/interaction/functions/fnc_getWeaponPos.sqf +++ b/addons/interaction/functions/fnc_getWeaponPos.sqf @@ -2,12 +2,15 @@ * Author: esteldunedain * Return a suitable position for the action point for the current weapon * - * Argument: + * Arguments: * None * * Return value: * Children actions * + * Example: + * _array = call ace_interaction_fnc_getWeaponPos + * * Public: No */ #include "script_component.hpp" diff --git a/addons/interaction/functions/fnc_hideMenu.sqf b/addons/interaction/functions/fnc_hideMenu.sqf index 54263ef032..89dc49be40 100644 --- a/addons/interaction/functions/fnc_hideMenu.sqf +++ b/addons/interaction/functions/fnc_hideMenu.sqf @@ -1,22 +1,22 @@ /* - Author: Garth de Wet (LH) - - Description: - Closes the Interaction menu - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(hideMenu); -*/ + * Author: Garth de Wet (LH) + * Closes the Interaction menu + * + * Arguments: + * None + * + * Return value: + * None + * + * Example: + * call ace_interaction_fnc_hideMenu + * + * Public: No + */ #include "script_component.hpp" closeDialog 0; (findDisplay 1713999) closeDisplay 1; (uiNameSpace getVariable QGVAR(Flow_Display)) closeDisplay 0; GVAR(MainButton) = nil; -call FUNC(hideMouseHint); \ No newline at end of file +call FUNC(hideMouseHint); diff --git a/addons/interaction/functions/fnc_hideMouseHint.sqf b/addons/interaction/functions/fnc_hideMouseHint.sqf index d910352076..69acba25a2 100644 --- a/addons/interaction/functions/fnc_hideMouseHint.sqf +++ b/addons/interaction/functions/fnc_hideMouseHint.sqf @@ -1,22 +1,21 @@ /* - Author(s): - Garth de Wet (LH) - - Description: - Hides the interaction helper text with the mouse buttons at the bottom middle of the screen - - Parameters: - Nothing - - Returns: - Nothing - - Example: - call FUNC(hideMouseHint); -*/ + * Author: Garth de Wet (LH) + * Hides the interaction helper text with the mouse buttons at the bottom middle of the screen + * + * Arguments: + * None + * + * Return value: + * None + * + * Example: + * call ace_interaction_fnc_hideMouseHint + * + * Public: No + */ #include "script_component.hpp" if (isNull (uiNamespace getVariable ["ACE_Helper_Display", objNull])) exitWith{}; (QGVAR(InteractionHelper) call BIS_fnc_rscLayer) cutText ["", "PLAIN"]; -showHUD true; \ No newline at end of file +showHUD true; diff --git a/addons/interaction/functions/fnc_isInRange.sqf b/addons/interaction/functions/fnc_isInRange.sqf index 5048b66001..05677d7060 100644 --- a/addons/interaction/functions/fnc_isInRange.sqf +++ b/addons/interaction/functions/fnc_isInRange.sqf @@ -1,14 +1,18 @@ /* * Author: commy2 - * * Check if the vehicle is in range of the player. * - * Argument: - * 0: Vehicke (Object) - * 1: Distance in meters (Number) + * Arguments: + * 0: Vehicle + * 1: Distance in meters * * Return value: - * (Bool) + * Vehicle in range of player + * + * Example: + * _bool = [target, 5] call ace_interaction_fnc_isInRange + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index 2e4d1f2898..cf6889d90a 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -1,4 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * Assigns a unit to the team + * + * Arguments: + * 0: Unit + * 1: Team + * + * Return value: + * None + * + * Example: + * [target, "YELLOW"] call ace_interaction_fnc_joinTeam + * + * Public: No + */ #include "script_component.hpp" private ["_unit", "_team", "_message"]; diff --git a/addons/interaction/functions/fnc_moduleInteraction.sqf b/addons/interaction/functions/fnc_moduleInteraction.sqf index 37b7bacba5..925847c028 100644 --- a/addons/interaction/functions/fnc_moduleInteraction.sqf +++ b/addons/interaction/functions/fnc_moduleInteraction.sqf @@ -1,13 +1,19 @@ /* * Author: bux578 - * - * Initializes the Interaction module. + * Initializes the Interaction module * * Arguments: - * Whatever the module provides. (I dunno.) + * 0: Logic + * 1: ??? + * 2: Activation State * - * Return Value: + * Return value: * None + * + * Example: + * [logic, ???, activationState] call ace_interaction_fnc_moduleInteraction + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/interaction/functions/fnc_moveDown.sqf b/addons/interaction/functions/fnc_moveDown.sqf index 3b7a7074e9..eb946a5f10 100644 --- a/addons/interaction/functions/fnc_moveDown.sqf +++ b/addons/interaction/functions/fnc_moveDown.sqf @@ -1,19 +1,18 @@ /* - Author: Garth de Wet (LH) - - Description: - Depending on the passed value, either scrolls down through the list or up. - - Parameters: - NUMBER - Amount to increase current interaction target - - Returns: - Nothing - - Example: - 1 call FUNC(moveDown); - -1 call FUNC(moveDown); -*/ + * Author: Garth de Wet (LH) + * Scrolls through the list down or up + * + * Arguments: + * 0: Amount + * + * Return value: + * None + * + * Example: + * [2] call ace_interaction_fnc_moveDown + * + * Public: No + */ #include "script_component.hpp" #define CLAMP(x,low,high) (if(x > high)then{high}else{if(x < low)then{low}else{x}}) diff --git a/addons/interaction/functions/fnc_onButtonUp.sqf b/addons/interaction/functions/fnc_onButtonUp.sqf index cee524c55f..151ce67c98 100644 --- a/addons/interaction/functions/fnc_onButtonUp.sqf +++ b/addons/interaction/functions/fnc_onButtonUp.sqf @@ -1,4 +1,18 @@ -// by commy2 +/* + * Author: commy2 + * On button up + * + * Arguments: + * None + * + * Return value: + * None + * + * Example: + * call ace_interaction_fnc_onButtonUp + * + * Public: No + */ #include "script_component.hpp" private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"]; diff --git a/addons/interaction/functions/fnc_onClick.sqf b/addons/interaction/functions/fnc_onClick.sqf index 29fffb8b94..6f9882281f 100644 --- a/addons/interaction/functions/fnc_onClick.sqf +++ b/addons/interaction/functions/fnc_onClick.sqf @@ -1,4 +1,18 @@ -// by commy2 +/* + * Author: commy2 + * On click + * + * Arguments: + * Index + * + * Return value: + * None + * + * Example: + * 5 call ace_interaction_fnc_onClick + * + * Public: No + */ #include "script_component.hpp" private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_subMenu", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"]; diff --git a/addons/interaction/functions/fnc_onSelectMenuDblClick.sqf b/addons/interaction/functions/fnc_onSelectMenuDblClick.sqf index 25d307a2eb..18b69ba40d 100644 --- a/addons/interaction/functions/fnc_onSelectMenuDblClick.sqf +++ b/addons/interaction/functions/fnc_onSelectMenuDblClick.sqf @@ -1,4 +1,18 @@ -// by CorruptedHeart, commy2 +/* + * Author: CorruptedHeart, commy2 + * On select menu double click + * + * Arguments: + * None + * + * Return value: + * None + * + * Example: + * call ace_interaction_fnc_onSelectMenuDblClick + * + * Public: No + */ #include "script_component.hpp" call compile (lbData [8866, lbCurSel 8866]) call GVAR(SelectAccept); diff --git a/addons/interaction/functions/fnc_openDoor.sqf b/addons/interaction/functions/fnc_openDoor.sqf index e175e752cb..3e776f3538 100644 --- a/addons/interaction/functions/fnc_openDoor.sqf +++ b/addons/interaction/functions/fnc_openDoor.sqf @@ -1,4 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * Opens door + * + * Arguments: + * 0: House + * 1: Door + * + * Return value: + * None + * + * Example: + * [house, "door"] call ace_interaction_fnc_openDoor + * + * Public: No + */ #include "script_component.hpp" private ["_info", "_house", "_door", "_animations", "_lockedVariable"]; diff --git a/addons/interaction/functions/fnc_openMenuSelectUI.sqf b/addons/interaction/functions/fnc_openMenuSelectUI.sqf index 55eaba6423..e755869ed1 100644 --- a/addons/interaction/functions/fnc_openMenuSelectUI.sqf +++ b/addons/interaction/functions/fnc_openMenuSelectUI.sqf @@ -1,4 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * Opens menu select UI + * + * Arguments: + * 0: Unit + * 1: Vehicle + * + * Return value: + * None + * + * Example: + * [unit, vehicle] call ace_interaction_fnc_openMenuSelectUI + * + * Public: No + */ #include "script_component.hpp" private ["_unit", "_vehicle", "_cargo"]; @@ -20,25 +35,25 @@ _actions = [localize "STR_ACE_Interaction_InteractionMenu", localize "STR_ACE_In // prepare: add all cargo units as options to select menu { - if (_x != _unit) then { - _actions = [ - _actions, - [_x] call EFUNC(common,getName), - QUOTE(PATHTOF(UI\dot_ca.paa)), - _forEachIndex - ] call FUNC(addSelectableItem); - }; + if (_x != _unit) then { + _actions = [ + _actions, + [_x] call EFUNC(common,getName), + QUOTE(PATHTOF(UI\dot_ca.paa)), + _forEachIndex + ] call FUNC(addSelectableItem); + }; } forEach _cargo; // open select menu [ - _actions, - { - call FUNC(hideMenu); - [0, GVAR(InteractionMenu_Crew) select _this, ""] spawn FUNC(showMenu); - GVAR(InteractionMenu_Crew) = nil; - }, - { - call FUNC(hideMenu); - } + _actions, + { + call FUNC(hideMenu); + [0, GVAR(InteractionMenu_Crew) select _this, ""] spawn FUNC(showMenu); + GVAR(InteractionMenu_Crew) = nil; + }, + { + call FUNC(hideMenu); + } ] call FUNC(openSelectMenu); diff --git a/addons/interaction/functions/fnc_openSelectMenu.sqf b/addons/interaction/functions/fnc_openSelectMenu.sqf index de5459f88c..13e02fb044 100644 --- a/addons/interaction/functions/fnc_openSelectMenu.sqf +++ b/addons/interaction/functions/fnc_openSelectMenu.sqf @@ -1,26 +1,27 @@ /* - Author: Garth de Wet (LH) - - Description: - Opens the select menu UI and sets up the UI - - Parameters: - 0: ARRAY - items - ARRAY - 0 = Text - 1 = statement to execute - 2 = condition before execute - 3 = showDisabled - 4 = priority - 5 = icon - 6 = extra variables. Passed to the code. - 1: Code - select action - 2: Code - Cancel Action - Returns: - Nothing - - Example: -*/ + * Author: Garth de Wet (LH) + * Opens the select menu UI and sets up the UI + * + * Arguments: + * 0: Items + * 0: Text + * 1: Statement to execute + * 2: Condition before execute + * 3: showDisabled + * 4: Priority + * 5: Icon + * 6: Extra variables passed to the code + * 1: Select Action + * 2: Cancel Action + * + * Return value: + * None + * + * Example: + * [["text", {statement}, {condition}, showDisabled, priority, "icon", [variables]], {selectAction}, {cancelAction}] call ace_interaction_fnc_openSelectMenu + * + * Public: No + */ #include "script_component.hpp" if (!(profileNamespace getVariable [QGVAR(FlowMenu), false])) then { diff --git a/addons/interaction/functions/fnc_prepareSelectMenu.sqf b/addons/interaction/functions/fnc_prepareSelectMenu.sqf index 34a1bfea5b..f43ec75c4e 100644 --- a/addons/interaction/functions/fnc_prepareSelectMenu.sqf +++ b/addons/interaction/functions/fnc_prepareSelectMenu.sqf @@ -1,19 +1,19 @@ /* - Author: Garth de Wet (LH) - - Description: - Prepares the select menu for use. - - Parameters: - 0: TEXT - Header text - 1: TEXT - Approve button text - - Returns: - ARRAY/NUMBER - container object for use with addSelectableItem. - - Example: - ["Select Explosive", "Place"] call FUNC(prepareSelectMenu); -*/ + * Author: Garth de Wet (LH) + * Prepares the select menu for use + * + * Arguments: + * 0: Header Text + * 1: Approve Button Text + * + * Return value: + * Container object + * + * Example: + * _array = ["Select Explosive", "Place"] call ace_interaction_fnc_prepareSelectMenu + * + * Public: No + */ #include "script_component.hpp" private ["_buttonAction", "_header", "_buttonText", "_cancelButton"]; diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf index f52a9d40de..580f687f64 100644 --- a/addons/interaction/functions/fnc_push.sqf +++ b/addons/interaction/functions/fnc_push.sqf @@ -1,22 +1,27 @@ /* * Author: KoffeinFlummi - * - * Pushes a boat away from the player. + * Pushes a boat away from the player * * Arguments: - * 0: Boat (object) - * 1: Velocity (vectorlike array) + * 0: Boat + * 1: Velocity * * Return Value: * None + * + * Example: + * [target, [vector]] call ace_interaction_fnc_push + * + * Public: No */ + #include "script_component.hpp" _boat = _this select 0; _velocity = _this select 1; if !(local _boat) exitWith { - [_this, QUOTE(FUNC(push)), _boat] call EFUNC(common,execRemoteFnc); + [_this, QUOTE(FUNC(push)), _boat] call EFUNC(common,execRemoteFnc); }; _boat setVelocity _velocity; diff --git a/addons/interaction/functions/fnc_removeTag.sqf b/addons/interaction/functions/fnc_removeTag.sqf index 0894520149..d1a16bf88b 100644 --- a/addons/interaction/functions/fnc_removeTag.sqf +++ b/addons/interaction/functions/fnc_removeTag.sqf @@ -1,4 +1,18 @@ -// by commy2 +/* + * Author: commy2 + * Removes tag + * + * Arguments: + * None + * + * Return value: + * None + * + * Example: + * call ace_interaction_fnc_removeTag + * + * Public: No + */ #include "script_component.hpp" 0 spawn { diff --git a/addons/interaction/functions/fnc_sendAway.sqf b/addons/interaction/functions/fnc_sendAway.sqf index 5cd6a9d43a..1a48725644 100644 --- a/addons/interaction/functions/fnc_sendAway.sqf +++ b/addons/interaction/functions/fnc_sendAway.sqf @@ -1,14 +1,18 @@ /* * Author: KoffeinFlummi - * - * Sends a civilian crowd away (chance of failure). + * Sends a civilian crowd away with a chance of failure * * Arguments: - * 0: Unit to be sent away (Object) + * 0: Unit * * Return value: - * none -*/ + * None + * + * Example: + * [target] call ace_interaction_fnc_sendAway + * + * Public: No + */ #include "script_component.hpp" #define DISTANCE 50 @@ -21,16 +25,16 @@ _unit = _this select 0; ACE_player playActionNow "GestureGo"; if (count weapons ACE_player > 0) then { - _chance = 0.8; + _chance = 0.8; } else { - _chance = 0.5; + _chance = 0.5; }; { - if (count (weapons _unit) == 0 and random 1 < _chance) then { - [-2, { - (_this select 0) setUnitPos "AUTO"; - (_this select 0) doMove [(getPos (_this select 0) select 0) + DISTANCE * (eyeDirection (_this select 1) select 0), (getPos (_this select 0) select 1) + DISTANCE * (eyeDirection (_this select 1) select 1), 0]; - }, [_x, ACE_player]] call CBA_fnc_globalExecute; - }; -} foreach (_unit nearEntities ["Civilian", RADIUS]); + if (count (weapons _unit) == 0 and random 1 < _chance) then { + [-2, { + (_this select 0) setUnitPos "AUTO"; + (_this select 0) doMove [(getPos (_this select 0) select 0) + DISTANCE * (eyeDirection (_this select 1) select 0), (getPos (_this select 0) select 1) + DISTANCE * (eyeDirection (_this select 1) select 1), 0]; + }, [_x, ACE_player]] call CBA_fnc_globalExecute; + }; +} forEach (_unit nearEntities ["Civilian", RADIUS]); diff --git a/addons/interaction/functions/fnc_showMouseHint.sqf b/addons/interaction/functions/fnc_showMouseHint.sqf index 5cb96a0eae..a64114d009 100644 --- a/addons/interaction/functions/fnc_showMouseHint.sqf +++ b/addons/interaction/functions/fnc_showMouseHint.sqf @@ -1,21 +1,20 @@ /* - Author(s): - Garth de Wet (LH) - - Description: - Shows the interaction helper text with the mouse buttons at the bottom middle of the screen - - Parameters: - 0: STRING - Left click text - 1: STRING - Right click text - 3: STRING - (Optional) Scroll text - - Returns: - Nothing - - Example: - ["Place Explosive", "Cancel"] call FUNC(showMouseHint); -*/ + * Author: Garth de Wet (LH) + * Shows the interaction helper text with the mouse buttons at the bottom middle of the screen + * + * Arguments: + * 0: Left Click Text + * 1: Right Click Text + * 2: Scroll Text (Optional) + * + * Return value: + * None + * + * Example: + * ["Place Explosive", "Cancel"] call ace_interaction_fnc_showMouseHint + * + * Public: No + */ #include "script_component.hpp" #define GUI_GRID_W (0.025) @@ -51,4 +50,4 @@ if (_scroll == "") exitWith { (_display displayCtrl 1201) ctrlCommit 0; }; (_display displayCtrl 1002) ctrlSetText _scroll; -showHUD false; \ No newline at end of file +showHUD false; diff --git a/addons/interaction/functions/fnc_sortOptionsByPriority.sqf b/addons/interaction/functions/fnc_sortOptionsByPriority.sqf index 28daa4e7e5..ce4c714d79 100644 --- a/addons/interaction/functions/fnc_sortOptionsByPriority.sqf +++ b/addons/interaction/functions/fnc_sortOptionsByPriority.sqf @@ -1,4 +1,18 @@ -// by commy2 +/* + * Author: commy2 + * Sort options by priority + * + * Arguments: + * Actions + * + * Return value: + * None + * + * Example: + * _customActions call ace_interaction_fnc_sortOptionsByPriority + * + * Public: No + */ #include "script_component.hpp" private ["_actions", "_count", "_index", "_actionN", "_actionM"]; diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index 11fc6b7881..f18c9c2c30 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -1,4 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * Taps a shoulder + * + * Arguments: + * 0: Player + * 1: Target + * + * Return value: + * None + * + * Example: + * [player, target] call ace_interaction_fnc_tapShoulder + * + * Public: No + */ #include "script_component.hpp" EXPLODE_3_PVT(_this,_tapper,_target,_shoulderNum); diff --git a/addons/interaction/functions/fnc_updateTooltipPosition.sqf b/addons/interaction/functions/fnc_updateTooltipPosition.sqf index 27148c5aa3..c194102b41 100644 --- a/addons/interaction/functions/fnc_updateTooltipPosition.sqf +++ b/addons/interaction/functions/fnc_updateTooltipPosition.sqf @@ -1,4 +1,20 @@ -// by commy2 +/* + * Author: commy2 + * Updates tooltip's position + * + * Arguments: + * 0: Tooltip Display + * 1: X Coordinate + * 2: Y Coordinate + * + * Return value: + * None + * + * Example: + * [player, 0.5, 0.5] call ace_interaction_fnc_updateTooltipPosition + * + * Public: No + */ #include "script_component.hpp" disableSerialization; From e9abd8c27a423c65aa39fd1ba18014f394194d60 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 May 2015 04:55:41 +0200 Subject: [PATCH 0089/1101] Fixed lowercasing, improved examples --- addons/interaction/functions/fnc_addPassengerActions.sqf | 2 +- addons/interaction/functions/fnc_addPassengersActions.sqf | 2 +- addons/interaction/functions/fnc_addSelectableItem.sqf | 2 +- addons/interaction/functions/fnc_canBecomeLeader.sqf | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/interaction/functions/fnc_addPassengerActions.sqf b/addons/interaction/functions/fnc_addPassengerActions.sqf index f17ca649c2..4474378bcc 100644 --- a/addons/interaction/functions/fnc_addPassengerActions.sqf +++ b/addons/interaction/functions/fnc_addPassengerActions.sqf @@ -11,7 +11,7 @@ * Children actions * * Example: - * _array = [vehicle, player, [params]] call ace_interaction_fnc_addPassengerAction + * _array = [target, player, [params]] call ace_interaction_fnc_addPassengerAction * * Public: No */ diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf index 661c43a643..d1565f8d9a 100644 --- a/addons/interaction/functions/fnc_addPassengersActions.sqf +++ b/addons/interaction/functions/fnc_addPassengersActions.sqf @@ -11,7 +11,7 @@ * Children actions * * Example: - * _array = [vehicle, player, [params]] call ace_interaction_fnc_addPassengersActions + * _array = [target, player, [params]] call ace_interaction_fnc_addPassengersActions * * Public: No */ diff --git a/addons/interaction/functions/fnc_addSelectableItem.sqf b/addons/interaction/functions/fnc_addSelectableItem.sqf index 8f5676b4ca..6f1339d25a 100644 --- a/addons/interaction/functions/fnc_addSelectableItem.sqf +++ b/addons/interaction/functions/fnc_addSelectableItem.sqf @@ -12,7 +12,7 @@ * Container * * Example: - * _array = [_actions, "Banana", "UI\dot_ca.paa", data] call ace_interaction_fnc_addSelectableItem + * _array = [_actions, "Banana", "UI\dot_ca.paa", "bananaContents"] call ace_interaction_fnc_addSelectableItem * * Public: No */ diff --git a/addons/interaction/functions/fnc_canBecomeLeader.sqf b/addons/interaction/functions/fnc_canBecomeLeader.sqf index 0bb555c49a..c79f879525 100644 --- a/addons/interaction/functions/fnc_canBecomeLeader.sqf +++ b/addons/interaction/functions/fnc_canBecomeLeader.sqf @@ -3,8 +3,8 @@ * Test if can Become Leader of group * * Arguments: - * 0: target - * 1: player + * 0: Target + * 1: Player * * Return Value: * Able to become leader of group From b57f731dd06facd0531685ac3d753e66252badd6 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 9 May 2015 04:59:10 +0200 Subject: [PATCH 0090/1101] disable laserpointer inheritance for rhs --- .../laserpointer/functions/fnc_switchLaserLightMode.sqf | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf index f996d6b270..423090796f 100644 --- a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf +++ b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf @@ -29,11 +29,17 @@ _pointer = switch (_weapon) do { if (_pointer == "") exitWith {}; +private "_config"; +_config = configFile >> "CfgWeapons" >> _pointer; + private "_nextPointer"; -_nextPointer = getText (configFile >> "CfgWeapons" >> _pointer >> "ACE_nextModeClass"); +_nextPointer = getText (_config >> "ACE_nextModeClass"); if (_nextPointer == "") exitWith {}; +// disable inheritance for this entry, because addons claim this as a base class for convenience +if !((_config >> "ACE_nextModeClass") in configProperties [_config, "true", false]) exitWith {}; + private ["_description", "_picture"]; _description = getText (configFile >> "CfgWeapons" >> _nextPointer >> "ACE_modeDescription"); From 818d6c49003416920596aa3df3b72390a5a28db3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 May 2015 05:12:29 +0200 Subject: [PATCH 0091/1101] Possibly fixed FUNC Macros list in Coding Guidelines --- documentation/development/coding-guidelines.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/documentation/development/coding-guidelines.md b/documentation/development/coding-guidelines.md index 04d6adba80..d2ae7b8d28 100644 --- a/documentation/development/coding-guidelines.md +++ b/documentation/development/coding-guidelines.md @@ -121,7 +121,7 @@ Every function should have a header of the following format: ## 4. Macro Usage ### 4.1 Module/PBO specific Macro Usage -The family of `GVAR` macro's define global variable strings or constants for use within a module. Please use these to make sure we follow naming conventions across all modules and also prevent duplicate/overwriting between variables in different modules. The macro family expands as follows, for the example of the module 'balls' +The family of `GVAR` macro's define global variable strings or constants for use within a module. Please use these to make sure we follow naming conventions across all modules and also prevent duplicate/overwriting between variables in different modules. The macro family expands as follows, for the example of the module 'balls': * `GVAR(face)` is `ace_balls_face` * `QGVAR(face)` is `"ace_balls_face"` @@ -130,7 +130,8 @@ The family of `GVAR` macro's define global variable strings or constants for use * `QEGVAR(leg,face)` is `"ace_leg_face"` -There also exists the FUNC family of Macros +There also exists the FUNC family of Macros: + * `FUNC(face)` is `ace_balls_fnc_face` or the call trace wrapper for that function. * `EFUNC(balls,face)` is `ace_balls_fnc_face` or the call trace wrapper for that function. * `EFUNC(leg,face)` is `ace_leg_fnc_face` or the call trace wrapper for that function. From ddf32052c4cd9f1a8460048c607cf47d96369487 Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 9 May 2015 08:02:13 +0200 Subject: [PATCH 0092/1101] fix removeWhiteSpace function name used `string_removeWhiteSpace` but had to be `stringRemoveWhiteSpace` due to 612fa69c1c4cf7ed8b81c5086dc90877d0eda400 --- .../functions/fnc_moduleAmbianceSound.sqf | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf index c02d19aa5f..6e5643754c 100644 --- a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf +++ b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf @@ -26,39 +26,39 @@ _activated = [_this,2,true,[true]] call BIS_fnc_param; // We only play this on the locality of the logic, since the sounds are broadcasted across the network if (_activated && local _logic) then { _ambianceSounds = []; - _unparsedSounds = _logic getvariable ["soundFiles", ""]; - _minimalDistance = (_logic getvariable ["minimalDistance", 400]) max 1; - _maximalDistance = (_logic getvariable ["maximalDistance", 10]) max _minimalDistance; - _minDelayBetweensounds = (_logic getvariable ["minimalDelay", 10]) max 1; - _maxDelayBetweenSounds = (_logic getvariable ["maximalDelay", 170]) max _minDelayBetweensounds; - _volume = (_logic getvariable ["soundVolume", 30]) max 1; - _followPlayers = _logic getvariable ["followPlayers", false]; + _unparsedSounds = _logic getVariable ["soundFiles", ""]; + _minimalDistance = (_logic getVariable ["minimalDistance", 400]) max 1; + _maximalDistance = (_logic getVariable ["maximalDistance", 10]) max _minimalDistance; + _minDelayBetweensounds = (_logic getVariable ["minimalDelay", 10]) max 1; + _maxDelayBetweenSounds = (_logic getVariable ["maximalDelay", 170]) max _minDelayBetweensounds; + _volume = (_logic getVariable ["soundVolume", 30]) max 1; + _followPlayers = _logic getVariable ["followPlayers", false]; _splittedList = [_unparsedSounds, ","] call BIS_fnc_splitString; _nilCheckPassedList = ""; { - _x = [_x] call EFUNC(common,string_removeWhiteSpace); - _splittedList set [_foreachIndex, _x]; - }foreach _splittedList; + _x = [_x] call EFUNC(common,stringRemoveWhiteSpace); + _splittedList set [_forEachIndex, _x]; + }forEach _splittedList; _soundPath = [(str missionConfigFile), 0, -15] call BIS_fnc_trimString; { - if (isclass (missionConfigFile >> "CfgSounds" >> _x)) then { - _ambianceSounds pushback (_soundPath + (getArray(missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0)); + if (isClass (missionConfigFile >> "CfgSounds" >> _x)) then { + _ambianceSounds pushBack (_soundPath + (getArray(missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0)); } else { - if (isclass (configFile >> "CfgSounds" >> _x)) then { - _ambianceSounds pushback ((getArray(configFile >> "CfgSounds" >> _x >> "sound") select 0)); + if (isClass (configFile >> "CfgSounds" >> _x)) then { + _ambianceSounds pushBack ((getArray(configFile >> "CfgSounds" >> _x >> "sound") select 0)); }; }; - }foreach _splittedList; + }forEach _splittedList; - if (count _ambianceSounds == 0) exitwith {}; + if (count _ambianceSounds == 0) exitWith {}; { if !([".", _x, true] call BIS_fnc_inString) then { - _ambianceSounds set [_foreachIndex, _x + ".wss"]; + _ambianceSounds set [_forEachIndex, _x + ".wss"]; }; - }foreach _ambianceSounds; + }forEach _ambianceSounds; [{ private ["_args", "_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers","_lastTimePlayed", "_newPos"]; @@ -68,7 +68,7 @@ if (_activated && local _logic) then { _maxDelayBetweenSounds = _args select 5; _lastTimePlayed = _args select 8; - if (!alive _logic) exitwith { + if (!alive _logic) exitWith { [(_this select 1)] call cba_fnc_removePerFrameHandler; }; From fb284faa6611ebbdfcff9a7954223105b06de426 Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 9 May 2015 08:18:44 +0200 Subject: [PATCH 0093/1101] adjust ambiance sound module description and docs --- addons/missionmodules/CfgVehicles.hpp | 14 +++++++------- documentation/missionmaker/modules.md | 25 ++++++++++++++++--------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index 6a1dc71705..35a937c660 100644 --- a/addons/missionmodules/CfgVehicles.hpp +++ b/addons/missionmodules/CfgVehicles.hpp @@ -19,31 +19,31 @@ class CfgVehicles { class Arguments { class soundFiles { displayName = "Sounds"; - description = "Classnames of the ambiance sounds played. Seperated by ','. "; + description = "Class names of the ambiance sounds to be played. Seperated by ','"; typeName = "STRING"; defaultValue = ""; }; class minimalDistance { displayName = "Minimal Distance"; - description = "Minimal Distance"; + description = "Used for calculating a random position and sets the minimal distance between the players and the played sound file(s)"; typeName = "NUMBER"; defaultValue = 400; }; class maximalDistance { - displayName = "Maximal Distance"; - description = "Maximal Distance"; + displayName = "Maximum Distance"; + description = "Used for calculating a random position and sets the maximum distance between the players and the played sound file(s)"; typeName = "NUMBER"; defaultValue = 900; }; class minimalDelay { displayName = "Minimal Delay"; - description = "Minimal Delay between sounds played"; + description = "Minimal delay between sounds played"; typeName = "NUMBER"; defaultValue = 10; }; class maximalDelay { - displayName = "Maximal Delay"; - description = "Maximal Delay between sounds played"; + displayName = "Maximum Delay"; + description = "Maximum delay between sounds played"; typeName = "NUMBER"; defaultValue = 170; }; diff --git a/documentation/missionmaker/modules.md b/documentation/missionmaker/modules.md index 9cb17e001f..a6d75531dc 100644 --- a/documentation/missionmaker/modules.md +++ b/documentation/missionmaker/modules.md @@ -501,25 +501,32 @@ Whether or not the objects in the list will be a medical vehicle.
### 3.1 Ambiance Sounds -Used for ambiance sounds loop (synced across MP) +Used for ambiance sounds loop (synced across MP). + +This module randomizes the time when the sound file is played and the position where the sound file is played (If "Follow Players" is set to No). +`Minimal Distance` and `Maximal Distance` influence the position from where the sound file is played. Setting both values to 0 forces the module to play the sound from where it was placed in the editor. +`Minimal Delay` and `Maximal Delay` work in a similar fashion but are used to randomize when the sound file is played. Setting both values to 0 plays the sound from mission start. **Settings:** 1. **Sounds (String)**
-Class names of the ambiance sounds played. Separated by ','.
+Class names of the ambiance sounds played. Separated by ','. (Example: `radio_track_01, electricity_loop`).
`Default value: ""` 2. **Minimal Distance (Number)**
-Minimal Distance (in meters)
+Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) (in meters)
`Default value: 400` -3. **Minimal Delay (Number)**
-Minimal Delay (in seconds) between sounds played
+3. **Maximum Distance (Number)**
+Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) (in meters)
+`Default value: 900` +4. **Minimal Delay (Number)**
+Minimal delay (in seconds) between sounds played
`Default value: 10` -4. **Maximal Delay (Number)**
-Maximal Delay (in seconds) between sounds played
+5. **Maximum Delay (Number)**
+Maximum delay (in seconds) between sounds played
`Default value: 10` -5. **Follow Players (Boolean)**
+6. **Follow Players (Boolean)**
Follow players. If set to false, loop will play sounds only nearby logic position.
`Default value: No` -6. **Volume (Number)**
+7. **Volume (Number)**
The volume of the sounds played
`Default value: 1` From ae1628ef03f80ca9c3eeaee19ca5684f591a7f78 Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 10:41:55 +0200 Subject: [PATCH 0094/1101] Renamed init file for neatness --- .../functions/{fnc_initViewDistance.sqf => fnc_init.sqf} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename addons/viewdistance/functions/{fnc_initViewDistance.sqf => fnc_init.sqf} (100%) diff --git a/addons/viewdistance/functions/fnc_initViewDistance.sqf b/addons/viewdistance/functions/fnc_init.sqf similarity index 100% rename from addons/viewdistance/functions/fnc_initViewDistance.sqf rename to addons/viewdistance/functions/fnc_init.sqf From 9e40e16c4a0ff6436b2c48235bf2510085061c0e Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 10:43:20 +0200 Subject: [PATCH 0095/1101] Adjusted XEH_preinit accordingly --- addons/viewdistance/XEH_preInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index 9f66b79e2e..ca4a7ac90b 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -6,6 +6,6 @@ PREP(module); PREP(returnViewDistanceValue); PREP(returnViewDistanceLimit); PREP(changeViewDistance); -PREP(initViewDistance); +PREP(init); ADDON = true; \ No newline at end of file From 7201a23d41f23dc35e4e9f936969d73d5c75e659 Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 10:44:01 +0200 Subject: [PATCH 0096/1101] Adjusted post init, removed redundant settings --- addons/viewdistance/ACE_Settings.hpp | 15 +-------------- addons/viewdistance/XEH_postInit.sqf | 6 +----- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index d7a9dbb9fc..d3208b1d88 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -1,18 +1,5 @@ class ACE_Settings { - class GVAR(changeAllowed) { - typeName = "BOOL"; - value = 1; - displayName = "Allow View Distance Changing"; - description = "Allows clients to be able to change their view distance"; - }; - class GVAR(viewDistanceLimit) { - typeName = "SCALAR"; - value = 11; // setting the highest number in the array below means no limit. - values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; // correspond to the INDEX values - displayName = "Change View Distance Limit"; - description = "Sets the top limit for all clients"; - }; - class GVAR(newViewDistance) { + class GVAR(viewDistance) { typeName = "SCALAR"; isClientSettable = 1; value = 0; // not sure what to set this to. diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index f5a5079273..f5c15322bf 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -1,7 +1,3 @@ #include "script_component.hpp" -if (!GVAR(changeAllowed)) exitWith { - // if viewdistance module is disabled from config, exit here. - diag_log format["[ACE]: View Distance is disabled from the config.cpp in the pbo"]; -}; -[] call FUNC(initViewDistance); \ No newline at end of file +[] call FUNC(init); \ No newline at end of file From bba216ebd2d5382524d4cfd06f352259b4c7cded Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 10:53:09 +0200 Subject: [PATCH 0097/1101] Rewrote switch statement Per @Glowbal's comment --- .../functions/fnc_returnViewDistanceValue.sqf | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf index 5f06256b09..86b940d582 100644 --- a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf +++ b/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf @@ -20,24 +20,22 @@ PARAMS_1(_index); private ["_return"]; -_return = 0; -// change to if () exitWith {};? -switch (_index) do +_return = switch (_index) do { - case 0: {_return = 1500;}; - case 1: {_return = 2000;}; - case 2: {_return = 2500;}; - case 3: {_return = 3000;}; - case 4: {_return = 3500;}; - case 5: {_return = 4000;}; - case 6: {_return = 5000;}; - case 7: {_return = 6000;}; - case 8: {_return = 7000;}; - case 9: {_return = 8000;}; - case 10: {_return = 9000;}; - case 11: {_return = 10000;}; - default {hint "something broke!";}; // should replace with something a bit more graceful + case 0: {1500}; + case 1: {2000}; + case 2: {2500}; + case 3: {3000}; + case 4: {3500}; + case 5: {4000}; + case 6: {5000}; + case 7: {6000}; + case 8: {7000}; + case 9: {8000}; + case 10: {9000}; + case 11: {10000}; + default {1000}; }; _return; \ No newline at end of file From 2dfaaa047a0151cf7b456de74ffd7531bf215e13 Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 11:56:27 +0200 Subject: [PATCH 0098/1101] Reworked limiting system Module limit still not being set properly. --- addons/viewdistance/ACE_Settings.hpp | 10 ++++-- addons/viewdistance/CfgVehicles.hpp | 2 +- addons/viewdistance/XEH_preInit.sqf | 5 ++- .../functions/fnc_changeViewDistance.sqf | 16 ++++----- addons/viewdistance/functions/fnc_init.sqf | 2 +- addons/viewdistance/functions/fnc_module.sqf | 7 ++-- .../functions/fnc_returnViewDistanceLimit.sqf | 34 ------------------- 7 files changed, 22 insertions(+), 54 deletions(-) delete mode 100644 addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index d3208b1d88..4a400a0b31 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -2,11 +2,17 @@ class ACE_Settings { class GVAR(viewDistance) { typeName = "SCALAR"; isClientSettable = 1; - value = 0; // not sure what to set this to. - values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnViewDistanceValue.sqf + value = 11; // index, NOT value // not sure what to set this to. + 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 = "Change View Distance"; description = "Changes in game view distance"; }; + class GVAR(limit) { + typeName = "SCALAR"; + value = 10000; // Value, NOT index. + displayName = "View Distance Limit"; + description = "Limit for client's view distance set here and can overridden by module"; + }; }; // 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 38ef214c09..d2b014615c 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -13,7 +13,7 @@ class CfgVehicles { displayName = "View Distance setting limit"; description = "Sets the limit for how high clients can raise their view distance (< 10000)"; typeName = "SCALAR"; - defaultValue = 10000; + defaultValue = 5000; }; }; }; diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index ca4a7ac90b..a46efc7769 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -3,9 +3,8 @@ ADDON = false; PREP(module); -PREP(returnViewDistanceValue); -PREP(returnViewDistanceLimit); -PREP(changeViewDistance); PREP(init); +PREP(returnValue); +PREP(changeViewDistance); ADDON = true; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 8c017ec1eb..b118b29a48 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -20,17 +20,17 @@ private ["_text","_new_view_distance","_view_distance_limit"]; // Change the received index number into an actual view distance number as set in the config: -_new_view_distance = [GVAR(newViewDistance)] call FUNC(returnViewDistanceValue); +_new_view_distance = [GVAR(viewDistance)] call FUNC(returnValue); -// Grab the limit, either from the module OR if the module is not valid, the config. -_view_distance_limit = [] call FUNC(returnViewDistanceLimit); +_view_distance_limit = GVAR(limit); // Grab the limit -if (_new_view_distance > _view_distance_limit) then { - _text = composeText ["That option is not allowed! The limit is: ",str(_view_distance_limit)]; - [_text,1] call EFUNC(common,displayTextStructured); -} -else { +if (_new_view_distance <= _view_distance_limit) then { _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; [_text,1] call EFUNC(common,displayTextStructured); setViewDistance _new_view_distance; + setObjectViewDistance (0.8 * _new_view_distance); // maybe make this 0.8 a constant? +} +else { + _text = composeText ["That option is not allowed! The limit is: ",str(_view_distance_limit)]; + [_text,1] call EFUNC(common,displayTextStructured); }; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_init.sqf b/addons/viewdistance/functions/fnc_init.sqf index 75ca076ff6..e9509f3ddd 100644 --- a/addons/viewdistance/functions/fnc_init.sqf +++ b/addons/viewdistance/functions/fnc_init.sqf @@ -21,7 +21,7 @@ if (!hasInterface) exitWith {}; // Set the EH which waits for the View Distance setting to be changed ["SettingChanged",{ - if (_this select 0 == QGVAR(newViewDistance)) then { + if (_this select 0 == QGVAR(viewDistance)) then { [] call FUNC(changeViewDistance); }; },true] call ace_common_fnc_addEventHandler; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_module.sqf b/addons/viewdistance/functions/fnc_module.sqf index 66c2aed793..0e44cd5081 100644 --- a/addons/viewdistance/functions/fnc_module.sqf +++ b/addons/viewdistance/functions/fnc_module.sqf @@ -25,9 +25,6 @@ if (!_activated) exitWith { diag_log text "[ACE]: View Distance Limit Module is placed but NOT active."; }; -GVAR(modulePresent) = true; +diag_log text "[ACE]: View Distance Limit Module Initialized."; -[_logic, QGVAR(moduleViewDistanceLimit),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); - -hint format["[ACE]: View Distance Limit Module Initialized with limit: %1",GVAR(moduleViewDistanceLimit)]; // only used for debug, GVAR(moduleViewDistanceLimit) keeps returning as ANY. Remember to remove before finalising the module. -diag_log format["[ACE]: View Distance Limit Module Initialized with limit: %1",GVAR(moduleViewDistanceLimit)]; \ No newline at end of file +[_logic, QGVAR(limit),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf b/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf deleted file mode 100644 index 8ae9e6538d..0000000000 --- a/addons/viewdistance/functions/fnc_returnViewDistanceLimit.sqf +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Author: Winter - * Returns the view distance limit depending on either the config or (if present) the module. - * - * - * Arguments: - * None - * - * Return Value: - * View Distance Limit - * - * Example: - * [] call ace_viewdistance_fnc_returnViewDistanceLimit; - * - * Public: Yes - */ - -#include "script_component.hpp" - -private ["_limit"]; - -_limit = 20000; // unrealistic amount since A3 max is 10000, helps in debug - -if (!isNil QGVAR(moduleViewDistanceLimit)) then { - _limit = GVAR(moduleViewDistanceLimit); // module value always takes priority over config -} else { - // If the module is not present, take the value from the config instead - _limit = [GVAR(viewDistanceLimit)] call FUNC(returnViewDistanceValue); // this function converts the array index in the config to it's relevant scalar value. -}; - -hint format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; // only used for debug, trying to get the module to work. Remember to remove before finalising pbo -diag_log format ["[VD] Limit returned from module: %2 Local Limit: %3",GVAR(modulePresent),GVAR(moduleViewDistanceLimit),_limit]; // only used for debug, trying to get the module to work. Remember to remove before finalising pbo - -_limit; \ No newline at end of file From f64f76e92f52463bbbb3ccb4cfa96ca872ffc2dd Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 12:07:05 +0200 Subject: [PATCH 0099/1101] Fixed wrong file name --- .../{fnc_returnViewDistanceValue.sqf => fnc_returnValue.sqf} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename addons/viewdistance/functions/{fnc_returnViewDistanceValue.sqf => fnc_returnValue.sqf} (100%) diff --git a/addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf b/addons/viewdistance/functions/fnc_returnValue.sqf similarity index 100% rename from addons/viewdistance/functions/fnc_returnViewDistanceValue.sqf rename to addons/viewdistance/functions/fnc_returnValue.sqf From a9d6fbd841a0141d344a9baf9c70c602bc50fc2f Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 12:36:11 +0200 Subject: [PATCH 0100/1101] Attempting to fix module value not being read --- addons/viewdistance/ACE_Settings.hpp | 2 +- addons/viewdistance/CfgVehicles.hpp | 4 ++-- addons/viewdistance/functions/fnc_changeViewDistance.sqf | 2 ++ addons/viewdistance/functions/fnc_module.sqf | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index 4a400a0b31..de1b0226c6 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -9,7 +9,7 @@ class ACE_Settings { }; class GVAR(limit) { typeName = "SCALAR"; - value = 10000; // Value, NOT index. + 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"; }; diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index d2b014615c..832b2c55a2 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -10,10 +10,10 @@ class CfgVehicles { //icon = ""; // needs an icon class Arguments { class moduleViewDistanceLimit { - displayName = "View Distance setting limit"; + displayName = "View Distance Limit"; description = "Sets the limit for how high clients can raise their view distance (< 10000)"; typeName = "SCALAR"; - defaultValue = 5000; + defaultValue = 6000; }; }; }; diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index b118b29a48..0a2467bace 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -24,6 +24,8 @@ _new_view_distance = [GVAR(viewDistance)] call FUNC(returnValue); _view_distance_limit = GVAR(limit); // Grab the limit +diag_log format ["[ACE]: DEBUG View Distance change requested: %1 Limit is: %2 Under Limit: %3",_new_view_distance,_view_distance_limit,_new_view_distance<_view_distance_limit]; // ONLY FOR DEBUG, REMOVE LATER ON + if (_new_view_distance <= _view_distance_limit) then { _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; [_text,1] call EFUNC(common,displayTextStructured); diff --git a/addons/viewdistance/functions/fnc_module.sqf b/addons/viewdistance/functions/fnc_module.sqf index 0e44cd5081..2ca2a6bd36 100644 --- a/addons/viewdistance/functions/fnc_module.sqf +++ b/addons/viewdistance/functions/fnc_module.sqf @@ -25,6 +25,6 @@ if (!_activated) exitWith { diag_log text "[ACE]: View Distance Limit Module is placed but NOT active."; }; -diag_log text "[ACE]: View Distance Limit Module Initialized."; +[_logic, QGVAR(limit),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(limit),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); \ No newline at end of file +diag_log format ["[ACE]: View Distance Limit Module Initialized. Limit set by module: %1",GVAR(limit)]; \ No newline at end of file From f4d7c6818bf483f79916ea3c865840ba9253d7af Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 13:05:36 +0200 Subject: [PATCH 0101/1101] Attempted fix #2 --- addons/viewdistance/CfgVehicles.hpp | 6 +++--- addons/viewdistance/XEH_preInit.sqf | 2 +- .../functions/{fnc_module.sqf => fnc_initModule.sqf} | 0 3 files changed, 4 insertions(+), 4 deletions(-) rename addons/viewdistance/functions/{fnc_module.sqf => fnc_initModule.sqf} (100%) diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 832b2c55a2..a9a35dcfe4 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -1,10 +1,10 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleViewDistance : Module_F { + class ACE_Module; + class GVAR(ModuleSettings) : ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; + function = QUOTE(DFUNC(initModule)); displayName = "View Distance Limiter"; - function = QFUNC(module); scope = 2; isGlobal = 1; //icon = ""; // needs an icon diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index a46efc7769..883e393c8a 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -2,7 +2,7 @@ ADDON = false; -PREP(module); +PREP(initModule); PREP(init); PREP(returnValue); PREP(changeViewDistance); diff --git a/addons/viewdistance/functions/fnc_module.sqf b/addons/viewdistance/functions/fnc_initModule.sqf similarity index 100% rename from addons/viewdistance/functions/fnc_module.sqf rename to addons/viewdistance/functions/fnc_initModule.sqf From 57131496f2b25f0ad98be39ee0a26c3325c596ea Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 9 May 2015 13:25:19 +0200 Subject: [PATCH 0102/1101] check for outdated pbo files --- addons/common/XEH_postInit.sqf | 12 +---- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_checkFiles.sqf | 59 ++++++++++++++++++++++ 3 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 addons/common/functions/fnc_checkFiles.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 53de6b5d69..1c9155b3a2 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -84,6 +84,7 @@ if(!isServer) then { ["SEH_s", FUNC(_handleRequestSyncedEvent)] call FUNC(addEventHandler); [FUNC(syncedEventPFH), 0.5, []] call cba_fnc_addPerFrameHandler; +call FUNC(checkFiles); /***************************************************************/ /***************************************************************/ @@ -250,14 +251,3 @@ if(isMultiplayer && { time > 0 || isNull player } ) then { }; }, 0, []] call cba_fnc_addPerFrameHandler; }; - -// check dlls -{ - if (_x callExtension "version" == "") then { - private "_errorMsg"; - _errorMsg = format ["Extension %1.dll not installed.", _x]; - - diag_log text format ["[ACE] ERROR: %1", _errorMsg]; - ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); - }; -} forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 54a5118cb0..5c2ad1e592 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -21,6 +21,7 @@ PREP(canInteract); PREP(canInteractWith); PREP(canUseWeapon); PREP(changeProjectileDirection); +PREP(checkFiles); PREP(checkPBOs); PREP(claim); PREP(closeDialogIfTargetMoves); diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf new file mode 100644 index 0000000000..868882151d --- /dev/null +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -0,0 +1,59 @@ +/* + * Author: commy2 + * + * Compares version numbers of PBOs and DLLs. + * + * Argument: + * 0: Mode (Number) + * + * Return value: + * None. + */ +#include "script_component.hpp" + +/////////////// +// check addons +/////////////// +private "_version"; +_version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); + +diag_log text format ["[ACE]: ACE is version %1", _version]; /////////////////////////////////////////////////////////////////////////// + +private ["_addons", "_index"]; + +_addons = activatedAddons; + +// speed up search. all ace pbos are loaded after ace_main. +_index = _addons find "ace_main"; +reverse _addons; +_addons resize (count _addons - _index); +_addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); + +{ + if (getText (configFile >> "CfgPatches" >> _x >> "versionStr") != _version) then { + private "_errorMsg"; + _errorMsg = format ["File %1.pbo is outdated.", _x]; + + diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + + if (hasInterface) then { + ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + }; + }; +} forEach _addons; + +/////////////// +// check dlls +/////////////// +{ + if (_x callExtension "version" == "") then { + private "_errorMsg"; + _errorMsg = format ["Extension %1.dll not installed.", _x]; + + diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + + if (hasInterface) then { + ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + }; + }; +} forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); From 8c937a707d194347faf50b74e6abcce2aa6b187f Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 9 May 2015 13:49:26 +0200 Subject: [PATCH 0103/1101] starting to fix switchunits --- addons/switchunits/functions/fnc_initPlayer.sqf | 2 -- addons/switchunits/functions/fnc_startSwitchUnits.sqf | 7 ++----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/addons/switchunits/functions/fnc_initPlayer.sqf b/addons/switchunits/functions/fnc_initPlayer.sqf index c2857f1091..67669c071c 100644 --- a/addons/switchunits/functions/fnc_initPlayer.sqf +++ b/addons/switchunits/functions/fnc_initPlayer.sqf @@ -17,8 +17,6 @@ #include "script_component.hpp" -private ["_playerUnit", "_sides"]; - PARAMS_2(_playerUnit,_sides); if (vehicle _playerUnit == _playerUnit) then { diff --git a/addons/switchunits/functions/fnc_startSwitchUnits.sqf b/addons/switchunits/functions/fnc_startSwitchUnits.sqf index ef344475b9..7985bfa094 100644 --- a/addons/switchunits/functions/fnc_startSwitchUnits.sqf +++ b/addons/switchunits/functions/fnc_startSwitchUnits.sqf @@ -16,13 +16,10 @@ #include "script_component.hpp" - -private "_player"; -_player = _this select 0; - +PARAMS_1(_player); if (GVAR(EnableSwitchUnits)) then { - private ["_sides"]; + private "_sides"; _sides = []; if(GVAR(SwitchToWest)) then {_sides pushBack west;}; From f1798aa739a66e82acdf8029f51c5b24ba03a332 Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 9 May 2015 14:05:58 +0200 Subject: [PATCH 0104/1101] fix switchunits --- .../functions/fnc_handleMapClick.sqf | 9 ++------- .../switchunits/functions/fnc_switchUnit.sqf | 18 +++++++++--------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/addons/switchunits/functions/fnc_handleMapClick.sqf b/addons/switchunits/functions/fnc_handleMapClick.sqf index bfe36f13ea..e8efa2640f 100644 --- a/addons/switchunits/functions/fnc_handleMapClick.sqf +++ b/addons/switchunits/functions/fnc_handleMapClick.sqf @@ -28,14 +28,9 @@ _sideNearest = []; if ([_x] call FUNC(isValidAi) && (side group _x in _sides)) then { _sideNearest pushBack _x; }; -} forEach (nearestObjects [_pos, ["Man"], 20]); - +} forEach (nearestObjects [_pos, ["Man"], 15]); if (count _sideNearest > 0) then { - private ["_switchUnit"]; - - _switchUnit = _sideNearest select 0; - [ACE_player, _switchUnit] call FUNC(switchUnit); - + [_sideNearest select 0] call FUNC(switchUnit); openMap false; }; diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf index b1879b0999..c263bdd721 100644 --- a/addons/switchunits/functions/fnc_switchUnit.sqf +++ b/addons/switchunits/functions/fnc_switchUnit.sqf @@ -32,11 +32,11 @@ if (GVAR(EnableSafeZone)) then { _allNearestPlayers = [position _unit, GVAR(SafeZoneRadius)] call FUNC(nearestPlayers); _nearestEnemyPlayers = [_allNearestPlayers, {((side GVAR(OriginalGroup)) getFriend (side _this) < 0.6) && !(_this getVariable [QGVAR(IsPlayerControlled), false])}] call EFUNC(common,filter); - + if (count _nearestEnemyPlayers > 0) exitWith { _leave = true; }; - + }; // exitWith doesn't exit past the "if(EnableSafeZone)" block @@ -56,14 +56,14 @@ DFUNC(pfhSwitchUnit) = { private ["_args", "_unit", "_oldUnit", "_respawnEhId", "_oldOwner"]; _args = _this select 0; - + _unit = _args select 0; _oldUnit = _args select 1; - - - + + + if (local _unit) exitWith { - + _oldUnit setVariable [QGVAR(IsPlayerControlled), false, true]; _oldUnit setVariable [QGVAR(PlayerControlledName), "", true]; @@ -89,9 +89,9 @@ DFUNC(pfhSwitchUnit) = { }; [localize "STR_ACE_SwitchUnits_SwitchedUnit"] call EFUNC(common,displayTextStructured); - + [(_this select 1)] call cba_fnc_removePerFrameHandler; - + }; }; From 7d28fbcdbd2c4937e8fe7c8b646d44b2a24401fc Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 9 May 2015 14:12:54 +0200 Subject: [PATCH 0105/1101] force travis to only build for master --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 65990248bf..388b1f114f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,6 @@ +branches: + only: + - master language: python python: - "3.4" From 4f6d0599e0316e345a70a5427bab0edeb421fa57 Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 9 May 2015 14:30:10 +0200 Subject: [PATCH 0106/1101] travis build test --- .../development/setting-up-the-development-environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/development/setting-up-the-development-environment.md b/documentation/development/setting-up-the-development-environment.md index 8a572c1ec6..2a88e185bf 100644 --- a/documentation/development/setting-up-the-development-environment.md +++ b/documentation/development/setting-up-the-development-environment.md @@ -11,7 +11,7 @@ This page describes how you can setup your development environment for ACE3, all ## 1. Requirements -- Arma 3 (duh) +- Arma 3 - A proper installation of the Arma 3 Tools (available on Steam) - A properly setup P-drive - Run ArmA 3 and Arma 3 Tools directly from steam once to install registry entries (and again after every update) From cad86280c1600351aba3205248979e2d6fe3935e Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 14:51:23 +0200 Subject: [PATCH 0107/1101] Fixed module value not overriding. --- addons/viewdistance/CfgVehicles.hpp | 4 ++-- addons/viewdistance/functions/fnc_changeViewDistance.sqf | 5 +---- addons/viewdistance/functions/fnc_init.sqf | 2 +- addons/viewdistance/functions/fnc_initModule.sqf | 2 -- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index a9a35dcfe4..2a2f85e611 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -12,8 +12,8 @@ class CfgVehicles { class moduleViewDistanceLimit { displayName = "View Distance Limit"; description = "Sets the limit for how high clients can raise their view distance (< 10000)"; - typeName = "SCALAR"; - defaultValue = 6000; + typeName = "NUMBER"; + defaultValue = 10000; }; }; }; diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 0a2467bace..7a92b70748 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -19,13 +19,10 @@ private ["_text","_new_view_distance","_view_distance_limit"]; -// Change the received index number into an actual view distance number as set in the config: +// Change the received index number into an actual view distance: _new_view_distance = [GVAR(viewDistance)] call FUNC(returnValue); - _view_distance_limit = GVAR(limit); // Grab the limit -diag_log format ["[ACE]: DEBUG View Distance change requested: %1 Limit is: %2 Under Limit: %3",_new_view_distance,_view_distance_limit,_new_view_distance<_view_distance_limit]; // ONLY FOR DEBUG, REMOVE LATER ON - if (_new_view_distance <= _view_distance_limit) then { _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; [_text,1] call EFUNC(common,displayTextStructured); diff --git a/addons/viewdistance/functions/fnc_init.sqf b/addons/viewdistance/functions/fnc_init.sqf index e9509f3ddd..0d5ec7cf79 100644 --- a/addons/viewdistance/functions/fnc_init.sqf +++ b/addons/viewdistance/functions/fnc_init.sqf @@ -1,6 +1,6 @@ /* * Author: Winter - * Assigns the Event Handler which fires when a player adjusts their view distance in the menu + * Assigns the Event Handler which triggers when a player adjusts their view distance in the menu * * * Arguments: diff --git a/addons/viewdistance/functions/fnc_initModule.sqf b/addons/viewdistance/functions/fnc_initModule.sqf index 2ca2a6bd36..6dd7105439 100644 --- a/addons/viewdistance/functions/fnc_initModule.sqf +++ b/addons/viewdistance/functions/fnc_initModule.sqf @@ -10,8 +10,6 @@ * * Return Value: * None - * - * Example: * */ From f848ff740fa9abf5080ff1f123644753489927d3 Mon Sep 17 00:00:00 2001 From: bux578 Date: Sat, 9 May 2015 15:05:55 +0200 Subject: [PATCH 0108/1101] Revert "travis build test" This reverts commit 4f6d0599e0316e345a70a5427bab0edeb421fa57. --- .../development/setting-up-the-development-environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/development/setting-up-the-development-environment.md b/documentation/development/setting-up-the-development-environment.md index 2a88e185bf..8a572c1ec6 100644 --- a/documentation/development/setting-up-the-development-environment.md +++ b/documentation/development/setting-up-the-development-environment.md @@ -11,7 +11,7 @@ This page describes how you can setup your development environment for ACE3, all ## 1. Requirements -- Arma 3 +- Arma 3 (duh) - A proper installation of the Arma 3 Tools (available on Steam) - A properly setup P-drive - Run ArmA 3 and Arma 3 Tools directly from steam once to install registry entries (and again after every update) From 52a904478be97ceda7377003aedfc6c95a1870a0 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 9 May 2015 15:32:34 +0200 Subject: [PATCH 0109/1101] laser selfdesignate has wrong version number macro setup --- addons/laser_selfdesignate/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/laser_selfdesignate/config.cpp b/addons/laser_selfdesignate/config.cpp index 19ec28063b..597500caf6 100644 --- a/addons/laser_selfdesignate/config.cpp +++ b/addons/laser_selfdesignate/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_laser"}; - version = VERSION; + VERSION_CONFIG; }; }; From f0cca5b33ea1b341bedd5f06c1d59f0526c2f88c Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 9 May 2015 16:01:53 +0200 Subject: [PATCH 0110/1101] ignore ace in checkPBO module, also fix #1020 --- addons/common/XEH_postInit.sqf | 2 - addons/common/functions/fnc_checkFiles.sqf | 2 +- .../common/functions/fnc_moduleCheckPBOs.sqf | 108 ++++---- .../scripts/Version/checkVersionNumber.sqf | 261 ++++++++---------- 4 files changed, 169 insertions(+), 204 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 1c9155b3a2..696aa16f9b 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -64,8 +64,6 @@ if (_currentVersion != _previousVersion) then { profileNamespace setVariable ["ACE_VersionNumberString", _currentVersion]; }; -0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber); - // ACE events "ACEg" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); }; "ACEc" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); }; diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 868882151d..35cb552a8a 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -17,7 +17,7 @@ private "_version"; _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); -diag_log text format ["[ACE]: ACE is version %1", _version]; /////////////////////////////////////////////////////////////////////////// +diag_log text format ["[ACE]: ACE is version %1", _version]; private ["_addons", "_index"]; diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index 4b5ea2374a..5f06f6d60e 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -22,7 +22,7 @@ _checkAll = _logic getVariable ["CheckAll", false]; _whitelist = call compile (_logic getVariable ["Whitelist", "[]"]); if (isNil "_whitelist") then { - _whitelist = []; + _whitelist = []; }; _whitelist = [_whitelist, {toLower _this}] call FUNC(map); @@ -31,67 +31,71 @@ ACE_Version_CheckAll = _checkAll; ACE_Version_Whitelist = _whitelist; if (!isServer) then { - [_mode, _checkAll, _whitelist] spawn { - _mode = _this select 0; - _checkAll = _this select 1; - _whitelist = _this select 2; + [_mode, _checkAll, _whitelist] spawn { + _mode = _this select 0; + _checkAll = _this select 1; + _whitelist = _this select 2; - waitUntil { - sleep 1; - !isNil "ACE_Version_ClientErrors" - }; + 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; + _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]; + // 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; "; - }; + 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; + //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + diag_log text _error; - _text = composeText [lineBreak, parseText format ["%1", _text]]; + _text = composeText [lineBreak, parseText format ["%1", _text]]; - _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; - _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; + _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; + _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; - disableSerialization; - _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; - _ctrlHint ctrlSetStructuredText _text; + disableSerialization; + _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; + _ctrlHint ctrlSetStructuredText _text; - if (_mode == 0) then { - sleep 10; - _rscLayer cutFadeOut 0.2; - }; + if (_mode == 0) then { + sleep 10; + _rscLayer cutFadeOut 0.2; + }; - if (_mode == 2) then { - sleep 10; - waitUntil {alive player}; - [player] call FUNC(adminKick); - }; - }; - }; + 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); +}; diff --git a/addons/common/scripts/Version/checkVersionNumber.sqf b/addons/common/scripts/Version/checkVersionNumber.sqf index e6509cd9c4..1bc002153c 100644 --- a/addons/common/scripts/Version/checkVersionNumber.sqf +++ b/addons/common/scripts/Version/checkVersionNumber.sqf @@ -1,193 +1,156 @@ // by commy2 #include "script_component.hpp" -sleep 1; //wait for module - _files = []; -if (missionNamespace getVariable ["ACE_Version_CheckAll", false]) then { - { - if (toLower _x find "a3_" != 0 && {!(toLower _x in (missionNamespace getVariable ["ACE_Version_Whitelist", []]))}) then { - _files pushBack _x; +{ + if (_x find "a3_" != 0 && {_x find "ace_" != 0} && {!(toLower _x in (missionNamespace getVariable ["ACE_Version_Whitelist", []]))}) then { + _files pushBack _x; }; - } forEach activatedAddons; -} else { - { - if (toLower _x find "ace_" == 0) then { - _files pushBack _x; - }; - } forEach activatedAddons; -}; - -_versionMain = parseNumber getText (configFile >> "CfgPatches" >> QUOTE(ADDON) >> "version"); +} forEach activatedAddons; _versions = []; { - _version = parseNumber getText (configFile >> "CfgPatches" >> _x >> "version"); - _versions set [_forEachIndex, _version]; + _version = parseNumber getText (configFile >> "CfgPatches" >> _x >> "version"); + _versions set [_forEachIndex, _version]; } forEach _files; -_versionFull = getText (configFile >> "CfgPatches" >> QUOTE(ADDON) >> "versionStr"); -diag_log text format ["[ACE] Full Version Number: %1", _versionFull]; - if (isServer) then { - diag_log text format ["[ACE] Server: ACE_Common is Version %1.", _versionMain]; - - { - if (toLower _x find "ace_" == 0) then {// - _version = _versions select _forEachIndex; - if (_version != _versionMain) then { - diag_log text format ["[ACE] Server: %1 is Version %2.", _x, _version]; - }; - }; - } forEach _files; - - ACE_Version_ServerVersions = [_files, _versions]; - publicVariable "ACE_Version_ServerVersions"; + ACE_Version_ServerVersions = [_files, _versions]; + publicVariable "ACE_Version_ServerVersions"; } else { - diag_log text format ["[ACE] Client: ACE_Common is Version %1.", _versionMain]; - - { - if (toLower _x find "ace_" == 0) then {// - _version = _versions select _forEachIndex; - if (_version != _versionMain) then { - diag_log text format ["[ACE] Client: %1 is Version %2.", _x, _version]; - }; - }; - } forEach _files; - - ACE_Version_ClientVersions = [_files, _versions]; + ACE_Version_ClientVersions = [_files, _versions]; }; // Begin client version check if (!isServer) then { - // Wait for server to send the servers files and version numbers - waitUntil { - sleep 1; - !isNil "ACE_Version_ClientVersions" && {!isNil "ACE_Version_ServerVersions"} - }; - - _client = profileName; - - _files = ACE_Version_ClientVersions select 0; - _versions = ACE_Version_ClientVersions select 1; - - _serverFiles = ACE_Version_ServerVersions select 0; - _serverVersions = ACE_Version_ServerVersions select 1; - - // Compare client and server files and versions - _missingAddons = []; - _oldVersionsClient = []; - _oldVersionsServer = []; - { - _serverVersion = _serverVersions select _forEachIndex; - - _index = _files find _x; - if (_index == -1) then { - if (_x != "ace_serverconfig") then {_missingAddons pushBack _x;}; - } else { - - _clientVersion = _versions select _index; - - if (_clientVersion < _serverVersion) then { - _oldVersionsClient pushBack [_x, _clientVersion, _serverVersion]; - }; - - if (_clientVersion > _serverVersion) then { - _oldVersionsServer pushBack [_x, _clientVersion, _serverVersion]; - }; + // Wait for server to send the servers files and version numbers + waitUntil { + sleep 1; + !isNil "ACE_Version_ClientVersions" && {!isNil "ACE_Version_ServerVersions"} }; - } forEach _serverFiles; - // find client files which the server doesn't have - _missingAddonsServer = []; - { - _index = _serverFiles find _x; - if (_index == -1) then { - _missingAddonsServer pushBack _x; - } - } forEach _files; + _client = profileName; - // display and log error messages - _fnc_cutComma = { - _string = _this; - _string = toArray _string; + _files = ACE_Version_ClientVersions select 0; + _versions = ACE_Version_ClientVersions select 1; - _count = count _string; - _string set [_count - 2, toArray "." select 0]; - _string set [_count - 1, -1]; - _string = _string - [-1]; + _serverFiles = ACE_Version_ServerVersions select 0; + _serverVersions = ACE_Version_ServerVersions select 1; - toString _string; - }; - - _missingAddon = false; - if (count _missingAddons > 0) then { - _missingAddon = true; - - _error = format ["[ACE] %1: ERROR missing addon(s): ", _client]; + // Compare client and server files and versions + _missingAddons = []; + _oldVersionsClient = []; + _oldVersionsServer = []; { - _error = _error + format ["%1, ", _x]; + _serverVersion = _serverVersions select _forEachIndex; - if (_forEachIndex > 9) exitWith {};// - } forEach _missingAddons; + _index = _files find _x; + if (_index == -1) then { + if (_x != "ace_serverconfig") then {_missingAddons pushBack _x;}; + } else { - _error = _error call _fnc_cutComma; + _clientVersion = _versions select _index; - diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); - }; + if (_clientVersion < _serverVersion) then { + _oldVersionsClient pushBack [_x, _clientVersion, _serverVersion]; + }; - _missingAddonServer = false; - if (count _missingAddonsServer > 0) then { - _missingAddonServer = true; + if (_clientVersion > _serverVersion) then { + _oldVersionsServer pushBack [_x, _clientVersion, _serverVersion]; + }; + }; + } forEach _serverFiles; - _error = format ["[ACE] %1: ERROR missing server addon(s): ", _client]; + // find client files which the server doesn't have + _missingAddonsServer = []; { - _error = _error + format ["%1, ", _x]; + _index = _serverFiles find _x; + if (_index == -1) then { + _missingAddonsServer pushBack _x; + } + } forEach _files; - if (_forEachIndex > 9) exitWith {};// - } forEach _missingAddonsServer; + // display and log error messages + _fnc_cutComma = { + _string = _this; + _string = toArray _string; - _error = _error call _fnc_cutComma; + _count = count _string; + _string set [_count - 2, toArray "." select 0]; + _string set [_count - 1, -1]; + _string = _string - [-1]; - diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); - }; + toString _string; + }; - _oldVersionClient = false; - if (count _oldVersionsClient > 0) then { - _oldVersionClient = true; + _missingAddon = false; + if (count _missingAddons > 0) then { + _missingAddon = true; - _error = format ["[ACE] %1: ERROR outdated addon(s): ", _client]; - { - _error = _error + format ["%1 (client: %2, server: %3), ", _x select 0, _x select 1, _x select 2]; + _error = format ["[ACE] %1: ERROR missing addon(s): ", _client]; + { + _error = _error + format ["%1, ", _x]; - if (_forEachIndex > 9) exitWith {};// - } forEach _oldVersionsClient; + if (_forEachIndex > 9) exitWith {};// + } forEach _missingAddons; - _error = _error call _fnc_cutComma; + _error = _error call _fnc_cutComma; - diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); - }; + diag_log text _error; + [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + }; - _oldVersionServer = false; - if (count _oldVersionsServer > 0) then { - _oldVersionServer = true; + _missingAddonServer = false; + if (count _missingAddonsServer > 0) then { + _missingAddonServer = true; - _error = format ["[ACE] %1: ERROR outdated server addon(s): ", _client]; - { - _error = _error + format ["%1 (client: %2, server: %3), ", _x select 0, _x select 1, _x select 2]; + _error = format ["[ACE] %1: ERROR missing server addon(s): ", _client]; + { + _error = _error + format ["%1, ", _x]; - if (_forEachIndex > 9) exitWith {};// - } forEach _oldVersionsServer; + if (_forEachIndex > 9) exitWith {};// + } forEach _missingAddonsServer; - _error = _error call _fnc_cutComma; + _error = _error call _fnc_cutComma; - diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); - }; + diag_log text _error; + [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + }; - ACE_Version_ClientErrors = [_missingAddon, _missingAddonServer, _oldVersionClient, _oldVersionServer]; + _oldVersionClient = false; + if (count _oldVersionsClient > 0) then { + _oldVersionClient = true; + + _error = format ["[ACE] %1: ERROR outdated addon(s): ", _client]; + { + _error = _error + format ["%1 (client: %2, server: %3), ", _x select 0, _x select 1, _x select 2]; + + if (_forEachIndex > 9) exitWith {};// + } forEach _oldVersionsClient; + + _error = _error call _fnc_cutComma; + + diag_log text _error; + [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + }; + + _oldVersionServer = false; + if (count _oldVersionsServer > 0) then { + _oldVersionServer = true; + + _error = format ["[ACE] %1: ERROR outdated server addon(s): ", _client]; + { + _error = _error + format ["%1 (client: %2, server: %3), ", _x select 0, _x select 1, _x select 2]; + + if (_forEachIndex > 9) exitWith {};// + } forEach _oldVersionsServer; + + _error = _error call _fnc_cutComma; + + diag_log text _error; + [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + }; + + ACE_Version_ClientErrors = [_missingAddon, _missingAddonServer, _oldVersionClient, _oldVersionServer]; }; From 3976c4d64ff7e723b7daf55f332282ebd3697ca4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 9 May 2015 16:06:44 +0200 Subject: [PATCH 0111/1101] the spaces --- addons/common/functions/fnc_checkPBOs.sqf | 4 +- .../common/functions/fnc_moduleCheckPBOs.sqf | 104 +++++++++--------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index 7c4aaeba13..2b738e2f1a 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -25,11 +25,11 @@ _checkAll = _this select 1; _whitelist = _this select 2; if (isNil "_checkAll") then { - _checkAll = false; + _checkAll = false; }; if (isNil "_whitelist") then { - _whitelist = "[]"; + _whitelist = "[]"; }; _logic = "Logic" createVehicleLocal [0,0,0]; diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index 5f06f6d60e..7137f1ea1d 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -22,7 +22,7 @@ _checkAll = _logic getVariable ["CheckAll", false]; _whitelist = call compile (_logic getVariable ["Whitelist", "[]"]); if (isNil "_whitelist") then { - _whitelist = []; + _whitelist = []; }; _whitelist = [_whitelist, {toLower _this}] call FUNC(map); @@ -31,67 +31,67 @@ ACE_Version_CheckAll = _checkAll; ACE_Version_Whitelist = _whitelist; if (!isServer) then { - [_mode, _checkAll, _whitelist] spawn { - _mode = _this select 0; - _checkAll = _this select 1; - _whitelist = _this select 2; + [_mode, _checkAll, _whitelist] spawn { + _mode = _this select 0; + _checkAll = _this select 1; + _whitelist = _this select 2; - waitUntil { - sleep 1; - !isNil "ACE_Version_ClientErrors" - }; + 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; + _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]; + // 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; "; - }; + 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; + //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + diag_log text _error; - _text = composeText [lineBreak, parseText format ["%1", _text]]; + _text = composeText [lineBreak, parseText format ["%1", _text]]; - _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; - _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; + _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; + _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; - disableSerialization; - _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; - _ctrlHint ctrlSetStructuredText _text; + disableSerialization; + _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; + _ctrlHint ctrlSetStructuredText _text; - if (_mode == 0) then { - sleep 10; - _rscLayer cutFadeOut 0.2; - }; + if (_mode == 0) then { + sleep 10; + _rscLayer cutFadeOut 0.2; + }; - if (_mode == 2) then { - sleep 10; - waitUntil {alive player}; - [player] call FUNC(adminKick); - }; - }; - }; + 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]; From 7fb56d4fd56ff032511477108f45cee65c340e04 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 9 May 2015 17:03:51 +0200 Subject: [PATCH 0112/1101] simple check to compare client and server version of ace --- addons/common/functions/fnc_checkFiles.sqf | 34 +++++++++++++++++++- addons/common/functions/fnc_errorMessage.sqf | 15 +++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 35cb552a8a..6aa38d61c0 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -17,7 +17,7 @@ private "_version"; _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); -diag_log text format ["[ACE]: ACE is version %1", _version]; +diag_log text format ["[ACE]: ACE is version %1.", _version]; private ["_addons", "_index"]; @@ -57,3 +57,35 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); }; }; } forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); + +/////////////// +// check server version +/////////////// +if (isMultiplayer) then { + if (isServer) then { + // send servers version of ACE to all clients + GVAR(ServerVersion) = _version; + publicVariable QGVAR(ServerVersion); + } else { + // clients have to wait for the variable + [{ + if (isNil QGVAR(ServerVersion)) exitWith {}; + + private "_version"; + _version = _this select 0; + + if (_version != GVAR(ServerVersion)) then { + private "_errorMsg"; + _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; + + diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + + if (hasInterface) then {diag_log str "1"; + ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + }; + }; + + [_this select 1] call CBA_fnc_removePerFrameHandler; + }, 1, _version] call CBA_fnc_addPerFrameHandler; + }; +}; diff --git a/addons/common/functions/fnc_errorMessage.sqf b/addons/common/functions/fnc_errorMessage.sqf index e061772942..9665fed5bb 100644 --- a/addons/common/functions/fnc_errorMessage.sqf +++ b/addons/common/functions/fnc_errorMessage.sqf @@ -15,6 +15,21 @@ disableSerialization; endLoadingScreen; + +// no message without player possible +if (!hasInterface) exitWith {}; + +// wait for display +if (isNull (call BIS_fnc_displayMission)) exitWith { + [{ + if (isNull (call BIS_fnc_displayMission)) exitWith {}; + + (_this select 0) call FUNC(errorMessage); + [_this select 1] call CBA_fnc_removePerFrameHandler; + + }, 1, _this] call CBA_fnc_addPerFrameHandler; +}; + private ["_textHeader", "_textMessage", "_onOK", "_onCancel"]; _textHeader = _this select 0; From 30ff90453bdc7a143f4b02253b844a991b760fdf Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 9 May 2015 18:32:19 +0200 Subject: [PATCH 0113/1101] wind deflection has wrong version number macro setup --- addons/winddeflection/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index e0c77420cf..02480bf013 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -7,9 +7,9 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_weather"}; versionDesc = "ACE Wind Deflection"; - version = VERSION; author[] = {$STR_ACE_Common_ACETeam, "Glowbal", "Ruthberg"}; authorUrl = "http://csemod.com"; + VERSION_CONFIG;` }; }; From 737b1cc2160291a88ceb98da34f57b2335a28e6c Mon Sep 17 00:00:00 2001 From: SAM Date: Sat, 9 May 2015 18:42:02 +0200 Subject: [PATCH 0114/1101] Renamed variable limit to limitViewDistance For future limiting of terraingrid --- addons/viewdistance/ACE_Settings.hpp | 2 +- addons/viewdistance/functions/fnc_changeViewDistance.sqf | 2 +- addons/viewdistance/functions/fnc_initModule.sqf | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index de1b0226c6..6572e4790e 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -7,7 +7,7 @@ class ACE_Settings { displayName = "Change View Distance"; description = "Changes in game view distance"; }; - class GVAR(limit) { + class GVAR(limitViewDistance) { typeName = "SCALAR"; value = 10000; // Value, NOT index. 10000 is the maximum in A3 displayName = "View Distance Limit"; diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 7a92b70748..f1274343d8 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -21,7 +21,7 @@ private ["_text","_new_view_distance","_view_distance_limit"]; // Change the received index number into an actual view distance: _new_view_distance = [GVAR(viewDistance)] call FUNC(returnValue); -_view_distance_limit = GVAR(limit); // Grab the limit +_view_distance_limit = GVAR(limitViewDistance); // Grab the limit if (_new_view_distance <= _view_distance_limit) then { _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; diff --git a/addons/viewdistance/functions/fnc_initModule.sqf b/addons/viewdistance/functions/fnc_initModule.sqf index 6dd7105439..cff8e9685f 100644 --- a/addons/viewdistance/functions/fnc_initModule.sqf +++ b/addons/viewdistance/functions/fnc_initModule.sqf @@ -23,6 +23,6 @@ if (!_activated) exitWith { diag_log text "[ACE]: View Distance Limit Module is placed but NOT active."; }; -[_logic, QGVAR(limit),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(limitViewDistance),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); -diag_log format ["[ACE]: View Distance Limit Module Initialized. Limit set by module: %1",GVAR(limit)]; \ No newline at end of file +diag_log format ["[ACE]: View Distance Limit Module Initialized. Limit set by module: %1",GVAR(limitViewDistance)]; \ No newline at end of file From b80602fbae025d0862a219a76ff6302b49386b52 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 9 May 2015 18:55:00 +0200 Subject: [PATCH 0115/1101] Fixed a typo --- addons/winddeflection/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 02480bf013..e420debb66 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { versionDesc = "ACE Wind Deflection"; author[] = {$STR_ACE_Common_ACETeam, "Glowbal", "Ruthberg"}; authorUrl = "http://csemod.com"; - VERSION_CONFIG;` + VERSION_CONFIG; }; }; From e56089737b5ca6ae4509c5e0a1a96c28526629b3 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sat, 9 May 2015 10:30:58 -0700 Subject: [PATCH 0116/1101] $NOBIN$ mode now respects the signature key blacklist --- tools/make.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/make.py b/tools/make.py index f3d71f3f34..4c8ba2f5b2 100644 --- a/tools/make.py +++ b/tools/make.py @@ -969,7 +969,7 @@ See the make.cfg file for additional build options. raise print_error("Could not rename built PBO with prefix.") # Sign result - if key: + if (key and not "ace_{}.pbo".format(module) in signature_blacklist): print("Signing with {}.".format(key)) if pbo_name_prefix: ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "addons", pbo_name_prefix + module + ".pbo")]) From aa6c3ddf2c53d95fe843265f416d2aa0a69ca3a7 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 9 May 2015 19:34:35 +0200 Subject: [PATCH 0117/1101] fix: check files script, order in activatedAddons is not guaranteed --- addons/common/functions/fnc_checkFiles.sqf | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 6aa38d61c0..b0ea8a5200 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -4,7 +4,7 @@ * Compares version numbers of PBOs and DLLs. * * Argument: - * 0: Mode (Number) + * None. * * Return value: * None. @@ -19,14 +19,8 @@ _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); diag_log text format ["[ACE]: ACE is version %1.", _version]; -private ["_addons", "_index"]; - +private "_addons"; _addons = activatedAddons; - -// speed up search. all ace pbos are loaded after ace_main. -_index = _addons find "ace_main"; -reverse _addons; -_addons resize (count _addons - _index); _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); { From 253ed6946e3f270db9c21ecdb622b5a09f4472f6 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 9 May 2015 20:02:22 +0200 Subject: [PATCH 0118/1101] scope firedEH cleanup --- addons/scopes/functions/fnc_firedEH.sqf | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index 1b692e340a..020431c27b 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -18,25 +18,20 @@ */ #include "script_component.hpp" -private ["_unit", "_adjustment", "_weapon", "_projectile", "_weaponIndex", "_zeroing", "_adjustment"]; - +private ["_unit", "_adjustment", "_projectile", "_weaponIndex", "_zeroing", "_adjustment"]; _unit = _this select 0; -_weapon = _this select 1; _projectile = _this select 6; -// Exit if the unit doesn't have any adjusment variable +if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; + _adjustment = _unit getVariable [QGVAR(Adjustment), []]; if (_adjustment isEqualTo []) exitWith {}; -// Exit if the unit isn't a player -if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; - _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {}; _zeroing = _adjustment select _weaponIndex; -//Exit if adjusment is zero: if (_zeroing isEqualTo [0,0,0]) exitWith {}; // Convert zeroing from mils to degrees From ec2d3ff99d2dfe4cef3f588ca5f8717ecfa22e9b Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sat, 9 May 2015 11:05:35 -0700 Subject: [PATCH 0119/1101] add some debug --- tools/make.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/make.py b/tools/make.py index 4c8ba2f5b2..3db62337a8 100644 --- a/tools/make.py +++ b/tools/make.py @@ -102,6 +102,8 @@ def get_directory_hash(directory): traceback.print_exc() return -2 + retVal = directory_hash.hexdigest() + #print_yellow("Hash Value for {} is {}".format(directory,retVal)) return directory_hash.hexdigest() # Copyright (c) André Burgaud From 21ea66746380c25180b6fad3f24df1d0f4fad59b Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sat, 9 May 2015 11:07:27 -0700 Subject: [PATCH 0120/1101] $NOBIN$ file must not be a zero-byte file in order to affect the cache to trigger a proper rebuild. --- addons/common/config - Copy.cpp | 167 ++++++++++++++++++++++++++++++++ addons/config.cpp | 167 ++++++++++++++++++++++++++++++++ optionals/server/$NOBIN$ | 1 + server.md5 | 2 + server2.md5 | 3 + server3.md5 | 3 + tools/vm_build.py | 6 ++ 7 files changed, 349 insertions(+) create mode 100644 addons/common/config - Copy.cpp create mode 100644 addons/config.cpp create mode 100644 server.md5 create mode 100644 server2.md5 create mode 100644 server3.md5 create mode 100644 tools/vm_build.py diff --git a/addons/common/config - Copy.cpp b/addons/common/config - Copy.cpp new file mode 100644 index 0000000000..27647f8d00 --- /dev/null +++ b/addons/common/config - Copy.cpp @@ -0,0 +1,167 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; + weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_main"}; + author[] = {"KoffeinFlummi"}; + authorUrl = "https://github.com/KoffeinFlummi/"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" + +#include "CfgSounds.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" +#include "CfgMagazines.hpp" + +#include "CfgActions.hpp" +#include "CfgMoves.hpp" +#include "CfgVoice.hpp" +#include "CfgUnitInsignia.hpp" + +class ACE_Rsc_Display_Base { + idd = -1; + type = 0; + style = 48; + name = ""; + duration = 999999; + fadeIn = 0; + fadeOut = 0; + font = "TahomaB"; + size = 1; + colorBackground[] = {1, 1, 1, 0}; + colorText[] = {1, 1, 1, 1}; +}; + +class ACE_Rsc_Control_Base { + idc = 1; + type = 0; + style = 48; + access = 0; + lineSpacing = 0; + moving = 1; + text = ""; + size = 1; + sizeEx = 0; + font = "TahomaB"; + colorBackground[] = {1, 1, 1, 0}; + colorText[] = {1, 1, 1, 1}; + x = 0; + y = 0; + w = 0; + 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(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[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; + }; + class GVAR(SettingProgressBarLocation) { + value = 0; + typeName = "SCALAR"; + force = 0; + isClientSettable = 1; + displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; + description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; + values[] = {"Top", "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 "define.hpp" +#include +#include +#include + +class CfgUIGrids { + class IGUI { + class Presets { + class Arma3 { + class Variables { + grid_ACE_displayText[] = {{((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)),safeZoneY + 0.175 * safezoneH, (10 *(((safezoneW / safezoneH) min 1.2) / 40)), (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; + }; + }; + }; + + class Variables { + class grid_ACE_displayText { + displayName = "ACE Hint"; + description = "Textual in game feedback to the player."; + preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa"; + saveToProfile[] = {0,1}; + }; + }; + }; +}; + +/* +// check dll +class RscStandardDisplay; +class RscDisplayMain: RscStandardDisplay { + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscDisplayMain"",'GUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_5('header','tail',{0},{},_this select 0)] call COMPILE_FILE(functions\fnc_errorMessage)); +}; +*/ + +class ACE_Extensions { + extensions[] = {}; +}; diff --git a/addons/config.cpp b/addons/config.cpp new file mode 100644 index 0000000000..27647f8d00 --- /dev/null +++ b/addons/config.cpp @@ -0,0 +1,167 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; + weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_main"}; + author[] = {"KoffeinFlummi"}; + authorUrl = "https://github.com/KoffeinFlummi/"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" + +#include "CfgSounds.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" +#include "CfgMagazines.hpp" + +#include "CfgActions.hpp" +#include "CfgMoves.hpp" +#include "CfgVoice.hpp" +#include "CfgUnitInsignia.hpp" + +class ACE_Rsc_Display_Base { + idd = -1; + type = 0; + style = 48; + name = ""; + duration = 999999; + fadeIn = 0; + fadeOut = 0; + font = "TahomaB"; + size = 1; + colorBackground[] = {1, 1, 1, 0}; + colorText[] = {1, 1, 1, 1}; +}; + +class ACE_Rsc_Control_Base { + idc = 1; + type = 0; + style = 48; + access = 0; + lineSpacing = 0; + moving = 1; + text = ""; + size = 1; + sizeEx = 0; + font = "TahomaB"; + colorBackground[] = {1, 1, 1, 0}; + colorText[] = {1, 1, 1, 1}; + x = 0; + y = 0; + w = 0; + 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(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[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; + }; + class GVAR(SettingProgressBarLocation) { + value = 0; + typeName = "SCALAR"; + force = 0; + isClientSettable = 1; + displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; + description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; + values[] = {"Top", "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 "define.hpp" +#include +#include +#include + +class CfgUIGrids { + class IGUI { + class Presets { + class Arma3 { + class Variables { + grid_ACE_displayText[] = {{((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)),safeZoneY + 0.175 * safezoneH, (10 *(((safezoneW / safezoneH) min 1.2) / 40)), (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; + }; + }; + }; + + class Variables { + class grid_ACE_displayText { + displayName = "ACE Hint"; + description = "Textual in game feedback to the player."; + preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa"; + saveToProfile[] = {0,1}; + }; + }; + }; +}; + +/* +// check dll +class RscStandardDisplay; +class RscDisplayMain: RscStandardDisplay { + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscDisplayMain"",'GUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_5('header','tail',{0},{},_this select 0)] call COMPILE_FILE(functions\fnc_errorMessage)); +}; +*/ + +class ACE_Extensions { + extensions[] = {}; +}; diff --git a/optionals/server/$NOBIN$ b/optionals/server/$NOBIN$ index e69de29bb2..c2037c2142 100644 --- a/optionals/server/$NOBIN$ +++ b/optionals/server/$NOBIN$ @@ -0,0 +1 @@ +NOBIN \ No newline at end of file diff --git a/server.md5 b/server.md5 new file mode 100644 index 0000000000..4b55677c68 --- /dev/null +++ b/server.md5 @@ -0,0 +1,2 @@ +9f932a56f6d56912c3ed64583086c699 *server\config.cpp +a0d9c8926a9c729e96bb6f5e83072526 *server\script_component.hpp diff --git a/server2.md5 b/server2.md5 new file mode 100644 index 0000000000..e5a17d9cc0 --- /dev/null +++ b/server2.md5 @@ -0,0 +1,3 @@ +d41d8cd98f00b204e9800998ecf8427e *server\$NOBIN$ +9f932a56f6d56912c3ed64583086c699 *server\config.cpp +a0d9c8926a9c729e96bb6f5e83072526 *server\script_component.hpp diff --git a/server3.md5 b/server3.md5 new file mode 100644 index 0000000000..8c7d3ace7c --- /dev/null +++ b/server3.md5 @@ -0,0 +1,3 @@ +76717b52157b1d55caa07359c789c148 *server\$NOBIN$ +9f932a56f6d56912c3ed64583086c699 *server\config.cpp +a0d9c8926a9c729e96bb6f5e83072526 *server\script_component.hpp diff --git a/tools/vm_build.py b/tools/vm_build.py new file mode 100644 index 0000000000..1d43c6ee30 --- /dev/null +++ b/tools/vm_build.py @@ -0,0 +1,6 @@ +import subprocess +try: + result = subprocess.call("python make.py checkexternal test") + print (result) +except: + raise \ No newline at end of file From 70e1310d28c10adf8ec0e6ac5cca5d609ced9463 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sat, 9 May 2015 11:29:42 -0700 Subject: [PATCH 0121/1101] Give builders a clue where to look to find what the cause for the error may be. #1051 --- tools/make.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/make.py b/tools/make.py index 3db62337a8..a3651b74a7 100644 --- a/tools/make.py +++ b/tools/make.py @@ -985,7 +985,7 @@ See the make.cfg file for additional build options. if not build_successful: print_error("pboProject return code == {}".format(str(ret))) - print_error("Module not successfully built/signed.") + print_error("Module not successfully built/signed. Check your {}temp\{}_packing.log for more info.".format(work_drive,module)) print ("Resuming build...") continue @@ -1057,7 +1057,7 @@ See the make.cfg file for additional build options. build_successful = True if not build_successful: - print_error("Module not successfully built.") + print_error("Module not successfully built. Check your {}temp\{}_packing.log for more info.".format(work_drive,module)) # Back to the root os.chdir(make_root) From 071f40eb2fff9d9bd094959cb9d3d94f01f3610a Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sat, 9 May 2015 12:13:03 -0700 Subject: [PATCH 0122/1101] Remove obsolete *.dll files #1038 --- tools/make.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tools/make.py b/tools/make.py index a3651b74a7..e90beb7703 100644 --- a/tools/make.py +++ b/tools/make.py @@ -661,6 +661,7 @@ See the make.cfg file for additional build options. module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir)) module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons")) optionals_root = os.path.join(module_root_parent, "optionals") + extensions_root = os.path.join(module_root_parent, "extensions") print_green ("module_root: {}".format(module_root)) if (os.path.isdir(module_root)): @@ -807,6 +808,18 @@ See the make.cfg file for additional build options. print_yellow("Removing obsolete file => {}".format(file)) purge(obsolete_check_path,fileName+"\..",fileName+".*") + obsolete_check_path = os.path.join(module_root, release_dir, project) + for file in os.listdir(obsolete_check_path): + if (file.endswith(".dll") and os.path.isfile(os.path.join(obsolete_check_path,file))): + if check_for_obsolete_pbos(extensions_root, file): + fileName = os.path.splitext(file)[0] + print_yellow("Removing obsolete file => {}".format(file)) + try: + os.remove(os.path.join(obsolete_check_path,file)) + except: + print_error("\nFailed to delete {}".format(os.path.join(obsolete_check_path,file))) + pass + # For each module, prep files and then build. print_blue("\nBuilding...") for module in modules: From f685ec2257f2eba28b9ea7e02b17d2cbebc0c22a Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 9 May 2015 20:24:39 +0100 Subject: [PATCH 0123/1101] added zeus changes module --- addons/zeus/$PBOPREFIX$ | 1 + addons/zeus/CfgEventHandlers.hpp | 6 + addons/zeus/XEH_preInit.sqf | 7 + addons/zeus/config.cpp | 22 ++ .../zeus/functions/fnc_bi_moduleCurator.sqf | 310 ++++++++++++++++++ addons/zeus/functions/script_component.hpp | 1 + addons/zeus/script_component.hpp | 12 + 7 files changed, 359 insertions(+) create mode 100644 addons/zeus/$PBOPREFIX$ create mode 100644 addons/zeus/CfgEventHandlers.hpp create mode 100644 addons/zeus/XEH_preInit.sqf create mode 100644 addons/zeus/config.cpp create mode 100644 addons/zeus/functions/fnc_bi_moduleCurator.sqf create mode 100644 addons/zeus/functions/script_component.hpp create mode 100644 addons/zeus/script_component.hpp diff --git a/addons/zeus/$PBOPREFIX$ b/addons/zeus/$PBOPREFIX$ new file mode 100644 index 0000000000..ae5a20d62d --- /dev/null +++ b/addons/zeus/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\zeus \ No newline at end of file diff --git a/addons/zeus/CfgEventHandlers.hpp b/addons/zeus/CfgEventHandlers.hpp new file mode 100644 index 0000000000..f0a9f14d91 --- /dev/null +++ b/addons/zeus/CfgEventHandlers.hpp @@ -0,0 +1,6 @@ + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf new file mode 100644 index 0000000000..2574706239 --- /dev/null +++ b/addons/zeus/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(bi_moduleCurator); + +ADDON = true; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp new file mode 100644 index 0000000000..84d3077a96 --- /dev/null +++ b/addons/zeus/config.cpp @@ -0,0 +1,22 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"SilentSpike"}; + authorUrl = "https://github.com/SilentSpike"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" + +class CfgVehicles { + class Module_F; + class ModuleCurator_F: Module_F { + function = QUOTE(FUNC(bi_moduleCurator)); + }; +}; \ No newline at end of file diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf new file mode 100644 index 0000000000..80f9be5bc1 --- /dev/null +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -0,0 +1,310 @@ +/* +* Author: Bohemia Interactive +* Module function for initalizing zeus +* Edited to remove eagle and global ascension message +* +* Arguments: +* 0: The logic object +* +* Return Value: +* nil +* +* Public: No +*/ + +#include "script_component.hpp" + +_logic = _this select 0; +_units = _this select 1; +_activated = _this select 2; + +if (_activated) then { + + //--- Terminate when not created on the server + if (!isserver && local _logic && isnull (getassignedcuratorunit _logic)) exitwith { + [format ["%1 is trying to create curator logic ModuleCurator_F",profilename],"bis_fnc_error",false] call bis_fnc_mp; + deletevehicle _logic; + }; + + //--- Get curator owner + _ownerVar = _logic getvariable ["owner",""]; + _ownerUID = parsenumber _ownerVar; + if (cheatsenabled) then { + _ownerVarArray = toarray _ownerVar; + _ownerVarArray resize 3; + if (tostring _ownerVarArray == "DEV") then {_ownerUID = 1;}; + }; + if (_ownerVar == "" && !ismultiplayer) then { + ["Curator owner not defined, player used instead in singleplayer."] call bis_fnc_error; + _ownerVar = player call bis_fnc_objectvar; + }; + if (_ownerUID > 0 && !ismultiplayer) then { + _ownerVar = player call bis_fnc_objectvar; + }; + _isAdmin = _ownerVar == "#adminLogged" || _ownerVar == "#adminVoted"; + + //--- Wipe out the variable so clients can't access it + _logic setvariable ["owner",nil]; + + //--- Server + if (isserver) then { + + //--- Prepare admin variable + _adminVar = ""; + if (_isAdmin) then { + _letters = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]; + _adminVar = "admin_"; + for "_i" from 0 to 9 do {_adminVar = _adminVar + (_letters call bis_fnc_selectrandom);}; + _logic setvariable ["adminVar",_adminVar,true]; + }; + + //--- Get allowed addons + _addonsType = _logic getvariable ["Addons",0]; + _addons = []; + switch _addonsType do { + + //--- All (including unofficial ones) + case 3: { + _cfgPatches = configfile >> "cfgpatches"; + for "_i" from 0 to (count _cfgPatches - 1) do { + _class = _cfgPatches select _i; + if (isclass _class) then {_addons set [count _addons,configname _class];}; + }; + _addons call bis_fnc_activateaddons; + removeallcuratoraddons _logic; + _logic addcuratoraddons _addons; + }; + + //--- All active + case 2: {}; + + //--- All mission + case 1: { + _addonsList = []; + { + _addonsList = _addonsList + (unitaddons typeof _x); + } foreach (entities "all"); + removeallcuratoraddons _logic; + _logic addcuratoraddons _addonsList; + }; + + //--- None + case 0: { + removeallcuratoraddons _logic; + }; + }; + + //--- Handle ownership + [_logic,_ownerVar,_ownerUID,_adminVar] spawn { + scriptname "BIS_fnc_moduleCurator: Owner"; + + _logic = _this select 0; + _ownerVar = _this select 1; + _ownerUID = _this select 2; + _adminVar = _this select 3; + + if (_adminVar != "") then {_ownerVar = _adminVar;}; + + _forced = _logic getvariable ["forced",0] > 0; + _name = _logic getvariable ["name",""]; + if (_name == "") then {_name = localize "STR_A3_curator";}; + + //--- Wait until mission starts + waituntil {time > 0}; + + //--- Refresh addon list, so it's broadcasted to clients + _addons = curatoraddons _logic; + removeAllCuratorAddons _logic; + _logic addcuratoraddons _addons; + + while {true} do { + //--- Wait for player to become Zeus + switch true do { + case (_ownerUID > 0): { + waituntil { + sleep 0.01; + {getplayeruid _x == _ownerVar} count playableunits > 0 + }; + }; + default { + waituntil {isplayer (missionnamespace getvariable [_ownerVar,objnull])}; + }; + }; + + //--- Assign + _player = objnull; + switch true do { + case (_ownerUID > 0): { + { + if (getplayeruid _x == _ownerVar) exitwith {_player = _x;}; + } foreach playableunits; + }; + default { + _player = missionnamespace getvariable [_ownerVar,objnull]; + }; + }; + + waituntil {unassigncurator _logic; isnull (getassignedcuratorunit _logic)}; + waituntil {_player assignCurator _logic; getassignedcuratorunit _logic == _player}; + + //--- Add radio channels + { + _x radiochanneladd [_player]; + } foreach (_logic getvariable ["channels",[]]); + + [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler; + + //--- Forced interface + //if (_forced) then { + // [[true,true],"bis_fnc_forceCuratorInterface",_player] call bis_fnc_mp; + //}; + + //--- Wait for player to stop being Zeus + switch true do { + case (_ownerUID > 0): { + waituntil { + sleep 0.01; + {getplayeruid _x == _ownerVar} count playableunits == 0 + }; + }; + default { + waituntil {_player != missionnamespace getvariable [_ownerVar,objnull]}; + }; + }; + + //--- Add radio channels + { + _x radiochannelremove [_player]; + } foreach (_logic getvariable ["channels",[]]); + + //--- Unassign + waituntil {unassigncurator _logic; isnull (getassignedcuratorunit _logic)}; + }; + }; + + //--- Activated all future addons + _addons = []; + { + if (typeof _x == "ModuleCuratorAddAddons_F") then { + _paramAddons = call compile ("[" + (_x getvariable ["addons",""]) + "]"); + { + if !(_x in _addons) then {_addons set [count _addons,_x];}; + { + if !(_x in _addons) then {_addons set [count _addons,_x];}; + } foreach (unitaddons _x); + } foreach _paramAddons; + }; + } foreach (synchronizedobjects _logic); + _addons call bis_fnc_activateaddons; + + //--- Locality changed + _logic addeventhandler [ + "local", + { + _logic = _this select 0; + _bird = _logic getvariable ["bird",objnull]; + _bird setowner owner _logic; + } + ]; + }; + + //--- Player + if (hasinterface) then { + waituntil {local player}; + _serverCommand = if (_ownerVar == "#adminLogged") then {"#shutdown"} else {"#kick"}; + + //--- Black effect until the interface is open + _forced = _logic getvariable ["forced",0] > 0; + if (_forced) then { + _isCurator = switch true do { + case (_ownerUID > 0): { + getplayeruid player == _ownerVar + }; + case (_isAdmin): { + isserver || servercommandavailable _serverCommand + }; + default { + player == missionnamespace getvariable [_ownerVar,objnull] + }; + }; + if (_isCurator) then { + [true,true] spawn bis_fnc_forceCuratorInterface; + ("RscDisplayCurator" call bis_fnc_rscLayer) cuttext ["","black in",1e10]; + }; + }; + + //--- Check if player is server admin + if (_isAdmin) then { + _adminVar = _logic getvariable ["adminVar",""]; + _logic setvariable ["adminVar",nil]; + if (isserver) then { + //--- Host + missionnamespace setvariable [_adminVar,player]; + } else { + //--- Client + [_logic,_adminVar,_serverCommand] spawn { + scriptname "BIS_fnc_moduleCurator: Admin check"; + + _logic = _this select 0; + _adminVar = _this select 1; + _serverCommand = _this select 2; + while {true} do { + waituntil {sleep 0.1; servercommandavailable _serverCommand}; + missionnamespace setvariable [_adminVar,player]; + publicvariable _adminVar; + _respawn = player addeventhandler ["respawn",format ["%1 = _this select 0; publicvariable '%1';",_adminVar]]; + + waituntil {sleep 0.1; !servercommandavailable _serverCommand}; + missionnamespace setvariable [_adminVar,objnull]; + publicvariable _adminVar; + player removeeventhandler ["respawn",_respawn]; + }; + }; + }; + }; + + [_logic] spawn { + _logic = _this select 0; + sleep 1; + waituntil {alive player}; + + //--- Show warning when Zeus key is not assigned + if (count (actionkeys "curatorInterface") == 0) then { + [ + format [ + localize "str_a3_cfgvehicles_modulecurator_f_keyNotAssigned", + (["IGUI","WARNING_RGB"] call bis_fnc_displaycolorget) call bis_fnc_colorRGBAtoHTML + ] + ] call bis_fnc_guiMessage; + }; + + //--- Show hint about pinging for players + if ( + isnil {profilenamespace getvariable "bis_fnc_curatorPinged_done"} + && + {isTutHintsEnabled} + && + {isnull getassignedcuratorlogic player} + && + {player in curatoreditableobjects _logic} + ) then { + sleep 0.5; + [["Curator","Ping"]] call bis_fnc_advHint; + }; + }; + + //--- Add local event handlers + _logic addeventhandler ["curatorFeedbackMessage",{_this call bis_fnc_showCuratorFeedbackMessage;}]; + _logic addeventhandler ["curatorPinged",{_this call bis_fnc_curatorPinged;}]; + _logic addeventhandler ["curatorObjectPlaced",{_this call bis_fnc_curatorObjectPlaced;}]; + _logic addeventhandler ["curatorObjectEdited",{_this call bis_fnc_curatorObjectEdited;}]; + _logic addeventhandler ["curatorWaypointPlaced",{_this call bis_fnc_curatorWaypointPlaced;}]; + + _logic addeventhandler ["curatorObjectDoubleClicked",{(_this select 1) call bis_fnc_showCuratorAttributes;}]; + _logic addeventhandler ["curatorGroupDoubleClicked",{(_this select 1) call bis_fnc_showCuratorAttributes;}]; + _logic addeventhandler ["curatorWaypointDoubleClicked",{(_this select 1) call bis_fnc_showCuratorAttributes;}]; + _logic addeventhandler ["curatorMarkerDoubleClicked",{(_this select 1) call bis_fnc_showCuratorAttributes;}]; + + player call bis_fnc_curatorRespawn; + }; +}; diff --git a/addons/zeus/functions/script_component.hpp b/addons/zeus/functions/script_component.hpp new file mode 100644 index 0000000000..35453cc4e8 --- /dev/null +++ b/addons/zeus/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\zeus\script_component.hpp" \ No newline at end of file diff --git a/addons/zeus/script_component.hpp b/addons/zeus/script_component.hpp new file mode 100644 index 0000000000..d5a4ec1bcc --- /dev/null +++ b/addons/zeus/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT zeus +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_ZEUS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_ZEUS + #define DEBUG_SETTINGS DEBUG_SETTINGS_ZEUS +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From 079b8489cea079d5ef409e2182473a3823a0133b Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 9 May 2015 20:30:49 +0100 Subject: [PATCH 0124/1101] Missing spaces :wink: --- .../zeus/functions/fnc_bi_moduleCurator.sqf | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 80f9be5bc1..86f9bc781a 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -1,16 +1,16 @@ /* -* Author: Bohemia Interactive -* Module function for initalizing zeus -* Edited to remove eagle and global ascension message -* -* Arguments: -* 0: The logic object -* -* Return Value: -* nil -* -* Public: No -*/ + * Author: Bohemia Interactive + * Module function for initalizing zeus + * Edited to remove eagle and global ascension message + * + * Arguments: + * 0: The logic object + * + * Return Value: + * nil + * + * Public: No + */ #include "script_component.hpp" From 3544ee57f8fe91116e7acb2ebfcae184b3805660 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 9 May 2015 20:35:07 +0100 Subject: [PATCH 0125/1101] Added removed script within comments --- .../zeus/functions/fnc_bi_moduleCurator.sqf | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 86f9bc781a..36110ac4fe 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -152,6 +152,15 @@ if (_activated) then { _x radiochanneladd [_player]; } foreach (_logic getvariable ["channels",[]]); + /* Removed by ACE + //--- Sent notification to all assigned players + { + if (isplayer _x) then { + [["CuratorAssign",[_name,name _player]],"bis_fnc_showNotification",_x] call bis_fnc_mp; + }; + } foreach (curatoreditableobjects _logic); + */ + [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler; //--- Forced interface @@ -182,6 +191,15 @@ if (_activated) then { }; }; + /* Removed by ACE + //--- Create bird + _birdType = _logic getvariable ["birdType","eagle_f"]; + if (_birdType != "") then { + _bird = createvehicle [_birdType,[100,100,100],[],0,"none"]; + _logic setvariable ["bird",_bird,true]; + }; + */ + //--- Activated all future addons _addons = []; { @@ -307,4 +325,4 @@ if (_activated) then { player call bis_fnc_curatorRespawn; }; -}; +}; \ No newline at end of file From 6b5d95906d357f4432f94c75736d9aed3e501a90 Mon Sep 17 00:00:00 2001 From: jaynus Date: Sat, 9 May 2015 12:41:01 -0700 Subject: [PATCH 0126/1101] Disables multiple openings of the kestrel & atrag. Allows the overlay toggle, but disables the opening of multiple ones. Used onUnload handlers. Supports both limiting interact and keybinds. Fixes #1086 --- addons/atragmx/RscTitles.hpp | 1 + addons/atragmx/XEH_preInit.sqf | 1 + addons/atragmx/functions/fnc_create_dialog.sqf | 3 +++ addons/atragmx/functions/fnc_init.sqf | 2 ++ addons/atragmx/functions/fnc_on_close_dialog.sqf | 4 ++++ addons/atragmx/initKeybinds.sqf | 2 +- addons/kestrel4500/RscTitles.hpp | 2 ++ addons/kestrel4500/XEH_postInit.sqf | 2 +- addons/kestrel4500/XEH_preInit.sqf | 3 +++ addons/kestrel4500/functions/fnc_createKestrelDialog.sqf | 1 + addons/kestrel4500/functions/fnc_onCloseDialog.sqf | 4 ++++ addons/kestrel4500/functions/fnc_onCloseDisplay.sqf | 4 ++++ addons/kestrel4500/initKeybinds.sqf | 5 +++-- 13 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 addons/atragmx/functions/fnc_on_close_dialog.sqf create mode 100644 addons/kestrel4500/functions/fnc_onCloseDialog.sqf create mode 100644 addons/kestrel4500/functions/fnc_onCloseDisplay.sqf diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp index 4ae08c20aa..cefc7a26eb 100644 --- a/addons/atragmx/RscTitles.hpp +++ b/addons/atragmx/RscTitles.hpp @@ -142,6 +142,7 @@ class ATragMX_Display { name="ATragMX_Display"; idd=-1; onLoad="uiNamespace setVariable ['ATragMX_Display', (_this select 0)]"; + onUnload=QUOTE(_this call FUNC(on_close_dialog)); movingEnable=1; controlsBackground[]={}; objects[]={}; diff --git a/addons/atragmx/XEH_preInit.sqf b/addons/atragmx/XEH_preInit.sqf index 6ec288b9c7..62bf2181c7 100644 --- a/addons/atragmx/XEH_preInit.sqf +++ b/addons/atragmx/XEH_preInit.sqf @@ -68,5 +68,6 @@ PREP(update_target_data); PREP(update_target_selection); PREP(update_unit_selection); PREP(update_zero_range); +PREP(on_close_dialog); ADDON = true; diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf index 09e413d535..e0be3c6941 100644 --- a/addons/atragmx/functions/fnc_create_dialog.sqf +++ b/addons/atragmx/functions/fnc_create_dialog.sqf @@ -16,6 +16,7 @@ #include "script_component.hpp" //if (dialog) exitWith { false }; +if(GVAR(active)) exitWith { false }; if (underwater ACE_player) exitWith { false }; if (!("ACE_ATragMX" in (uniformItems ACE_player)) && !("ACE_ATragMX" in (vestItems ACE_player))) exitWith { false }; @@ -47,4 +48,6 @@ GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer); lbAdd [6000, _x select 0]; } forEach GVAR(gunList); +GVAR(active) = true; + true diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf index e4fe1b67a4..30b17ebf90 100644 --- a/addons/atragmx/functions/fnc_init.sqf +++ b/addons/atragmx/functions/fnc_init.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +GVAR(active) = false; + GVAR(workingMemory) = +(GVAR(gunList) select 0); GVAR(scopeUnits) = ["MILs", "TMOA", "SMOA", "Clicks"]; diff --git a/addons/atragmx/functions/fnc_on_close_dialog.sqf b/addons/atragmx/functions/fnc_on_close_dialog.sqf new file mode 100644 index 0000000000..32ba4e4c43 --- /dev/null +++ b/addons/atragmx/functions/fnc_on_close_dialog.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" + +uiNamespace setVariable ['ATragMX_Display', nil]; +GVAR(active) = false; \ No newline at end of file diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf index 796d7f9d97..98bddf04e4 100644 --- a/addons/atragmx/initKeybinds.sqf +++ b/addons/atragmx/initKeybinds.sqf @@ -2,7 +2,7 @@ { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; - + if(GVAR(active)) exitWith {}; // Statement [] call FUNC(create_dialog); false diff --git a/addons/kestrel4500/RscTitles.hpp b/addons/kestrel4500/RscTitles.hpp index defb954292..b091a07561 100644 --- a/addons/kestrel4500/RscTitles.hpp +++ b/addons/kestrel4500/RscTitles.hpp @@ -54,6 +54,7 @@ class Kestrel4500_Display name="Kestrel4500_Display"; idd=-1; onLoad="uiNamespace setVariable ['Kestrel4500_Display', (_this select 0)]"; + onUnload=QUOTE(_this call FUNC(onCloseDialog)); movingEnable=1; controlsBackground[]={}; objects[]={}; @@ -217,6 +218,7 @@ class RscTitles { idd=-1; onLoad="with uiNameSpace do { RscKestrel4500 = _this select 0 };"; + onUnload=(_this call FUNC(onCloseDisplay)); movingEnable=0; duration=60; fadeIn="false"; diff --git a/addons/kestrel4500/XEH_postInit.sqf b/addons/kestrel4500/XEH_postInit.sqf index 461ed533db..24a972c326 100644 --- a/addons/kestrel4500/XEH_postInit.sqf +++ b/addons/kestrel4500/XEH_postInit.sqf @@ -22,4 +22,4 @@ GVAR(MeasuredWindSpeed) = 0; GVAR(ImpellerState) = 0; GVAR(Kestrel4500) = false; -GVAR(Overlay) = false; +GVAR(Overlay) = false; \ No newline at end of file diff --git a/addons/kestrel4500/XEH_preInit.sqf b/addons/kestrel4500/XEH_preInit.sqf index d081f485ec..2d5e211a54 100644 --- a/addons/kestrel4500/XEH_preInit.sqf +++ b/addons/kestrel4500/XEH_preInit.sqf @@ -13,4 +13,7 @@ PREP(measureWindSpeed); PREP(updateDisplay); PREP(updateImpellerState); +PREP(onCloseDialog); +PREP(onCloseDisplay); + ADDON = true; diff --git a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf index f9cd6cf04a..77e36679de 100644 --- a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf +++ b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf @@ -16,6 +16,7 @@ //if (dialog) exitWith { false }; if (underwater ACE_player) exitWith { false }; +if(GVAR(Kestrel4500)) exitWith { false }; if (!("ACE_Kestrel4500" in (uniformItems ACE_player)) && !("ACE_Kestrel4500" in (vestItems ACE_player))) exitWith { false }; GVAR(Overlay) = false; diff --git a/addons/kestrel4500/functions/fnc_onCloseDialog.sqf b/addons/kestrel4500/functions/fnc_onCloseDialog.sqf new file mode 100644 index 0000000000..a45a9decc3 --- /dev/null +++ b/addons/kestrel4500/functions/fnc_onCloseDialog.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" + +uiNamespace setVariable ['Kestrel4500_Display', nil]; +GVAR(Kestrel4500) = false; diff --git a/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf b/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf new file mode 100644 index 0000000000..efb60b322a --- /dev/null +++ b/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf @@ -0,0 +1,4 @@ +#include "script_component.hpp" + +uiNamespace setVariable ['RscKestrel4500', nil]; +GVAR(Overlay) = false; diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index f6b4fec3ce..f910bdf552 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -2,7 +2,8 @@ { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; - + if(GVAR(Kestrel4500)) exitWith { false }; + // Statement [] call FUNC(createKestrelDialog); false @@ -14,7 +15,7 @@ { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; - + // Statement [] call FUNC(displayKestrel); false From 2e3e203d9f68a44699c96ca300ac52f4f5295b9d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 9 May 2015 14:41:46 -0500 Subject: [PATCH 0127/1101] #1081 - Fix binocular dupe binocs are weapons and items at the same time. need to properly drop binocs because stuff like deisgnator can have ammo --- addons/disarming/functions/fnc_disarmDropItems.sqf | 14 ++++++++++++-- addons/disarming/functions/fnc_getAllGearUnit.sqf | 2 +- .../disarming/functions/fnc_showItemsInListbox.sqf | 8 ++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf index 2cb3e89b5d..cb5da77dd6 100644 --- a/addons/disarming/functions/fnc_disarmDropItems.sqf +++ b/addons/disarming/functions/fnc_disarmDropItems.sqf @@ -102,7 +102,7 @@ if (!([_targetMagazinesStart, _targetMagazinesEnd, _holderMagazinesStart, _holde //Remove Items, Assigned Items and NVG _holderItemsStart = getitemCargo _holder; -_targetItemsStart = (assignedItems _target) + (items _target); +_targetItemsStart = (assignedItems _target) + (items _target) - (weapons _target); if ((headgear _target) != "") then {_targetItemsStart pushBack (headgear _target);}; if ((goggles _target) != "") then {_targetItemsStart pushBack (goggles _target);}; @@ -132,7 +132,7 @@ _addToCrateCount = []; } forEach _addToCrateClassnames; _holderItemsEnd = getitemCargo _holder; -_targetItemsEnd = (assignedItems _target) + (items _target); +_targetItemsEnd = (assignedItems _target) + (items _target) - (weapons _target); if ((headgear _target) != "") then {_targetItemsEnd pushBack (headgear _target);}; if ((goggles _target) != "") then {_targetItemsEnd pushBack (goggles _target);}; @@ -146,6 +146,16 @@ if ((([_holderItemsEnd select 1] call _fncSumArray) - ([_holderItemsStart select [_caller, _target, "Debug: Items Not Added to Holder"] call FUNC(eventTargetFinish); }; +//Script drop uniforms/vest if empty +if (((uniform _target) != "") && {(uniform _target) in _listOfItemsToRemove} && {(uniformItems _target) isEqualTo []}) then { + _holder addItemCargoGlobal [(uniform _target), 1]; + removeUniform _target; +}; +if (((vest _target) != "") && {(vest _target) in _listOfItemsToRemove} && {(vestItems _target) isEqualTo []}) then { + _holder addItemCargoGlobal [(vest _target), 1]; + removeVest _target; +}; + //If holder is still empty, it will be 'garbage collected' while we wait for the drop 'action' to take place //So add a dummy item and just remove at the end diff --git a/addons/disarming/functions/fnc_getAllGearUnit.sqf b/addons/disarming/functions/fnc_getAllGearUnit.sqf index a319c006ee..99d4b2d7f2 100644 --- a/addons/disarming/functions/fnc_getAllGearUnit.sqf +++ b/addons/disarming/functions/fnc_getAllGearUnit.sqf @@ -19,7 +19,7 @@ PARAMS_1(_target); private ["_allItems", "_classnamesCount", "_index", "_uniqueClassnames"]; -_allItems = ((weapons _target) + (magazines _target) + (items _target) + (assignedItems _target)); +_allItems = (((items _target) + (assignedItems _target)) - (weapons _target)) + (weapons _target) + (magazines _target); if ((backpack _target) != "") then { _allItems pushBack (backpack _target); diff --git a/addons/disarming/functions/fnc_showItemsInListbox.sqf b/addons/disarming/functions/fnc_showItemsInListbox.sqf index 5c809de4a2..b36e53e820 100644 --- a/addons/disarming/functions/fnc_showItemsInListbox.sqf +++ b/addons/disarming/functions/fnc_showItemsInListbox.sqf @@ -28,7 +28,7 @@ private ["_classname", "_count", "_displayName", "_picture"]; _classname = _x; _count = (_itemsCountArray select 1) select _forEachIndex; - if (_classname != DUMMY_ITEM) then { //Don't show the dummy potato + if ((_classname != DUMMY_ITEM) && {_classname != "ACE_FakePrimaryWeapon"}) then { //Don't show the dummy potato or fake weapon switch (true) do { case (isClass (configFile >> "CfgWeapons" >> _classname)): { @@ -53,8 +53,8 @@ private ["_classname", "_count", "_displayName", "_picture"]; }; _listBoxCtrl lbAdd format ["%1", _displayName]; - _listBoxCtrl lbSetData [_forEachIndex, _classname]; - _listBoxCtrl lbSetPicture [_forEachIndex, _picture]; - _listBoxCtrl lbSetTextRight [_forEachIndex, str _count]; + _listBoxCtrl lbSetData [((lbSize _listBoxCtrl) - 1), _classname]; + _listBoxCtrl lbSetPicture [((lbSize _listBoxCtrl) - 1), _picture]; + _listBoxCtrl lbSetTextRight [((lbSize _listBoxCtrl) - 1), str _count]; }; } forEach (_itemsCountArray select 0); From 3a10c77f08e5bb90997e44cf31f540a787c6105e Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 9 May 2015 22:09:36 +0200 Subject: [PATCH 0128/1101] Minor cleanup --- addons/atragmx/functions/fnc_create_dialog.sqf | 3 +-- addons/atragmx/initKeybinds.sqf | 2 +- addons/kestrel4500/functions/fnc_createKestrelDialog.sqf | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf index e0be3c6941..6951137577 100644 --- a/addons/atragmx/functions/fnc_create_dialog.sqf +++ b/addons/atragmx/functions/fnc_create_dialog.sqf @@ -15,8 +15,7 @@ */ #include "script_component.hpp" -//if (dialog) exitWith { false }; -if(GVAR(active)) exitWith { false }; +if (GVAR(active)) exitWith { false }; if (underwater ACE_player) exitWith { false }; if (!("ACE_ATragMX" in (uniformItems ACE_player)) && !("ACE_ATragMX" in (vestItems ACE_player))) exitWith { false }; diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf index 98bddf04e4..8bc37752f3 100644 --- a/addons/atragmx/initKeybinds.sqf +++ b/addons/atragmx/initKeybinds.sqf @@ -2,7 +2,7 @@ { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; - if(GVAR(active)) exitWith {}; + if (GVAR(active)) exitWith {false}; // Statement [] call FUNC(create_dialog); false diff --git a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf index 77e36679de..289d0825fc 100644 --- a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf +++ b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf @@ -14,9 +14,8 @@ */ #include "script_component.hpp" -//if (dialog) exitWith { false }; +if (GVAR(Kestrel4500)) exitWith { false }; if (underwater ACE_player) exitWith { false }; -if(GVAR(Kestrel4500)) exitWith { false }; if (!("ACE_Kestrel4500" in (uniformItems ACE_player)) && !("ACE_Kestrel4500" in (vestItems ACE_player))) exitWith { false }; GVAR(Overlay) = false; From 4733818e9b09c4e3bf414b62583ee476ede12cfa Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 9 May 2015 15:10:01 -0500 Subject: [PATCH 0129/1101] Fix weather array for zargabad --- addons/weather/functions/fnc_getMapData.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/weather/functions/fnc_getMapData.sqf b/addons/weather/functions/fnc_getMapData.sqf index 5a090c7388..55c6e9c3c0 100644 --- a/addons/weather/functions/fnc_getMapData.sqf +++ b/addons/weather/functions/fnc_getMapData.sqf @@ -103,7 +103,7 @@ if (toLower worldName in ["takistan", "zargabad", "mountains_acr", "shapur_baf", GVAR(Humidity) = [68, 69, 62, 60, 49, 37, 38, 39, 40, 41, 56, 61]; // Source: https://weatherspark.com/averages/32750/Kabul-Afghanistan - GVAR(WindSpeedMax) = [[4.0, 1.0], [4.1, 1.0], [5.1, 1.1], [6.9, 1.2], [8.9, 1.2], [10.0, 1.1], 0, [8.2, 1.0], [6.9, 1.0], [5.2, 1.0], [3.8, 0.9], [3.7, 0.9]]; + GVAR(WindSpeedMax) = [[4.0, 1.0], [4.1, 1.0], [5.1, 1.1], [6.9, 1.2], [8.9, 1.2], [10.0, 1.1], [9.1,1.0], [8.2, 1.0], [6.9, 1.0], [5.2, 1.0], [3.8, 0.9], [3.7, 0.9]]; GVAR(WindSpeedMean) = [2.2, 2.2, 2.5, 2.8, 3.8, 4.4, 0, 3.3, 2.7, 2.4, 1.8, 1.9]; GVAR(WindSpeedMin) = [[0.2, 0.4], [0.2, 0.4], [0.2, 0.4], [0.3, 0.4], [0.6, 0.4], [0.9, 0.4], [0.7, 0.4], [0.5, 0.4], [0.2, 0.5], [0.1, 0.1], [0, 0.1], [0, 0.1]]; GVAR(WindDirectionProbabilities) = [[0.04, 0.02, 0.05, 0.04, 0.05, 0.04, 0.11, 0.29], // January From 633e94a1141766c8947ac1ae5103a6bbed744305 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 May 2015 22:14:00 +0200 Subject: [PATCH 0130/1101] CBA Macros to Interaction functions --- .../functions/fnc_addPassengerActions.sqf | 4 ++-- .../functions/fnc_addSelectableItem.sqf | 8 ++------ .../interaction/functions/fnc_canJoinGroup.sqf | 5 +---- addons/interaction/functions/fnc_canJoinTeam.sqf | 5 +---- .../interaction/functions/fnc_canTapShoulder.sqf | 5 +---- addons/interaction/functions/fnc_getDoor.sqf | 5 +++-- .../functions/fnc_getDoorAnimations.sqf | 5 ++--- addons/interaction/functions/fnc_getDown.sqf | 6 +++--- .../interaction/functions/fnc_getWeaponPos.sqf | 2 +- addons/interaction/functions/fnc_isInRange.sqf | 5 ++--- addons/interaction/functions/fnc_joinTeam.sqf | 5 ++--- .../functions/fnc_moduleInteraction.sqf | 2 ++ addons/interaction/functions/fnc_moveDown.sqf | 2 ++ addons/interaction/functions/fnc_onButtonUp.sqf | 4 +--- addons/interaction/functions/fnc_onClick.sqf | 3 +-- addons/interaction/functions/fnc_openDoor.sqf | 8 +++----- .../functions/fnc_openMenuSelectUI.sqf | 16 +++++++--------- .../interaction/functions/fnc_openSelectMenu.sqf | 9 ++++++--- .../functions/fnc_prepareSelectMenu.sqf | 7 ++++--- addons/interaction/functions/fnc_push.sqf | 3 +-- addons/interaction/functions/fnc_removeTag.sqf | 2 ++ addons/interaction/functions/fnc_sendAway.sqf | 4 ++-- .../interaction/functions/fnc_showMouseHint.sqf | 12 ++++++------ addons/interaction/functions/fnc_tapShoulder.sqf | 2 +- .../functions/fnc_updateTooltipPosition.sqf | 8 +++++--- 25 files changed, 63 insertions(+), 74 deletions(-) diff --git a/addons/interaction/functions/fnc_addPassengerActions.sqf b/addons/interaction/functions/fnc_addPassengerActions.sqf index 4474378bcc..914edeed28 100644 --- a/addons/interaction/functions/fnc_addPassengerActions.sqf +++ b/addons/interaction/functions/fnc_addPassengerActions.sqf @@ -18,9 +18,9 @@ #include "script_component.hpp" EXPLODE_3_PVT(_this,_vehicle,_player,_parameters); +EXPLODE_1_PVT(_parameters,_unit); -private ["_unit","_actions"]; -_unit = _parameters select 0; +private ["_varName", "_actionTrees", "_actions"]; _varName = format [QEGVAR(interact_menu,Act_%1), typeOf _unit]; _actionTrees = missionNamespace getVariable [_varName, []]; diff --git a/addons/interaction/functions/fnc_addSelectableItem.sqf b/addons/interaction/functions/fnc_addSelectableItem.sqf index 6f1339d25a..4875ba2c97 100644 --- a/addons/interaction/functions/fnc_addSelectableItem.sqf +++ b/addons/interaction/functions/fnc_addSelectableItem.sqf @@ -18,17 +18,13 @@ */ #include "script_component.hpp" -private ["_container", "_displayName", "_picture", "_data", "_index"]; - -_container = _this select 0; -_displayName = _this select 1; -_picture = _this select 2; -_data = _this select 3; +PARAMS_4(_container,_displayName,_picture,_data); if (_picture == "" || _picture == "PictureThing") then { _picture = QUOTE(PATHTOF(UI\dot_ca.paa)); }; +private ["_index"]; _index = lbAdd [_container, _displayName]; lbSetData [_container, _index, str _data]; lbSetPicture [_container, _index, _picture]; diff --git a/addons/interaction/functions/fnc_canJoinGroup.sqf b/addons/interaction/functions/fnc_canJoinGroup.sqf index 26597ca0a0..33b4623c4c 100644 --- a/addons/interaction/functions/fnc_canJoinGroup.sqf +++ b/addons/interaction/functions/fnc_canJoinGroup.sqf @@ -16,10 +16,7 @@ */ #include "script_component.hpp" -private ["_unit", "_target"]; - -_unit = _this select 0; -_target = _this select 1; +PARAMS_2(_unit,_target); alive _target && {!(_target getVariable ["ACE_isUnconscious", false])} diff --git a/addons/interaction/functions/fnc_canJoinTeam.sqf b/addons/interaction/functions/fnc_canJoinTeam.sqf index 4312981978..ba894c7a13 100644 --- a/addons/interaction/functions/fnc_canJoinTeam.sqf +++ b/addons/interaction/functions/fnc_canJoinTeam.sqf @@ -16,10 +16,7 @@ */ #include "script_component.hpp" -private ["_unit", "_target"]; - -_unit = _this select 0; -_target = _this select 1; +PARAMS_2(_unit,_target); alive _target && {!(_target getVariable ["ACE_isUnconscious", false])} diff --git a/addons/interaction/functions/fnc_canTapShoulder.sqf b/addons/interaction/functions/fnc_canTapShoulder.sqf index 2be9bf70a9..1b48d3280d 100644 --- a/addons/interaction/functions/fnc_canTapShoulder.sqf +++ b/addons/interaction/functions/fnc_canTapShoulder.sqf @@ -16,10 +16,7 @@ */ #include "script_component.hpp" -private ["_unit", "_target"]; - -_unit = _this select 0; -_target = _this select 1; +PARAMS_2(_unit,_target); _target isKindOf "CAManBase" && {alive _target} && diff --git a/addons/interaction/functions/fnc_getDoor.sqf b/addons/interaction/functions/fnc_getDoor.sqf index 460a325954..fdf1447828 100644 --- a/addons/interaction/functions/fnc_getDoor.sqf +++ b/addons/interaction/functions/fnc_getDoor.sqf @@ -17,9 +17,9 @@ */ #include "script_component.hpp" -private ["_distance", "_position0", "_position1", "_intersections", "_count", "_house", "_door", "_index", "_id"]; +PARAMS_1(_distance); -_distance = _this select 0; +private ["_position0", "_position1", "_intersections", "_count", "_house", "_door"]; _position0 = positionCameraToWorld [0, 0, 0]; _position1 = positionCameraToWorld [0, 0, _distance]; @@ -38,4 +38,5 @@ _intersections = [_house, "GEOM"] intersect [_position0, _position1]; _door = _intersections select 0 select 0; if (isNil "_door") exitWith {[_house, ""]}; + [_house, _door] diff --git a/addons/interaction/functions/fnc_getDoorAnimations.sqf b/addons/interaction/functions/fnc_getDoorAnimations.sqf index cb0b7122b0..6f85ef644b 100644 --- a/addons/interaction/functions/fnc_getDoorAnimations.sqf +++ b/addons/interaction/functions/fnc_getDoorAnimations.sqf @@ -18,10 +18,9 @@ */ #include "script_component.hpp" -private ["_house", "_door", "_animations", "_lockedVariable"]; +PARAMS_2(_house,_door); -_house = _this select 0; -_door = _this select 1; +private ["_index", "_animations", "_lockedVariable"]; _index = [ "door_1", diff --git a/addons/interaction/functions/fnc_getDown.sqf b/addons/interaction/functions/fnc_getDown.sqf index 9e7daecb46..09d651eadf 100644 --- a/addons/interaction/functions/fnc_getDown.sqf +++ b/addons/interaction/functions/fnc_getDown.sqf @@ -17,9 +17,9 @@ #define RADIUS 10 -private ["_unit", "_chance", "_x"]; +PARAMS_1(_unit); -_unit = _this select 0; +private ["_chance", "_x"]; ACE_player playActionNow "GestureGo"; // put something else here. @@ -35,4 +35,4 @@ if (count (weapons ACE_player) > 0) then { _this setUnitPos "DOWN"; }, _x] call CBA_fnc_globalExecute; }; -} foreach (_unit nearEntities ["Civilian", RADIUS]); +} forEach (_unit nearEntities ["Civilian", RADIUS]); diff --git a/addons/interaction/functions/fnc_getWeaponPos.sqf b/addons/interaction/functions/fnc_getWeaponPos.sqf index 35ea202b1d..1e3c8b32ec 100644 --- a/addons/interaction/functions/fnc_getWeaponPos.sqf +++ b/addons/interaction/functions/fnc_getWeaponPos.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" // IGNORE_PRIVATE_WARNING(_target); -private ["_weaponDir","_refSystem"]; +private ["_weaponDir", "_refSystem"]; _weaponDir = _target weaponDirection currentWeapon _target; _refSystem = _weaponDir call EFUNC(common,createOrthonormalReference); diff --git a/addons/interaction/functions/fnc_isInRange.sqf b/addons/interaction/functions/fnc_isInRange.sqf index 05677d7060..490ddf05e5 100644 --- a/addons/interaction/functions/fnc_isInRange.sqf +++ b/addons/interaction/functions/fnc_isInRange.sqf @@ -16,10 +16,9 @@ */ #include "script_component.hpp" -private ["_vehicle", "_distance", "_player"]; +PARAMS_2(_vehicle,_distance); -_vehicle = _this select 0; -_distance = _this select 1; +private ["_player", "_position0", "_position1"]; _player = ACE_player; diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index cf6889d90a..cd2ea8c880 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -16,10 +16,9 @@ */ #include "script_component.hpp" -private ["_unit", "_team", "_message"]; +PARAMS_2(_unit,_team); -_unit = _this select 0; -_team = _this select 1; +private ["_message"]; _unit setVariable [QGVAR(assignedFireTeam), _team, true]; [_unit, format ["{_this assignTeam '%1'}", _team]] call EFUNC(common,execRemoteFnc); diff --git a/addons/interaction/functions/fnc_moduleInteraction.sqf b/addons/interaction/functions/fnc_moduleInteraction.sqf index 925847c028..bd02093aa0 100644 --- a/addons/interaction/functions/fnc_moduleInteraction.sqf +++ b/addons/interaction/functions/fnc_moduleInteraction.sqf @@ -17,6 +17,8 @@ */ #include "script_component.hpp" +private ["_logic", "_activated"]; + _logic = _this select 0; _activated = _this select 2; diff --git a/addons/interaction/functions/fnc_moveDown.sqf b/addons/interaction/functions/fnc_moveDown.sqf index eb946a5f10..f2e675b256 100644 --- a/addons/interaction/functions/fnc_moveDown.sqf +++ b/addons/interaction/functions/fnc_moveDown.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +private ["_count", "_player", "_vehicle", "_dlgInteractionDialog", "_top", "_i", "", "_ctrl", "_index", "_action", "_color", "_current", "_infoText"]; + #define CLAMP(x,low,high) (if(x > high)then{high}else{if(x < low)then{low}else{x}}) if (isNil QGVAR(MainButton)) exitWith{}; if (isNil QGVAR(Buttons)) exitWith{}; diff --git a/addons/interaction/functions/fnc_onButtonUp.sqf b/addons/interaction/functions/fnc_onButtonUp.sqf index 151ce67c98..da1b55b613 100644 --- a/addons/interaction/functions/fnc_onButtonUp.sqf +++ b/addons/interaction/functions/fnc_onButtonUp.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"]; +private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_statement", "_condition", "_conditionShow", "_distance"]; _player = ACE_player; _vehicle = vehicle _player; @@ -34,11 +34,9 @@ _action = if (_index != -1 && {_index < _count}) then { closeDialog 0; - _statement = _action select 1; _condition = _action select 2; _conditionShow = _action select 7; -_exceptions = _action select 8;// _distance = _action select 9; if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then { diff --git a/addons/interaction/functions/fnc_onClick.sqf b/addons/interaction/functions/fnc_onClick.sqf index 6f9882281f..a240823710 100644 --- a/addons/interaction/functions/fnc_onClick.sqf +++ b/addons/interaction/functions/fnc_onClick.sqf @@ -14,7 +14,7 @@ * Public: No */ #include "script_component.hpp" -private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_subMenu", "_statement", "_condition", "_conditionShow", "_exceptions", "_distance"]; +private ["_player", "_vehicle", "_target", "_count", "_index", "_action", "_subMenu", "_statement", "_condition", "_conditionShow", "_distance"]; _player = ACE_player; _vehicle = vehicle _player; @@ -43,7 +43,6 @@ if (count _subMenu < 2) then { _statement = _action select 1; _condition = _action select 2; _conditionShow = _action select 7; - _exceptions = _action select 8;// _distance = _action select 9; if ((_distance == 0 || {[GVAR(Target), _distance] call FUNC(isInRange)}) && {[_target, _player] call _condition} && {[_target, _player] call _conditionShow}) then { diff --git a/addons/interaction/functions/fnc_openDoor.sqf b/addons/interaction/functions/fnc_openDoor.sqf index 3e776f3538..6b34c49ca9 100644 --- a/addons/interaction/functions/fnc_openDoor.sqf +++ b/addons/interaction/functions/fnc_openDoor.sqf @@ -16,19 +16,17 @@ */ #include "script_component.hpp" -private ["_info", "_house", "_door", "_animations", "_lockedVariable"]; +private ["_info", "_animations", "_phase", "_position", "_time", "_usedMouseWheel"]; _info = [2] call FUNC(getDoor); -_house = _info select 0; -_door = _info select 1; +EXPLODE_2_PVT(_info,_house,_door); if (isNull _house) exitWith {}; _animations = [_house, _door] call FUNC(getDoorAnimations); -_lockedVariable = _animations select 1; -_animations = _animations select 0; +EXPLODE_2_PVT(_animations,_animations,_lockedVariable); if (count _animations == 0) exitWith {}; diff --git a/addons/interaction/functions/fnc_openMenuSelectUI.sqf b/addons/interaction/functions/fnc_openMenuSelectUI.sqf index e755869ed1..e1b6a30df1 100644 --- a/addons/interaction/functions/fnc_openMenuSelectUI.sqf +++ b/addons/interaction/functions/fnc_openMenuSelectUI.sqf @@ -16,24 +16,22 @@ */ #include "script_component.hpp" -private ["_unit", "_vehicle", "_cargo"]; +PARAMS_2(_unit,_vehicle); -_unit = _this select 0; -_vehicle = _this select 1; +private ["_cargo", "_actions"]; -// allow interaction with all cargo slots and all ffv slots +// Allow interaction with all cargo slots and all FFV slots _cargo = [_vehicle, ["cargo", "ffv"], true] call EFUNC(common,getVehicleCrew); -// you can only interact if you are in cargo or ffv yourself. exit otherwise +// You can only interact if you are in cargo or FFV yourself. exit otherwise if !(_unit in _cargo) exitWith {}; GVAR(InteractionMenu_Crew) = _cargo; -// prepare: add header and "OK" button to select menu -private "_actions"; +// Prepare: add header and "OK" button to select menu _actions = [localize "STR_ACE_Interaction_InteractionMenu", localize "STR_ACE_Interaction_Interact"] call FUNC(prepareSelectMenu); -// prepare: add all cargo units as options to select menu +// Prepare: add all cargo units as options to select menu { if (_x != _unit) then { _actions = [ @@ -45,7 +43,7 @@ _actions = [localize "STR_ACE_Interaction_InteractionMenu", localize "STR_ACE_In }; } forEach _cargo; -// open select menu +// Open select menu [ _actions, { diff --git a/addons/interaction/functions/fnc_openSelectMenu.sqf b/addons/interaction/functions/fnc_openSelectMenu.sqf index 13e02fb044..a12ceefa6c 100644 --- a/addons/interaction/functions/fnc_openSelectMenu.sqf +++ b/addons/interaction/functions/fnc_openSelectMenu.sqf @@ -27,11 +27,14 @@ if (!(profileNamespace getVariable [QGVAR(FlowMenu), false])) then { GVAR(SelectAccept) = _this select 1; GVAR(SelectCancel) = _this select 2; - buttonSetAction [8855, QUOTE( call GVAR(SelectCancel); )]; // cancel - buttonSetAction [8860, QUOTE( (call compile (lbData [ARR_2(8866, lbCurSel 8866)])) call GVAR(SelectAccept); )]; // accept + buttonSetAction [8855, QUOTE( call GVAR(SelectCancel); )]; // Cancel + buttonSetAction [8860, QUOTE( (call compile (lbData [ARR_2(8866, lbCurSel 8866)])) call GVAR(SelectAccept); )]; // Accept lbSetCurSel [8866, 0]; }else{ - _customActions = _this select 0; + PARAMS_1(_customActions); + + private ["_count", "_action"]; + _count = count _customActions; if (_count == 0) exitWith {}; _customActions call FUNC(sortOptionsByPriority); diff --git a/addons/interaction/functions/fnc_prepareSelectMenu.sqf b/addons/interaction/functions/fnc_prepareSelectMenu.sqf index f43ec75c4e..05b1bc8e35 100644 --- a/addons/interaction/functions/fnc_prepareSelectMenu.sqf +++ b/addons/interaction/functions/fnc_prepareSelectMenu.sqf @@ -16,13 +16,14 @@ */ #include "script_component.hpp" -private ["_buttonAction", "_header", "_buttonText", "_cancelButton"]; +PARAMS_2(_header,_buttonText); + closeDialog 0; -_header = _this select 0; -_buttonText = _this select 1; + if (isNil "_buttonText" or {_buttonText == ""}) then { _buttonText = localize "STR_ACE_Interaction_MakeSelection"; }; + createDialog "RscACE_SelectAnItem"; ctrlSetText [8860, _buttonText]; ctrlSetText [8870, _header]; diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf index 580f687f64..946a5118be 100644 --- a/addons/interaction/functions/fnc_push.sqf +++ b/addons/interaction/functions/fnc_push.sqf @@ -17,8 +17,7 @@ #include "script_component.hpp" -_boat = _this select 0; -_velocity = _this select 1; +PARAMS_2(_boat,_velocity); if !(local _boat) exitWith { [_this, QUOTE(FUNC(push)), _boat] call EFUNC(common,execRemoteFnc); diff --git a/addons/interaction/functions/fnc_removeTag.sqf b/addons/interaction/functions/fnc_removeTag.sqf index d1a16bf88b..b017c203b2 100644 --- a/addons/interaction/functions/fnc_removeTag.sqf +++ b/addons/interaction/functions/fnc_removeTag.sqf @@ -16,6 +16,8 @@ #include "script_component.hpp" 0 spawn { + private ["_index"]; + waitUntil {player getVariable ["ACE_Name", ""] != ""}; _name = player getVariable ["ACE_Name", ""]; diff --git a/addons/interaction/functions/fnc_sendAway.sqf b/addons/interaction/functions/fnc_sendAway.sqf index 1a48725644..0dd106de08 100644 --- a/addons/interaction/functions/fnc_sendAway.sqf +++ b/addons/interaction/functions/fnc_sendAway.sqf @@ -18,9 +18,9 @@ #define DISTANCE 50 #define RADIUS 10 -private ["_unit", "_chance", "_x"]; +PARAMS_1(_unit); -_unit = _this select 0; +private ["_chance", "_x"]; ACE_player playActionNow "GestureGo"; diff --git a/addons/interaction/functions/fnc_showMouseHint.sqf b/addons/interaction/functions/fnc_showMouseHint.sqf index a64114d009..e3a9b45f94 100644 --- a/addons/interaction/functions/fnc_showMouseHint.sqf +++ b/addons/interaction/functions/fnc_showMouseHint.sqf @@ -19,9 +19,10 @@ #define GUI_GRID_W (0.025) #define GUI_GRID_H (0.04) -private ["_leftClick", "_rightClick", "_scroll"]; -_leftClick = _this select 0; -_rightClick = _this select 1; + +private ["_scroll", "_display"]; + +PARAMS_2(_leftClick,_rightClick); _scroll = ""; if (count _this > 2) then { _scroll = _this select 2; @@ -43,9 +44,8 @@ if (isNull _display) exitWith{}; if (_scroll == "") exitWith { (_display displayCtrl 1002) ctrlShow false; (_display displayCtrl 1202) ctrlShow false; - - (_display displayCtrl 1001) ctrlSetPosition [21 * GUI_GRID_W, 18 * GUI_GRID_H, 8 * GUI_GRID_W, 1.5 * GUI_GRID_H]; - (_display displayCtrl 1201) ctrlSetPosition [20 * GUI_GRID_W, 18.5 * GUI_GRID_H, 1 * GUI_GRID_W, 1 * GUI_GRID_H]; + (_display displayCtrl 1001) ctrlSetPosition [21 * GUI_GRID_W, 18 * GUI_GRID_H, 8 * GUI_GRID_W, 1.5 * GUI_GRID_H]; + (_display displayCtrl 1201) ctrlSetPosition [20 * GUI_GRID_W, 18.5 * GUI_GRID_H, 1 * GUI_GRID_W, 1 * GUI_GRID_H]; (_display displayCtrl 1001) ctrlCommit 0; (_display displayCtrl 1201) ctrlCommit 0; }; diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index f18c9c2c30..510fa4497f 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -28,7 +28,7 @@ if (_target != ACE_player) exitWith { addCamShake [4, 0.5, 5]; -private "_message"; +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")]; diff --git a/addons/interaction/functions/fnc_updateTooltipPosition.sqf b/addons/interaction/functions/fnc_updateTooltipPosition.sqf index c194102b41..27eb36e976 100644 --- a/addons/interaction/functions/fnc_updateTooltipPosition.sqf +++ b/addons/interaction/functions/fnc_updateTooltipPosition.sqf @@ -17,12 +17,14 @@ */ #include "script_component.hpp" +PARAMS_3(_tooltip,_coordinateX,_coordinateY); + disableSerialization; -_ctrl = ctrlParent (_this select 0) displayCtrl 40; +_ctrl = ctrlParent _tooltip displayCtrl 40; _ctrl ctrlSetPosition [ - (_this select 1) + 0.01 * safezoneW, - (_this select 2) + 0.01 * safezoneH, + _coordinateX + 0.01 * safezoneW, + _coordinateY + 0.01 * safezoneH, 2.0 / 16 * safezoneW, 0.3 / 9 * safezoneH ]; From 1a2e7d0596e0fb2bf7746839882d52aa6f10ed3a Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 May 2015 22:25:48 +0200 Subject: [PATCH 0131/1101] Tabs to Spaces, Removed unused GUI class --- addons/interaction/CfgVehicles.hpp | 1084 ++++++++++++++-------------- addons/interaction/Menu_Config.hpp | 324 +++++---- addons/interaction/README.md | 1 - addons/interaction/config.cpp | 30 +- 4 files changed, 716 insertions(+), 723 deletions(-) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 5548311718..5afaf21c28 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,566 +1,564 @@ class CfgVehicles { - - class Module_F; - class ACE_ModuleInteraction: Module_F { - author = "$STR_ACE_Common_ACETeam"; - category = "ACE"; - displayName = "Interaction System"; - function = "ACE_Interaction_fnc_moduleInteraction"; - scope = 2; - isGlobal = 1; - icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); - class Arguments { - class EnableTeamManagement { - displayName = "Enable Team Management"; - description = "Should players be allowed to use the Team Management Menu? Default: Yes"; - typeName = "BOOL"; - class values { - class Yes { default = 1; name = "Yes"; value = 1;}; - class No { name = "No"; value = 0; }; + class Module_F; + class ACE_ModuleInteraction: Module_F { + author = "$STR_ACE_Common_ACETeam"; + category = "ACE"; + displayName = "Interaction System"; + function = "ACE_Interaction_fnc_moduleInteraction"; + scope = 2; + isGlobal = 1; + icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); + class Arguments { + class EnableTeamManagement { + displayName = "Enable Team Management"; + description = "Should players be allowed to use the Team Management Menu? Default: Yes"; + typeName = "BOOL"; + class values { + class Yes { default = 1; name = "Yes"; value = 1;}; + class No { name = "No"; value = 0; }; + }; + }; }; - }; - }; - }; - - class Man; - class CAManBase: Man { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - distance = 4; - condition = QUOTE(true); - statement = ""; - icon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa"; - selection = "pelvis"; - - class ACE_TeamManagement { - displayName = "$STR_ACE_Interaction_TeamManagement"; - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {GVAR(EnableTeamManagement)}); - statement = ""; - showDisabled = 0; - priority = 3.2; - icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "M"; - - class ACE_AssignTeamRed { - displayName = "$STR_ACE_Interaction_AssignTeamRed"; - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); - statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_red_ca.paa); - priority = 2.4; - hotkey = "R"; - }; - class ACE_AssignTeamGreen { - displayName = "$STR_ACE_Interaction_AssignTeamGreen"; - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); - statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_green_ca.paa); - priority = 2.3; - hotkey = "G"; - }; - class ACE_AssignTeamBlue { - displayName = "$STR_ACE_Interaction_AssignTeamBlue"; - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); - statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_blue_ca.paa); - priority = 2.2; - hotkey = "B"; - }; - class ACE_AssignTeamYellow { - displayName = "$STR_ACE_Interaction_AssignTeamYellow"; - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); - statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_yellow_ca.paa); - priority = 2.1; - hotkey = "Y"; - }; - - class ACE_UnassignTeam { - displayName = "$STR_ACE_Interaction_LeaveTeam"; - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {assignedTeam _target != 'MAIN'}); - statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); - showDisabled = 1; - icon = PATHTOF(UI\team\team_white_ca.paa); - priority = 2.5; - hotkey = "N"; - }; - }; - - class ACE_JoinGroup { - displayName = "$STR_ACE_Interaction_JoinGroup"; - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinGroup)); - statement = QUOTE([_player] joinSilent group _target); - showDisabled = 0; - priority = 2.6; - icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "J"; - }; - - class ACE_GetDown { - displayName = "$STR_ACE_Interaction_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"; - 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"; - 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; - priority = 2.5; - }; - }; - class ACE_Torso { - displayName = "$STR_ACE_Interaction_Torso"; - selection = "spine3"; - distance = 1.50; - condition = ""; - statement = ""; - }; - class ACE_Head { - displayName = "$STR_ACE_Interaction_Head"; - selection = "pilot"; - distance = 1.50; - condition = ""; - statement = ""; - }; - class ACE_ArmLeft { - displayName = "$STR_ACE_Interaction_ArmLeft"; - selection = "LeftForeArm"; - distance = 1.50; - condition = ""; - statement = ""; - }; - class ACE_ArmRight { - displayName = "$STR_ACE_Interaction_ArmRight"; - selection = "RightForeArm"; - distance = 1.50; - condition = ""; - statement = ""; - }; - class ACE_LegLeft { - displayName = "$STR_ACE_Interaction_LegLeft"; - selection = "LKnee"; - distance = 1.50; - condition = ""; - statement = ""; - }; - class ACE_LegRight { - displayName = "$STR_ACE_Interaction_LegRight"; - selection = "RKnee"; - distance = 1.50; - condition = ""; - statement = ""; - }; - class ACE_Weapon { - displayName = "$STR_ACE_Interaction_Weapon"; - position = QUOTE(call FUNC(getWeaponPos)); - distance = 1.50; - condition = ""; - statement = ""; - }; - - class ACE_TapShoulderRight { - displayName = "$STR_ACE_Interaction_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"; - selection = "leftshoulder"; - distance = 2.0; - condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); - statement = QUOTE([ARR_3(_player, _target, 1)] call DFUNC(tapShoulder)); - }; }; - class ACE_SelfActions { - class ACE_TeamManagement { - displayName = "$STR_ACE_Interaction_TeamManagement"; - condition = QUOTE(GVAR(EnableTeamManagement)); - exceptions[] = {"isNotInside"}; - statement = ""; - showDisabled = 1; - priority = 3.2; - icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "M"; + class Man; + class CAManBase: Man { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + distance = 4; + condition = QUOTE(true); + statement = ""; + icon = "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa"; + selection = "pelvis"; - class ACE_JoinTeamRed { - displayName = "$STR_ACE_Interaction_JoinTeamRed"; - condition = QUOTE(true); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam)); - showDisabled = 1; - priority = 2.4; - icon = PATHTOF(UI\team\team_red_ca.paa); - hotkey = "R"; - }; - class ACE_JoinTeamGreen { - displayName = "$STR_ACE_Interaction_JoinTeamGreen"; - condition = QUOTE(true); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam)); - showDisabled = 1; - priority = 2.3; - icon = PATHTOF(UI\team\team_green_ca.paa); - hotkey = "G"; - }; - class ACE_JoinTeamBlue { - displayName = "$STR_ACE_Interaction_JoinTeamBlue"; - condition = QUOTE(true); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam)); - showDisabled = 1; - priority = 2.2; - icon = PATHTOF(UI\team\team_blue_ca.paa); - hotkey = "B"; - }; - class ACE_JoinTeamYellow { - displayName = "$STR_ACE_Interaction_JoinTeamYellow"; - condition = QUOTE(true); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam)); - showDisabled = 1; - priority = 2.1; - icon = PATHTOF(UI\team\team_yellow_ca.paa); - hotkey = "Y"; + class ACE_TeamManagement { + displayName = "$STR_ACE_Interaction_TeamManagement"; + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {GVAR(EnableTeamManagement)}); + statement = ""; + showDisabled = 0; + priority = 3.2; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "M"; + + class ACE_AssignTeamRed { + displayName = "$STR_ACE_Interaction_AssignTeamRed"; + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); + statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_red_ca.paa); + priority = 2.4; + hotkey = "R"; + }; + class ACE_AssignTeamGreen { + displayName = "$STR_ACE_Interaction_AssignTeamGreen"; + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); + statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_green_ca.paa); + priority = 2.3; + hotkey = "G"; + }; + class ACE_AssignTeamBlue { + displayName = "$STR_ACE_Interaction_AssignTeamBlue"; + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); + statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_blue_ca.paa); + priority = 2.2; + hotkey = "B"; + }; + class ACE_AssignTeamYellow { + displayName = "$STR_ACE_Interaction_AssignTeamYellow"; + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); + statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_yellow_ca.paa); + priority = 2.1; + hotkey = "Y"; + }; + + class ACE_UnassignTeam { + displayName = "$STR_ACE_Interaction_LeaveTeam"; + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {assignedTeam _target != 'MAIN'}); + statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); + showDisabled = 1; + icon = PATHTOF(UI\team\team_white_ca.paa); + priority = 2.5; + hotkey = "N"; + }; + }; + + class ACE_JoinGroup { + displayName = "$STR_ACE_Interaction_JoinGroup"; + condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinGroup)); + statement = QUOTE([_player] joinSilent group _target); + showDisabled = 0; + priority = 2.6; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "J"; + }; + + class ACE_GetDown { + displayName = "$STR_ACE_Interaction_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"; + 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"; + 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; + priority = 2.5; + }; + }; + class ACE_Torso { + displayName = "$STR_ACE_Interaction_Torso"; + selection = "spine3"; + distance = 1.50; + condition = ""; + statement = ""; + }; + class ACE_Head { + displayName = "$STR_ACE_Interaction_Head"; + selection = "pilot"; + distance = 1.50; + condition = ""; + statement = ""; + }; + class ACE_ArmLeft { + displayName = "$STR_ACE_Interaction_ArmLeft"; + selection = "LeftForeArm"; + distance = 1.50; + condition = ""; + statement = ""; + }; + class ACE_ArmRight { + displayName = "$STR_ACE_Interaction_ArmRight"; + selection = "RightForeArm"; + distance = 1.50; + condition = ""; + statement = ""; + }; + class ACE_LegLeft { + displayName = "$STR_ACE_Interaction_LegLeft"; + selection = "LKnee"; + distance = 1.50; + condition = ""; + statement = ""; + }; + class ACE_LegRight { + displayName = "$STR_ACE_Interaction_LegRight"; + selection = "RKnee"; + distance = 1.50; + condition = ""; + statement = ""; + }; + class ACE_Weapon { + displayName = "$STR_ACE_Interaction_Weapon"; + position = QUOTE(call FUNC(getWeaponPos)); + distance = 1.50; + condition = ""; + statement = ""; + }; + + class ACE_TapShoulderRight { + displayName = "$STR_ACE_Interaction_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"; + selection = "leftshoulder"; + distance = 2.0; + condition = QUOTE([ARR_2(_player, _target)] call DFUNC(canTapShoulder)); + statement = QUOTE([ARR_3(_player, _target, 1)] call DFUNC(tapShoulder)); + }; }; - class ACE_LeaveTeam { - displayName = "$STR_ACE_Interaction_LeaveTeam"; - condition = QUOTE(assignedTeam _player != 'MAIN'); - exceptions[] = {"isNotInside"}; - statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam)); - showDisabled = 1; - priority = 2.5; - icon = PATHTOF(UI\team\team_white_ca.paa); - hotkey = "N"; - }; - class ACE_BecomeLeader { - displayName = "$STR_ACE_Interaction_BecomeLeader"; - condition = QUOTE(_this call DFUNC(canBecomeLeader)); - exceptions[] = {"isNotInside"}; - statement = QUOTE(_this call DFUNC(doBecomeLeader)); - showDisabled = 1; - priority = 1.0; - icon = PATHTOF(UI\team\team_white_ca.paa); - hotkey = "L"; - }; - class ACE_LeaveGroup { - displayName = "$STR_ACE_Interaction_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;); - showDisabled = 1; - priority = 1.2; - icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "M"; - }; - }; + class ACE_SelfActions { + class ACE_TeamManagement { + displayName = "$STR_ACE_Interaction_TeamManagement"; + condition = QUOTE(GVAR(EnableTeamManagement)); + exceptions[] = {"isNotInside"}; + statement = ""; + showDisabled = 1; + priority = 3.2; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "M"; - class ACE_Gestures { - displayName = "$STR_ACE_Interaction_Gestures"; - condition = "canStand _target"; - statement = ""; - showDisabled = 1; - priority = 3.5; - icon = PATHTOF(UI\gestures_ca.paa); - hotkey = "G"; + class ACE_JoinTeamRed { + displayName = "$STR_ACE_Interaction_JoinTeamRed"; + condition = QUOTE(true); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam)); + showDisabled = 1; + priority = 2.4; + icon = PATHTOF(UI\team\team_red_ca.paa); + hotkey = "R"; + }; + class ACE_JoinTeamGreen { + displayName = "$STR_ACE_Interaction_JoinTeamGreen"; + condition = QUOTE(true); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam)); + showDisabled = 1; + priority = 2.3; + icon = PATHTOF(UI\team\team_green_ca.paa); + hotkey = "G"; + }; + class ACE_JoinTeamBlue { + displayName = "$STR_ACE_Interaction_JoinTeamBlue"; + condition = QUOTE(true); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam)); + showDisabled = 1; + priority = 2.2; + icon = PATHTOF(UI\team\team_blue_ca.paa); + hotkey = "B"; + }; + class ACE_JoinTeamYellow { + displayName = "$STR_ACE_Interaction_JoinTeamYellow"; + condition = QUOTE(true); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam)); + showDisabled = 1; + priority = 2.1; + icon = PATHTOF(UI\team\team_yellow_ca.paa); + hotkey = "Y"; + }; - /*class ACE_Gesture_Advance { - displayName = "$STR_ACE_Interaction_Gestures_Attack"; - condition = "canStand _target"; - statement = "_target playActionNow 'gestureAttack';"; - showDisabled = 1; - priority = 2.0; - };*/ - class ACE_Gesture_Advance { - displayName = "$STR_ACE_Interaction_Gestures_Advance"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureAdvance';); - showDisabled = 1; - priority = 1.9; - hotkey = "1"; - }; - class ACE_Gesture_Go { - displayName = "$STR_ACE_Interaction_Gestures_Go"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2);); - showDisabled = 1; - priority = 1.8; - hotkey = "2"; - }; - class ACE_Gesture_Follow { - displayName = "$STR_ACE_Interaction_Gestures_Follow"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureFollow';); - showDisabled = 1; - priority = 1.7; - hotkey = "3"; - }; - /*class ACE_Gesture_Point { - displayName = "$STR_ACE_Interaction_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"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureUp';); - showDisabled = 1; - priority = 1.5; - hotkey = "4"; - }; - class ACE_Gesture_Cover { - displayName = "$STR_ACE_Interaction_Gestures_Cover"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureCover';); - showDisabled = 1; - priority = 1.4; - hotkey = "5"; - }; - class ACE_Gesture_CeaseFire { - displayName = "$STR_ACE_Interaction_Gestures_Cease_Fire"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureCeaseFire';); - showDisabled = 1; - priority = 1.3; - hotkey = "6"; - }; - class ACE_Gesture_Freeze { - displayName = "$STR_ACE_Interaction_Gestures_Freeze"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureFreeze';); - showDisabled = 1; - priority = 1.2; - hotkey = "7"; - }; - class ACE_Gesture_Yes { - displayName = "$STR_ACE_Interaction_Gestures_Yes"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2);); - showDisabled = 1; - priority = 1.1; - hotkey = "8"; - }; - class ACE_Gesture_No { - displayName = "$STR_ACE_Interaction_Gestures_No"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureNo';); - showDisabled = 1; - priority = 1.0; - hotkey = "9"; - }; - class ACE_Gesture_Hi { - displayName = "$STR_ACE_Interaction_Gestures_Hi"; - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3);); - showDisabled = 1; - priority = 0.9; - hotkey = "0"; - }; - }; + class ACE_LeaveTeam { + displayName = "$STR_ACE_Interaction_LeaveTeam"; + condition = QUOTE(assignedTeam _player != 'MAIN'); + exceptions[] = {"isNotInside"}; + statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam)); + showDisabled = 1; + priority = 2.5; + icon = PATHTOF(UI\team\team_white_ca.paa); + hotkey = "N"; + }; + class ACE_BecomeLeader { + displayName = "$STR_ACE_Interaction_BecomeLeader"; + condition = QUOTE(_this call DFUNC(canBecomeLeader)); + exceptions[] = {"isNotInside"}; + statement = QUOTE(_this call DFUNC(doBecomeLeader)); + showDisabled = 1; + priority = 1.0; + icon = PATHTOF(UI\team\team_white_ca.paa); + hotkey = "L"; + }; + class ACE_LeaveGroup { + displayName = "$STR_ACE_Interaction_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;); + showDisabled = 1; + priority = 1.2; + icon = PATHTOF(UI\team\team_management_ca.paa); + hotkey = "M"; + }; + }; - class ACE_Equipment { - displayName = "$STR_ACE_Interaction_Equipment"; - condition = QUOTE(true); - exceptions[] = {"isNotInside","notOnMap"}; - statement = ""; - showDisabled = 1; - priority = 4.5; - icon = ""; // @todo - hotkey = "E"; - }; - }; - }; + class ACE_Gestures { + displayName = "$STR_ACE_Interaction_Gestures"; + condition = "canStand _target"; + statement = ""; + showDisabled = 1; + priority = 3.5; + icon = PATHTOF(UI\gestures_ca.paa); + hotkey = "G"; - class LandVehicle; - class Car: LandVehicle { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - selection = ""; - distance = 10; - condition = "true"; - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; - class ACE_SelfActions { - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; - class Tank: LandVehicle { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - selection = ""; - distance = 10; - condition = "true"; - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; - class ACE_SelfActions { - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; + /*class ACE_Gesture_Advance { + displayName = "$STR_ACE_Interaction_Gestures_Attack"; + condition = "canStand _target"; + statement = "_target playActionNow 'gestureAttack';"; + showDisabled = 1; + priority = 2.0; + };*/ + class ACE_Gesture_Advance { + displayName = "$STR_ACE_Interaction_Gestures_Advance"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow 'gestureAdvance';); + showDisabled = 1; + priority = 1.9; + hotkey = "1"; + }; + class ACE_Gesture_Go { + displayName = "$STR_ACE_Interaction_Gestures_Go"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2);); + showDisabled = 1; + priority = 1.8; + hotkey = "2"; + }; + class ACE_Gesture_Follow { + displayName = "$STR_ACE_Interaction_Gestures_Follow"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow 'gestureFollow';); + showDisabled = 1; + priority = 1.7; + hotkey = "3"; + }; + /*class ACE_Gesture_Point { + displayName = "$STR_ACE_Interaction_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"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow 'gestureUp';); + showDisabled = 1; + priority = 1.5; + hotkey = "4"; + }; + class ACE_Gesture_Cover { + displayName = "$STR_ACE_Interaction_Gestures_Cover"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow 'gestureCover';); + showDisabled = 1; + priority = 1.4; + hotkey = "5"; + }; + class ACE_Gesture_CeaseFire { + displayName = "$STR_ACE_Interaction_Gestures_Cease_Fire"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow 'gestureCeaseFire';); + showDisabled = 1; + priority = 1.3; + hotkey = "6"; + }; + class ACE_Gesture_Freeze { + displayName = "$STR_ACE_Interaction_Gestures_Freeze"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow 'gestureFreeze';); + showDisabled = 1; + priority = 1.2; + hotkey = "7"; + }; + class ACE_Gesture_Yes { + displayName = "$STR_ACE_Interaction_Gestures_Yes"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2);); + showDisabled = 1; + priority = 1.1; + hotkey = "8"; + }; + class ACE_Gesture_No { + displayName = "$STR_ACE_Interaction_Gestures_No"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow 'gestureNo';); + showDisabled = 1; + priority = 1.0; + hotkey = "9"; + }; + class ACE_Gesture_Hi { + displayName = "$STR_ACE_Interaction_Gestures_Hi"; + condition = QUOTE(canStand _target); + statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3);); + showDisabled = 1; + priority = 0.9; + hotkey = "0"; + }; + }; - class Air; - class Helicopter: Air { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - selection = ""; - distance = 10; - condition = "true"; - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + class ACE_Equipment { + displayName = "$STR_ACE_Interaction_Equipment"; + condition = QUOTE(true); + exceptions[] = {"isNotInside","notOnMap"}; + statement = ""; + showDisabled = 1; + priority = 4.5; + icon = ""; // @todo + hotkey = "E"; + }; }; - }; }; - class ACE_SelfActions { - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; - class Plane: Air { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - selection = ""; - distance = 10; - condition = "true"; - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + + class LandVehicle; + class Car: LandVehicle { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + selection = ""; + distance = 10; + condition = "true"; + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; }; - }; - }; - class ACE_SelfActions { - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; - - class Ship; - class Ship_F: Ship { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - selection = ""; - distance = 10; - condition = "true"; - - class ACE_Push { - displayName = "$STR_ACE_Interaction_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);); - showDisabled = 0; - priority = -1; + class ACE_SelfActions { + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; }; - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + class Tank: LandVehicle { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + selection = ""; + distance = 10; + condition = "true"; + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; }; - }; - }; - class ACE_SelfActions { - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; - - class StaticWeapon: LandVehicle { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - selection = "gunnerview"; - distance = 2; - condition = "true"; - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + class ACE_SelfActions { + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; }; - }; }; - class ACE_SelfActions { - class ACE_Passengers { - displayName = "$STR_ACE_Interaction_Passengers"; - condition = "true"; - statement = ""; - insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); - }; - }; - }; - class thingX; - class ReammoBox_F: thingX { - class ACE_Actions { - class ACE_MainActions { - displayName = "$STR_ACE_Interaction_MainAction"; - selection = ""; - distance = 2; - condition = "true"; - }; + class Air; + class Helicopter: Air { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + selection = ""; + distance = 10; + condition = "true"; + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + class ACE_SelfActions { + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + class Plane: Air { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + selection = ""; + distance = 10; + condition = "true"; + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + class ACE_SelfActions { + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; }; - class ACE_SelfActions {}; - }; + class Ship; + class Ship_F: Ship { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + selection = ""; + distance = 10; + condition = "true"; + + class ACE_Push { + displayName = "$STR_ACE_Interaction_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);); + showDisabled = 0; + priority = -1; + }; + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + class ACE_SelfActions { + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + + class StaticWeapon: LandVehicle { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + selection = "gunnerview"; + distance = 2; + condition = "true"; + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + class ACE_SelfActions { + class ACE_Passengers { + displayName = "$STR_ACE_Interaction_Passengers"; + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + + class thingX; + class ReammoBox_F: thingX { + class ACE_Actions { + class ACE_MainActions { + displayName = "$STR_ACE_Interaction_MainAction"; + selection = ""; + distance = 2; + condition = "true"; + }; + }; + class ACE_SelfActions {}; + }; }; diff --git a/addons/interaction/Menu_Config.hpp b/addons/interaction/Menu_Config.hpp index 38f12066e0..790874a1ac 100644 --- a/addons/interaction/Menu_Config.hpp +++ b/addons/interaction/Menu_Config.hpp @@ -1,46 +1,44 @@ - #define HSPACE 0.5-2.0/16/2 #define VSPACE 0.5-0.3/9/2 -class RscStructuredText; class ACE_Interaction_Button_Base { - tooltip = ""; - //action = "ACE_Interaction_isMousePressed = true;(findDisplay 1713999) closeDisplay 1;_action = ACE_Interaction_Buttons select ACE_Interaction_SelectedButton;ACE_Interaction_SelectedButton = -1; if (call (_action select 2)) then {call (_action select 1)};"; - action = ""; + tooltip = ""; + //action = "ACE_Interaction_isMousePressed = true;(findDisplay 1713999) closeDisplay 1;_action = ACE_Interaction_Buttons select ACE_Interaction_SelectedButton;ACE_Interaction_SelectedButton = -1; if (call (_action select 2)) then {call (_action select 1)};"; + action = ""; - idc = -1; - access = 0; - type = 1; - text = ""; - font = "PuristaMedium"; - sizeEx = "0.8 / 40 / (getResolution select 5)"; - shadow = 2; + idc = -1; + access = 0; + type = 1; + text = ""; + font = "PuristaMedium"; + sizeEx = "0.8 / 40 / (getResolution select 5)"; + shadow = 2; - style = 2; - x = 0; - y = 0; - w = 2.0 / 16 * safezoneW; - h = 0.3 / 9 * safezoneH; + style = 2; + x = 0; + y = 0; + w = 2.0 / 16 * safezoneW; + h = 0.3 / 9 * safezoneH; - offsetX = 0.003; - offsetY = 0.003; - offsetPressedX = 0.002; - offsetPressedY = 0.002; - borderSize = 0; + offsetX = 0.003; + offsetY = 0.003; + offsetPressedX = 0.002; + offsetPressedY = 0.002; + borderSize = 0; - colorText[] = {1,1,1,1}; - colorDisabled[] = {0.5,0.5,0.5,1}; - colorBackground[] = {0,0,0,0.8}; - colorBackgroundDisabled[] = {0,0,0,0.8}; - colorBackgroundActive[] = {1,1,1,0}; - colorFocused[] = {1,1,1,1}; - colorShadow[] = {0,0,0,0}; - colorBorder[] = {1,1,1,0.8}; + colorText[] = {1,1,1,1}; + colorDisabled[] = {0.5,0.5,0.5,1}; + colorBackground[] = {0,0,0,0.8}; + colorBackgroundDisabled[] = {0,0,0,0.8}; + colorBackgroundActive[] = {1,1,1,0}; + colorFocused[] = {1,1,1,1}; + colorShadow[] = {0,0,0,0}; + colorBorder[] = {1,1,1,0.8}; - soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.09,1}; - soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.09,1}; - soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; - soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1}; + soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.09,1}; + soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.09,1}; + soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; + soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1}; }; class RscListbox; @@ -49,86 +47,86 @@ class RscText; #define X_OFFSET 0.2 class RscACE_SelectAnItem { - idd = 8854; - movingEnable = 0; - class controls { - class back:IGUIBack { - x = X_OFFSET; - y = 0; - w = 0.6; - h = 0.71; - colorBackground[] = {0, 0, 0, 0.2}; - }; - class header: RscText{ - idc = 8870; - x = X_OFFSET + 0.005; - y = 0.005; - w = 0.59; - h = 0.05; - style = 0x02; - text = ""; - }; - class itemList:RscListBox { - onMouseButtonDblClick = "_this call ACE_Interaction_fnc_onSelectMenuDblClick"; - idc = 8866; - x = X_OFFSET + 0.005; - w = 0.59; - h = 0.54; - y = 0.06; - }; + idd = 8854; + movingEnable = 0; + class controls { + class back:IGUIBack { + x = X_OFFSET; + y = 0; + w = 0.6; + h = 0.71; + colorBackground[] = {0, 0, 0, 0.2}; + }; + class header: RscText{ + idc = 8870; + x = X_OFFSET + 0.005; + y = 0.005; + w = 0.59; + h = 0.05; + style = 0x02; + text = ""; + }; + class itemList:RscListBox { + onMouseButtonDblClick = "_this call ACE_Interaction_fnc_onSelectMenuDblClick"; + idc = 8866; + x = X_OFFSET + 0.005; + w = 0.59; + h = 0.54; + y = 0.06; + }; - class cancelBtnBackground: ACE_Interaction_Button_Base { - type = 0; - style = 2; - idc = -1; - colorBackground[] = {0,0,0,0.5}; - colorBackgroundDisabled[] = {0,0,0,0.5}; - x = X_OFFSET + 0.005; - w = 0.15; - h = 0.1; - y = 0.605; - }; - class approveBtnBackground: ACE_Interaction_Button_Base { - type = 0; - style = 2; - idc = -1; - colorBackground[] = {0,0,0,0.5}; - colorBackgroundDisabled[] = {0,0,0,0.5}; - x = X_OFFSET + 0.445; - y = 0.605; - h = 0.1; - w = 0.15; - }; + class cancelBtnBackground: ACE_Interaction_Button_Base { + type = 0; + style = 2; + idc = -1; + colorBackground[] = {0,0,0,0.5}; + colorBackgroundDisabled[] = {0,0,0,0.5}; + x = X_OFFSET + 0.005; + w = 0.15; + h = 0.1; + y = 0.605; + }; + class approveBtnBackground: ACE_Interaction_Button_Base { + type = 0; + style = 2; + idc = -1; + colorBackground[] = {0,0,0,0.5}; + colorBackgroundDisabled[] = {0,0,0,0.5}; + x = X_OFFSET + 0.445; + y = 0.605; + h = 0.1; + w = 0.15; + }; - class cancelBtn: ACE_Interaction_Button_Base { - idc = 8855; - x = X_OFFSET + 0.005; - w = 0.15; - h = 0.1; - y = 0.605; - style = 2; - text = $STR_ACE_Interaction_Back; //$STR_ACE_Interaction_CancelSelection; - action = "call ACE_Interaction_fnc_hideMenu;"; //'Default' call ACE_Interaction_fnc_openMenu; 'Default' call ACE_Interaction_fnc_openMenuSelf; - colorBackground[] = {0,0,0,0}; - colorBackgroundDisabled[] = {0,0,0,0}; - colorBackgroundActive[] = {1,1,1,0.2}; - colorFocused[] = {0,0,0,0}; + class cancelBtn: ACE_Interaction_Button_Base { + idc = 8855; + x = X_OFFSET + 0.005; + w = 0.15; + h = 0.1; + y = 0.605; + style = 2; + text = $STR_ACE_Interaction_Back; //$STR_ACE_Interaction_CancelSelection; + action = "call ACE_Interaction_fnc_hideMenu;"; //'Default' call ACE_Interaction_fnc_openMenu; 'Default' call ACE_Interaction_fnc_openMenuSelf; + colorBackground[] = {0,0,0,0}; + colorBackgroundDisabled[] = {0,0,0,0}; + colorBackgroundActive[] = {1,1,1,0.2}; + colorFocused[] = {0,0,0,0}; + }; + class approveBtn: ACE_Interaction_Button_Base { + idc = 8860; + x = X_OFFSET + 0.445; + y = 0.605; + h = 0.1; + w = 0.15; + style = 2; + text = $STR_ACE_Interaction_MakeSelection; + action = "call ACE_Interaction_fnc_hideMenu;"; + colorBackground[] = {0,0,0,0}; + colorBackgroundDisabled[] = {0,0,0,0}; + colorBackgroundActive[] = {1,1,1,0.2}; + colorFocused[] = {0,0,0,0}; + }; }; - class approveBtn: ACE_Interaction_Button_Base { - idc = 8860; - x = X_OFFSET + 0.445; - y = 0.605; - h = 0.1; - w = 0.15; - style = 2; - text = $STR_ACE_Interaction_MakeSelection; - action = "call ACE_Interaction_fnc_hideMenu;"; - colorBackground[] = {0,0,0,0}; - colorBackgroundDisabled[] = {0,0,0,0}; - colorBackgroundActive[] = {1,1,1,0.2}; - colorFocused[] = {0,0,0,0}; - }; - }; }; #define GUI_GRID_W (0.025) @@ -136,64 +134,64 @@ class RscACE_SelectAnItem { class RscPicture; class RscInteractionIcon: RscPicture { - x = 19.25 * GUI_GRID_W; - y = 15.75 * GUI_GRID_H; - w = 2*GUI_GRID_H; - h = 2*GUI_GRID_H; + x = 19.25 * GUI_GRID_W; + y = 15.75 * GUI_GRID_H; + w = 2*GUI_GRID_H; + h = 2*GUI_GRID_H; }; class RscInteractionHelperIcon: RscInteractionIcon { - x = 20 * GUI_GRID_W; - y = 16 * GUI_GRID_H; - w = GUI_GRID_H; - h = GUI_GRID_H; + x = 20 * GUI_GRID_W; + y = 16 * GUI_GRID_H; + w = GUI_GRID_H; + h = GUI_GRID_H; }; class RscInteractionText: RscText{ - x = 21 * GUI_GRID_W; - y = 16 * GUI_GRID_H; - w = 8 * GUI_GRID_W; - h = 1.5 * GUI_GRID_H; + x = 21 * GUI_GRID_W; + y = 16 * GUI_GRID_H; + w = 8 * GUI_GRID_W; + h = 1.5 * GUI_GRID_H; }; class RscTitles { - class GVAR(InteractionHelper) { - idd = 9930; - enableSimulation = 1; - movingEnable = 0; - fadeIn=0.5; - fadeOut=0.5; - duration = 10e10; - onLoad = "uiNamespace setVariable ['ACE_Helper_Display', _this select 0];"; + class GVAR(InteractionHelper) { + idd = 9930; + enableSimulation = 1; + movingEnable = 0; + fadeIn=0.5; + fadeOut=0.5; + duration = 10e10; + onLoad = "uiNamespace setVariable ['ACE_Helper_Display', _this select 0];"; - class controls { - class SelectIcon: RscInteractionHelperIcon{ - idc = 1200; - text = PATHTOF(UI\mouse_left_ca.paa); - y = 17.5 * GUI_GRID_H; - }; - class SelectText: RscInteractionText{ - idc = 1000; - y = 17 * GUI_GRID_H; - text = $STR_ACE_Interaction_MakeSelection; - }; - class GoBackIcon: RscInteractionHelperIcon{ - idc = 1201; - text = PATHTOF(UI\mouse_right_ca.paa); - y = 19.5 * GUI_GRID_H; - }; - class GoBackText: RscInteractionText{ - idc = 1001; - y = 19 * GUI_GRID_H; - text = $STR_ACE_Interaction_Back; - }; - class ScrollIcon: RscInteractionHelperIcon{ - idc = 1202; - text = PATHTOF(UI\mouse_scroll_ca.paa); - y = 18.5 * GUI_GRID_H; - }; - class ScrollText: RscInteractionText{ - idc = 1002; - y = 18 * GUI_GRID_H; - text = $STR_ACE_Interaction_ScrollHint; - }; + class controls { + class SelectIcon: RscInteractionHelperIcon{ + idc = 1200; + text = PATHTOF(UI\mouse_left_ca.paa); + y = 17.5 * GUI_GRID_H; + }; + class SelectText: RscInteractionText{ + idc = 1000; + y = 17 * GUI_GRID_H; + text = $STR_ACE_Interaction_MakeSelection; + }; + class GoBackIcon: RscInteractionHelperIcon{ + idc = 1201; + text = PATHTOF(UI\mouse_right_ca.paa); + y = 19.5 * GUI_GRID_H; + }; + class GoBackText: RscInteractionText{ + idc = 1001; + y = 19 * GUI_GRID_H; + text = $STR_ACE_Interaction_Back; + }; + class ScrollIcon: RscInteractionHelperIcon{ + idc = 1202; + text = PATHTOF(UI\mouse_scroll_ca.paa); + y = 18.5 * GUI_GRID_H; + }; + class ScrollText: RscInteractionText{ + idc = 1002; + y = 18 * GUI_GRID_H; + text = $STR_ACE_Interaction_ScrollHint; + }; + }; }; - }; }; diff --git a/addons/interaction/README.md b/addons/interaction/README.md index 92401b2547..8e841e9a58 100644 --- a/addons/interaction/README.md +++ b/addons/interaction/README.md @@ -3,7 +3,6 @@ ace_interaction Provides interaction options between units. - ## Maintainers The people responsible for merging changes to this component or answering potential questions. diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index cfca73a90b..7d10e1bef5 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -1,26 +1,24 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interact_menu"}; - author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578"}; - authorUrl = "https://github.com/commy2/"; - VERSION_CONFIG; - }; + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_interact_menu"}; + author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578"}; + authorUrl = "https://github.com/commy2/"; + VERSION_CONFIG; + }; }; #include "CfgEventHandlers.hpp" - #include "CfgVehicles.hpp" - -#include +#include "Menu_Config.hpp" class ACE_Settings { - class GVAR(EnableTeamManagement) { - value = 1; - typeName = "BOOL"; - }; + class GVAR(EnableTeamManagement) { + value = 1; + typeName = "BOOL"; + }; }; From 212b8528fa289fc44a1f68feaeeeb31df4320664 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 9 May 2015 21:30:52 +0100 Subject: [PATCH 0132/1101] Bird locality code no longer needed --- addons/zeus/functions/fnc_bi_moduleCurator.sqf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 36110ac4fe..640ca7cead 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -215,6 +215,7 @@ if (_activated) then { } foreach (synchronizedobjects _logic); _addons call bis_fnc_activateaddons; + /* Removed by ACE //--- Locality changed _logic addeventhandler [ "local", @@ -224,6 +225,7 @@ if (_activated) then { _bird setowner owner _logic; } ]; + */ }; //--- Player From fb6195875818a2f783db83456ec97b7829f108f4 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sat, 11 Apr 2015 15:33:21 +0200 Subject: [PATCH 0133/1101] Fixed: FUNC macros list --- documentation/development/coding-guidelines.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/development/coding-guidelines.md b/documentation/development/coding-guidelines.md index 04d6adba80..c9eadfa8b6 100644 --- a/documentation/development/coding-guidelines.md +++ b/documentation/development/coding-guidelines.md @@ -131,6 +131,7 @@ The family of `GVAR` macro's define global variable strings or constants for use There also exists the FUNC family of Macros + * `FUNC(face)` is `ace_balls_fnc_face` or the call trace wrapper for that function. * `EFUNC(balls,face)` is `ace_balls_fnc_face` or the call trace wrapper for that function. * `EFUNC(leg,face)` is `ace_leg_fnc_face` or the call trace wrapper for that function. From cde1ff9a646e54c56d8835225e84ae9ea094da68 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sat, 11 Apr 2015 15:36:14 +0200 Subject: [PATCH 0134/1101] Fixed: build.py instead of build.bat --- .../development/setting-up-the-development-environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/development/setting-up-the-development-environment.md b/documentation/development/setting-up-the-development-environment.md index 8a572c1ec6..52e80a37a3 100644 --- a/documentation/development/setting-up-the-development-environment.md +++ b/documentation/development/setting-up-the-development-environment.md @@ -107,4 +107,4 @@ Files must exist in the built PBOs for filepatching to work. If you create a new Configs are not patched during run time, only at load time. You do not have have to rebuild a PBO to make config changes, just restart Arma. You can get around this though if you are on the dev branch of Arma 3 and running the diagnostic exe. That includes `diag_mergeConfig` which takes a full system path (as in `p:\z\ace\addons\my_module\config.cpp`) and allows you selectivly reload config files. -If you need to add/remove files* Then you'll need to run build.bat again without the game running, and restart. That is all that is required to add new files to then further use in testing. +If you need to add/remove files* Then you'll need to run build.py again without the game running, and restart. That is all that is required to add new files to then further use in testing. From 76b66db9d8a4d38890d02411aaeb1f578abb9276 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sat, 11 Apr 2015 15:37:36 +0200 Subject: [PATCH 0135/1101] Fixed: typo, extra * --- .../development/setting-up-the-development-environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/development/setting-up-the-development-environment.md b/documentation/development/setting-up-the-development-environment.md index 52e80a37a3..f484c59722 100644 --- a/documentation/development/setting-up-the-development-environment.md +++ b/documentation/development/setting-up-the-development-environment.md @@ -107,4 +107,4 @@ Files must exist in the built PBOs for filepatching to work. If you create a new Configs are not patched during run time, only at load time. You do not have have to rebuild a PBO to make config changes, just restart Arma. You can get around this though if you are on the dev branch of Arma 3 and running the diagnostic exe. That includes `diag_mergeConfig` which takes a full system path (as in `p:\z\ace\addons\my_module\config.cpp`) and allows you selectivly reload config files. -If you need to add/remove files* Then you'll need to run build.py again without the game running, and restart. That is all that is required to add new files to then further use in testing. +If you need to add/remove files, then you'll need to run build.py again without the game running, and restart. That is all that is required to add new files to then further use in testing. From 6695a8793b9851c9b07a5d134d94095630e83c68 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sat, 11 Apr 2015 16:27:38 +0200 Subject: [PATCH 0136/1101] Added: Some italian translastions --- addons/aircraft/stringtable.xml | 6 +++--- addons/attach/stringtable.xml | 2 +- addons/captives/stringtable.xml | 16 ++++++++-------- addons/dragging/stringtable.xml | 6 +++--- addons/hearing/stringtable.xml | 4 ++-- addons/interact_menu/stringtable.xml | 6 +++--- addons/interaction/stringtable.xml | 20 ++++++++++++++------ addons/nametags/stringtable.xml | 8 ++++---- 8 files changed, 38 insertions(+), 30 deletions(-) diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index 1dd01e08ab..c467cda3ce 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -34,7 +34,7 @@ Otevřít nákladní prostor Rakodórámpa nyitása Открыть грузовой отсек - Apri la porta del cargo + Apri la rampa di carico Abrir porta de carga @@ -46,7 +46,7 @@ Zavřít nákladní prostor Rakodórámpa zárása Закрыть грузовой отсек - Chiudi la porta del cargo + Chiudi la rampa di carico Fechar porta de carga diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 70b464a6cd..bc78cb3919 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -206,4 +206,4 @@ %1<br/>отсоединен(-а) - \ No newline at end of file + diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 4c139897c9..5de0a18bec 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -8,7 +8,7 @@ Capturer le prisonnier Aresztuj Zajmout Osobu - Arresta il Prigioniero + Arresta il prigioniero Tomar Prisioneiro Foglyul ejtés Взять в плен @@ -20,7 +20,7 @@ Wypuść więźnia Libérer le prisonnier Osvobodit Zajatce - Libera il Prigioniero + Libera il prigioniero Libertar Prisioneiro Fogoly szabadon engedése Освободить пленника @@ -71,7 +71,7 @@ Fogoly berakása Загрузить пленного Embarcar Prisioneiro - Carica il prigioniero + Fai salire il prigioniero Unload Captive @@ -83,7 +83,7 @@ Fogoly kivevése Выгрузить пленного Desembarcar Prisioneiro - Scarica il prigioniero + Fai scendere il prigioniero Cable Tie @@ -105,7 +105,7 @@ Les Serflex permettent de menotter les prisonniers. Stahovací pásky vám umožní zadržet vězně. A algema plástica permite que você contenha prisioneiros. - Fascietta che ti consente di arrestare i prigionieri. + Fascetta per arrestare i prigionieri Gyorskötöző, emberek foglyulejtéséhez használható. Кабельные стяжки позволяют связывать пленников. @@ -119,7 +119,7 @@ Ekwipunek rewidowanej osoby Инвентарь обысканного человека Inventário da pessoa revistada - Inventario delle persone perquisite + Inventario della persona perquisita Frisk person @@ -143,7 +143,7 @@ Poddaj się Сдаться Megadás - Arreso + Arrenditi Stop Surrendering @@ -194,4 +194,4 @@ Niente selezionato - \ No newline at end of file + diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index dd2e11f72b..4e98513266 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -32,7 +32,7 @@ Przedmiot jest zbyt ciężki Objet trop lourd Objeto muito pesado - Non è possibile trascinare l'oggetto a causa del suo peso + L'oggetto pesa troppo Предмет слишком тяжёлый Moc težké Az objektum túl nehéz @@ -45,9 +45,9 @@ Porter Nést Carregar - Trascina + Porta Felvevés Нести - \ No newline at end of file + diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index f13947d095..40fc6929f7 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -106,8 +106,8 @@ Vypnout pískání v uších Wyłącz dzwonienie w uszach Fülcsengés letiltása - Disabilita il ronzio + Disabilita i fischi nelle orecchie Desabilitar zumbido de ouvidos - \ No newline at end of file + diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 9e808eedff..6787d1e71e 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -10,7 +10,7 @@ Zawsze wyświetlaj kursor dla własnej interakcji Toujours afficher le curseur pour les interactions sur soi-même Mindig legyen a saját cselekvés kurzorja látható - Mostra sempre il cursore per le auto interazioni + Mostra sempre il cursore per le interazioni su se stessi Sempre mostrar cursor para interação pessoal @@ -58,7 +58,7 @@ Klawisz własnej interakcji Touche d'interaction personnelle Saját cselekvő gomb - Tasto per auto interazioni + Tasto interazione su se stessi Tecla de Interação Pessoal @@ -70,7 +70,7 @@ Własne akcje Interaction personnelle Saját cselekvések - Auto interazioni + Interazioni su se stessi Ações Pessoais diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index cc34994031..ee99e92544 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -443,7 +443,7 @@ Někdo tě poklepal na PRAVÉ rameno Вас похлопали по ПРАВОМУ плечу Você foi tocado no ombro - Ti è stato dato un colpetto sulla spalla + Ti è stato dato un colpetto sulla spalla destra You were tapped on the LEFT shoulder. @@ -455,7 +455,7 @@ Někdo tě poklepal na LEVÉ rameno Вас похлопали по ЛЕВОМУ плечу Você foi tocado no ombro. - Ti è stato dato un colpetto sulla spalla + Ti è stato dato un colpetto sulla spalla sinistra Cancel @@ -575,6 +575,7 @@ Přiřadit k červeným Назначить в Красную группу Assigner à rouge + Assegna al team rosso Assign Green @@ -586,6 +587,7 @@ Přiřadit k zeleným Назначить в Зеленую группу Assigner à vert + Assegna al team verde Assign Blue @@ -597,6 +599,7 @@ Přiřadit k modrým Назначить в Синюю группу Assigner à bleu + Assegna al team blu Assign Yellow @@ -608,6 +611,7 @@ Přiřadit ke žlutým Назначить в Желтую группу Assigner à jaune + Assegna al team giallo Join Red @@ -619,6 +623,7 @@ Připojit k červeným Присоединиться к Красной группе Rejoindre rouge + Unirsi al team rosso Join Green @@ -630,6 +635,7 @@ Připojit k zeleným Присоединиться к Зеленой группе Rejoindre vert + Unirsi al team verde Join Blue @@ -641,6 +647,7 @@ Připojit k modrým Присоединиться к Синей группе Rejoindre bleu + Unirsi al team blu Join Yellow @@ -652,6 +659,7 @@ Připojit ke žlutým Присоединиться к Жёлтой группе Rejoindre jaune + Unirsi al team giallo You joined Team %1 @@ -735,7 +743,7 @@ Hatótávolságon kívül Poza zasięgiem Mimo dosah - Non in raggio + Fuori limite Equipment @@ -758,8 +766,8 @@ Odstrčit Tolás Толкать - Spingi Empurrar + Spingere Interact @@ -770,7 +778,7 @@ Interakcja Interactuar Cselekvés - Interagisci + Interagire Interagir diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 7c2d0356a9..fd88a8fbc2 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -70,8 +70,8 @@ Zobrazit info o posádce vozidla Показывать информацию об экипаже Jármű-legénység adatainak mutatása - Mostra le informazioni sull'equipaggio del veicolo Mostrar tripulantes + Mostra l'elenco del personale a bordo Show name tags for AI units @@ -82,7 +82,7 @@ Wyświetl imiona jednostek AI Afficher les noms des IA Névcímkék mutatása MI-egységeknél - Mostra le tag nomi per le unità AI + Mostra i nomi delle le unità AI Mostrar nomes para unidades de IA @@ -94,7 +94,7 @@ Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) Afficher "qui parle" (si noms affichés) "Hanghullámok" mutatása (a nevek mutatása szükséges) - Mostra barra movimento audio (richiede mostra nomi abilitato) + Mostra movimento audio (richiede mostra nomi abilitato) Mostrar onda sonora (requer nome de jogadores) @@ -106,7 +106,7 @@ Couleur d'affichage par défaut (si dans aucun groupe) Standardní barva jmenovek (pro nečleny jednotky) Alap névcímke-szín (csoporton kívüli személyek) - Colore nametag di default (membri non del gruppo) + Colore dei nomi non appartenenti al gruppo Cor padrão do nome (unidades fora do grupo) From 9e093b94598bdddc0843fcc3c56d3e10ba6a0b84 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sat, 11 Apr 2015 16:45:23 +0200 Subject: [PATCH 0137/1101] Added: More italian translations --- addons/dragging/stringtable.xml | 2 +- addons/laser_selfdesignate/stringtable.xml | 2 +- addons/laserpointer/stringtable.xml | 4 ++-- addons/logistics_wirecutter/stringtable.xml | 6 +++--- addons/maptools/stringtable.xml | 2 +- addons/microdagr/stringtable.xml | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index 4e98513266..a432bbfcf0 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -45,8 +45,8 @@ Porter Nést Carregar - Porta Felvevés + Trasporta Нести diff --git a/addons/laser_selfdesignate/stringtable.xml b/addons/laser_selfdesignate/stringtable.xml index f25689c5b9..cdd7439200 100644 --- a/addons/laser_selfdesignate/stringtable.xml +++ b/addons/laser_selfdesignate/stringtable.xml @@ -26,4 +26,4 @@ Designador Laser Desligado - \ No newline at end of file + diff --git a/addons/laserpointer/stringtable.xml b/addons/laserpointer/stringtable.xml index bf785781d0..1a4182bd8e 100644 --- a/addons/laserpointer/stringtable.xml +++ b/addons/laserpointer/stringtable.xml @@ -34,7 +34,7 @@ Wydziela widzialne światło. Látható fényt bocsát ki. Emite luz visible. - Emette luce visibile + Emette luce visibile. Emite luz visível. @@ -86,4 +86,4 @@ Alternar entre Laser / Laser IV - \ No newline at end of file + diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml index c49243d91e..eb3ad70ce1 100644 --- a/addons/logistics_wirecutter/stringtable.xml +++ b/addons/logistics_wirecutter/stringtable.xml @@ -10,7 +10,7 @@ Štípací kleště Nożyce do cięcia drutu Drótvágó - Pinze da Taglio + Trancia Cortador de Arame @@ -22,7 +22,7 @@ Służą do cięcia drutu i płotów Pince coupante Drótok, huzalok, és kábelek vágására alkalmas olló. - Pinze da Taglio + Trancia da ferro Cortador de Arame @@ -62,4 +62,4 @@ Забор разрезан - \ No newline at end of file + diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index f2a14e8b33..a112096347 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -142,7 +142,7 @@ Dirección: %1° Irány: %1 Направление: %1° - Direzione : %1° + Direzione: %1° Direção: %1 diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index 09c96705b4..55eccb1acf 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -10,7 +10,7 @@ MicroDAGR GPS MicroDAGR GPS MicroDAGR GPS - MicroDAGR GPS + GPS MicroDAGR GPS MicroDAGR @@ -22,7 +22,7 @@ Récepteur GPS MicroDAGR MicroDAGR pokročílá GPS příjímač MicroDAGR fejlett GPS vevőegység - MicroDAGR ricevitore GPS avanzato + Ricevitore GPS avanzato MicroDAGR Recepitor GPS avançado MicroDAGR @@ -46,7 +46,7 @@ Mils Mils Mil - Miglia + Mils Mils: From 7e7c3ed053da1e1a3c40f372432e52265feebee4 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sat, 11 Apr 2015 21:00:13 +0200 Subject: [PATCH 0138/1101] Added: More italian translations --- addons/magazinerepack/stringtable.xml | 12 ++++++++---- addons/safemode/stringtable.xml | 1 + addons/vector/stringtable.xml | 4 ++-- addons/vehiclelock/stringtable.xml | 16 ++++++++-------- addons/weaponselect/stringtable.xml | 8 ++++---- addons/winddeflection/stringtable.xml | 2 +- 6 files changed, 24 insertions(+), 19 deletions(-) diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 7030dc374e..135946f756 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -1,4 +1,8 @@  +<<<<<<< master +======= + +>>>>>>> HEAD~3 @@ -8,7 +12,7 @@ Réorganiser les chargeurs Przepakuj magazynki Přepáskovat Zásobníky - Ricarica Caricatori + Ricarica caricatori Reorganizar Carregadores Újratárazás Перепаковать магазины @@ -20,7 +24,7 @@ Sélectionner menu des chargeurs Menu wyboru magazynków Zvolit Menu zásobníků - Seleziona Menù di Ricarica + Seleziona menù di ricarica Menu de Seleção de Carregador Fegyvertár menü kiválasztás Меню выбора магазинов @@ -32,7 +36,7 @@ Sélectionner chargeur Wybierz magazynek Zvolit zásobník - Seleziona Caricatore + Seleziona caricatore Selecionar Carregador Tár kiválasztása Выбрать магазин @@ -68,7 +72,7 @@ %1 chargeur(s) plein(s) et %2 cartouche(s) en rab Pełnych magazynków: %1.<br/>Dodatkowych naboi: %2. %1 plný zásobník(y) a %2 munice navíc - %1 caricatore/i pieno e %2 munizioni extra + %1 caricatore(i) pieno e %2 munizioni extra %1 carregador(es) cheio(s) e %2 disparo(s) a mais %1 teljes tár és %2 extra lőszer %1 полных магазина(ов) и %2 патрона(ов) diff --git a/addons/safemode/stringtable.xml b/addons/safemode/stringtable.xml index f39ca84614..c997d026a2 100644 --- a/addons/safemode/stringtable.xml +++ b/addons/safemode/stringtable.xml @@ -47,6 +47,7 @@ Снят с предохранителя Sécurité enlevée Togli la sicura + Sicura tolta Tirou Segurança diff --git a/addons/vector/stringtable.xml b/addons/vector/stringtable.xml index 47832c33c1..80135294d4 100644 --- a/addons/vector/stringtable.xml +++ b/addons/vector/stringtable.xml @@ -44,10 +44,10 @@ Vector - Touche Distance Vector - Odległość Vector - Zobrazit vzdálenost - Vecto - Tasto Distanza + Vector - Tasto Distanza Vector - Tecla de Distância Vector - Távolság gomb Vector – Расстояние - \ No newline at end of file + diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index fc92b72dd2..f4162b3b03 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -10,7 +10,7 @@ Odemknout vozidlo Jármű nyitása Открыть машину - Apri il veicolo + Sblocca il veicolo Destravar veículo @@ -22,7 +22,7 @@ Zamknout vozidlo Jármű zárása Закрыть машину - Chiudi il veicolo + Chiudi il veicolo a chiave Travar Veículo @@ -70,7 +70,7 @@ Hlavní klíč otevře libovolný zámek, bez vyjímek! Egy főkulcs, ami minden zárat kinyit, helyzettől függetlenül! Универсальный ключ, открывающий любой замок. - Una chiave principale che apre qualsiasi serratura! + Un passe-partout che apre qualsiasi serratura! Uma chave mestre irá abrir qualquer fechadura, não importa qual! @@ -94,7 +94,7 @@ Klíč který by měl otevřít většinou Západních vozidel. Egy kulcs, ami a NYUGAT egységeinek legtöbb járművét ki tudja nyitni. Ключ для открытия большинства машин Красных. - Una chiave che apre la maggior parte dei veicoli WEST + Una chiave che apre la maggior parte dei veicoli occidentali Uma chave que abre a maioria dos veículos ocidentais @@ -106,7 +106,7 @@ Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni. Klíč který by měl otevřít vetšinu Východních vozidel. Ключ для открытия большинства машин Синих. - Una chaive che apre la maggior parte dei veicoli EAST + Una chaive che apre la maggior parte dei veicoli orientali Uma chave que abre a maioria dos veículos orientais @@ -118,7 +118,7 @@ Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni. Klíč který by měl otevřít většinu Nezávislých vozidel. Ключ для открытия большинства машин Независимых. - Una chaive che apr ela maggior parte dei veicoli INDEP + Una chaive che apr ela maggior parte dei veicoli degli indipendenti Uma chave que abre a maioria dos veículos independentes @@ -130,8 +130,8 @@ Klíč který by měl otevřít většinu Civilních vozidel. Egy kulcs, ami a CIVIL járművek többségét ki tudja nyitni. Ключ для открытия большинства машин Гражданских. - Una chaive che apr ela maggior parte dei veicoli CIV + Una chaive che apr ela maggior parte dei veicoli civili Uma chave que abre a maioria dos veículos civis. - \ No newline at end of file + diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml index 2925b66e7d..0bce22becb 100644 --- a/addons/weaponselect/stringtable.xml +++ b/addons/weaponselect/stringtable.xml @@ -47,7 +47,7 @@ Sélectionner Fusil Puska Kiválasztása Selecionar Rifle - Seleziona il Fucile + Seleziona il fucile Select Launcher @@ -59,7 +59,7 @@ Sélectionner Lanceur Rakétavető Kiválasztása Selecionar Lançador - Seleziona il Lanciamissili + Seleziona il lanciamissili Select Grenade Launcher @@ -71,7 +71,7 @@ Sélectionner Lance-grenades Gránátvető Kiválasztása Selecionar Lança-Granadas - Seleziona il Lanciagranate + Seleziona il lanciagranate Select Binoculars @@ -278,4 +278,4 @@ Lançador de fumaça - \ No newline at end of file + diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index af6f05a912..4ebcc81bee 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -23,7 +23,7 @@ Direction %1 Windrichtung: %1 Irány: %1 - Direzione: %1 + Direzione: %1° Direção: %1 From 87974b12b2e64ff5815355b48a1f7123f5805548 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sun, 12 Apr 2015 20:37:02 +0200 Subject: [PATCH 0139/1101] Added: Myself as contributor --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 366664efbd..862cb23413 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -29,6 +29,7 @@ Walter Pearce ACCtomeek Adanteh aeroson +alef Aggr094 Alganthe Anthariel From 2da2794e205243f72ee93df86330d94630c9dc9d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 9 May 2015 17:08:47 -0500 Subject: [PATCH 0140/1101] ACE_isUnique config for mags instead of static list --- addons/disarming/functions/fnc_disarmDropItems.sqf | 4 ++-- addons/disarming/script_component.hpp | 1 - addons/vehiclelock/CfgMagazines.hpp | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf index cb5da77dd6..bc9abbf127 100644 --- a/addons/disarming/functions/fnc_disarmDropItems.sqf +++ b/addons/disarming/functions/fnc_disarmDropItems.sqf @@ -79,7 +79,7 @@ _holderMagazinesStart = magazinesAmmoCargo _holder; { EXPLODE_2_PVT(_x,_xClassname,_xAmmo); - if ((_xClassname in _listOfItemsToRemove) && {!(_xClassname in UNIQUE_MAGAZINES)}) then { + if ((_xClassname in _listOfItemsToRemove) && {(getNumber (configFile >> "CfgMagazines" >> _xClassname >> "ACE_isUnique")) == 0}) then { _holder addMagazineAmmoCargo [_xClassname, 1, _xAmmo]; _target removeMagazine _xClassname; }; @@ -89,7 +89,7 @@ _targetMagazinesEnd = magazinesAmmo _target; _holderMagazinesEnd = magazinesAmmoCargo _holder; //Verify Mags dropped from unit: -if ( ({((_x select 0) in _listOfItemsToRemove) && {!((_x select 0) in UNIQUE_MAGAZINES)}} count _targetMagazinesEnd) != 0) exitWith { +if (({((_x select 0) in _listOfItemsToRemove) && {(getNumber (configFile >> "CfgMagazines" >> (_x select 0) >> "ACE_isUnique")) == 0}} count _targetMagazinesEnd) != 0) exitWith { _holder setVariable [QGVAR(holderInUse), false]; [_caller, _target, "Debug: Didn't Remove Magazines"] call FUNC(eventTargetFinish); }; diff --git a/addons/disarming/script_component.hpp b/addons/disarming/script_component.hpp index d9bec366dc..9a1ef9156b 100644 --- a/addons/disarming/script_component.hpp +++ b/addons/disarming/script_component.hpp @@ -13,4 +13,3 @@ #define DISARM_CONTAINER "GroundWeaponHolder" #define DUMMY_ITEM "ACE_DebugPotato" -#define UNIQUE_MAGAZINES ["ACE_key_customKeyMagazine"] \ No newline at end of file diff --git a/addons/vehiclelock/CfgMagazines.hpp b/addons/vehiclelock/CfgMagazines.hpp index 100df8065b..d57e8fff6f 100644 --- a/addons/vehiclelock/CfgMagazines.hpp +++ b/addons/vehiclelock/CfgMagazines.hpp @@ -6,5 +6,6 @@ class CfgMagazines { descriptionShort = "$STR_ACE_Vehicle_Item_Custom_Description"; count = 1; mass = 0; + ACE_isUnique = 1; }; }; From b3833c665d4adbf37d8c18a566ae5276b0224c77 Mon Sep 17 00:00:00 2001 From: jaynus Date: Sat, 9 May 2015 22:53:20 -0700 Subject: [PATCH 0141/1101] Time magic. --- addons/common/XEH_preInit.sqf | 9 +++++++++ addons/common/functions/fnc_timePFH.sqf | 26 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 addons/common/functions/fnc_timePFH.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 5c2ad1e592..881d77e156 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -312,6 +312,15 @@ if (hasInterface) then { }, 0, []] call cba_fnc_addPerFrameHandler; }; +// Time handling +ACE_time = diag_tickTime; +ACE_realTime = diag_tickTime; +ACE_virtualTime = diag_tickTime; +ACE_gameTime = time; + +PREP(timePFH); +[FUNC(timePFH), 0, []] call cba_fnc_addPerFrameHandler; + // Init toHex [0] call FUNC(toHex); diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf new file mode 100644 index 0000000000..7f1c815bac --- /dev/null +++ b/addons/common/functions/fnc_timePFH.sqf @@ -0,0 +1,26 @@ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +private["_lastTime", "_lastRealTime", "_lastVirtualTime", "_lastGameTime", "_delta"]; + +_lastTime = ACE_time; +_lastRealTime = ACE_realTime; +_lastVirtualTime = ACE_virtualTime; +_lastGameTime = ACE_gameTime; +_lastPausedTime = ACE_pausedTime; +_lastVirtualPausedTime = ACE_virtualPausedTime; + +ACE_gameTime = time; +ACE_realTime = diag_tickTime; + +_delta = ACE_realTime - _lastRealTime; +if(time <= _lastGameTime) then { + // Game is paused or not running + ACE_pausedTime = ACE_pausedTime + _delta; + ACE_virtualPausedTime = ACE_pausedTime + (_delta * accTime); +} else { + // Time is updating + ACE_virtualTime = _lastVirtualTime + (_delta * accTime); + ACE_time = ACE_realTime + _delta; +}; + From 8e34b99c0f6969764b834c7c19cb58d50caf008f Mon Sep 17 00:00:00 2001 From: jaynus Date: Sat, 9 May 2015 23:09:33 -0700 Subject: [PATCH 0142/1101] Optimization of variables. --- addons/common/functions/fnc_timePFH.sqf | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf index 7f1c815bac..a3732c614f 100644 --- a/addons/common/functions/fnc_timePFH.sqf +++ b/addons/common/functions/fnc_timePFH.sqf @@ -3,24 +3,22 @@ private["_lastTime", "_lastRealTime", "_lastVirtualTime", "_lastGameTime", "_delta"]; -_lastTime = ACE_time; _lastRealTime = ACE_realTime; -_lastVirtualTime = ACE_virtualTime; _lastGameTime = ACE_gameTime; -_lastPausedTime = ACE_pausedTime; -_lastVirtualPausedTime = ACE_virtualPausedTime; ACE_gameTime = time; ACE_realTime = diag_tickTime; _delta = ACE_realTime - _lastRealTime; if(time <= _lastGameTime) then { + ACE_paused = true; // Game is paused or not running ACE_pausedTime = ACE_pausedTime + _delta; ACE_virtualPausedTime = ACE_pausedTime + (_delta * accTime); } else { + ACE_paused = false; // Time is updating - ACE_virtualTime = _lastVirtualTime + (_delta * accTime); - ACE_time = ACE_realTime + _delta; + ACE_virtualTime = ACE_virtualTime + (_delta * accTime); + ACE_time = ACE_time + _delta; }; From 7fb7b04a85dc37a254931ba1f22bf407671fdf5a Mon Sep 17 00:00:00 2001 From: jaynus Date: Sat, 9 May 2015 23:13:02 -0700 Subject: [PATCH 0143/1101] And one final bugfix for fast machines. --- addons/common/functions/fnc_timePFH.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf index a3732c614f..e8f0be1efd 100644 --- a/addons/common/functions/fnc_timePFH.sqf +++ b/addons/common/functions/fnc_timePFH.sqf @@ -10,7 +10,7 @@ ACE_gameTime = time; ACE_realTime = diag_tickTime; _delta = ACE_realTime - _lastRealTime; -if(time <= _lastGameTime) then { +if(ACE_gameTime <= _lastGameTime) then { ACE_paused = true; // Game is paused or not running ACE_pausedTime = ACE_pausedTime + _delta; From 59adf928622b3917dfb9e288e10c01ff2b2343eb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 May 2015 01:47:50 -0500 Subject: [PATCH 0144/1101] Fix not being able to UnSurrender (currentWeapon) --- addons/captives/functions/fnc_canSurrender.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/captives/functions/fnc_canSurrender.sqf b/addons/captives/functions/fnc_canSurrender.sqf index 3b810a0c5c..9ba7cf6de0 100644 --- a/addons/captives/functions/fnc_canSurrender.sqf +++ b/addons/captives/functions/fnc_canSurrender.sqf @@ -1,6 +1,6 @@ /* * Author: PabstMirror - * Checks the conditions for being able to surrender + * Checks the conditions for being able switch surrender states * * Arguments: * 0: caller (player) @@ -18,14 +18,14 @@ PARAMS_2(_unit,_newSurrenderState); -if (currentWeapon _unit != "") exitWith {false}; - private "_returnValue"; _returnValue = if (_newSurrenderState) then { - !(_unit getVariable [QGVAR(isSurrendering), false]); //Not currently surrendering + //no weapon equiped AND not currently surrendering and + (currentWeapon _unit == "") && {!(_unit getVariable [QGVAR(isSurrendering), false])} } else { - (_unit getVariable [QGVAR(isSurrendering), false]); //is Surrendering + //is Surrendering + (_unit getVariable [QGVAR(isSurrendering), false]) }; _returnValue From 643df719320d8d43b536101f57c7a9c6f0869251 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sun, 10 May 2015 09:23:02 +0200 Subject: [PATCH 0145/1101] Added: Italian translation from Blackedsoul p#20 --- addons/attach/stringtable.xml | 2 +- addons/captives/stringtable.xml | 4 ++-- addons/common/stringtable.xml | 15 +++++++------- addons/disposable/stringtable.xml | 8 ++++---- addons/dragging/stringtable.xml | 2 +- addons/explosives/stringtable.xml | 16 +++++++-------- addons/frag/stringtable.xml | 2 +- addons/interaction/stringtable.xml | 8 ++++---- addons/magazinerepack/stringtable.xml | 6 +----- addons/maptools/stringtable.xml | 6 +++--- addons/medical/stringtable.xml | 28 +++++++++++++-------------- addons/safemode/stringtable.xml | 3 +-- addons/vehiclelock/stringtable.xml | 2 +- addons/weaponselect/stringtable.xml | 2 +- addons/winddeflection/stringtable.xml | 1 - 15 files changed, 50 insertions(+), 55 deletions(-) diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index bc78cb3919..01e07c4096 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -179,7 +179,7 @@ Erro ao fixar Przyczepianie nie powiodło się Hozzácsatolás sikertelen - Impossibile Attaccare + Non si attacca %1<br/>Attached diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 5de0a18bec..b45e8c3541 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -155,7 +155,7 @@ Podejmij walkę ponownie Прекратить сдачу в плен Megadás abbahagyása - Annulla la resa + Smetti di arrenderti Only use on alive units @@ -191,7 +191,7 @@ Nie ma nic pod kursorem Ничего не выделено Semmi sincs az egér alatt - Niente selezionato + Nessuna selezione diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index a78ff0a7fc..b3741bb5d2 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -275,7 +275,7 @@ Désactiver menu commande Выключить командное меню Parancsnoki menü kikapcsolása - Disabilita Menù di comando + Disabilita menù di comando Desabilitar menu de comando @@ -308,11 +308,11 @@ Aceptar peticiones Akceptuj prośby Přijmout žádost - Accetta Richieste Accepter requête Принять запросы Kérések elfogadása Aceitar Pedido + Accetta la richiesta Decline Requests @@ -320,11 +320,11 @@ Rechazar peticiones Ignoruj prośby Zamítnout žádost - Rifiuta Richieste Отклонить запросы Rejeter requête Kérések elutasítása Rejeitar pedido + Rifiuta la richiesta Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. @@ -402,7 +402,7 @@ Hint Background color Hintergrundfarbe der Hinweise Color de fondo de las notificaciones - Colore di sfondo dei Suggerimenti + Colore di sfondo dei suggerimenti Цвет фона всплывающих подсказок Kolor tła powiadomień Notification: couleur de l'arrière plan @@ -414,7 +414,7 @@ The color of the background from the ACE hints. Die Hintergrundfarbe der ACE-Hinweise. El color de fondo de las notificaciones del ACE - Il colore di sfondo dei suggerimenti dell'ACE. + Il colore di sfondo dei suggerimenti di ACE. Цвет фона всплывающих подсказок АСЕ. Kolor tła dla powiadomień ACE Notification ACE: couleur de l'arrière plan @@ -426,7 +426,7 @@ Hint text font color Textfarbe der Hinweise Color del texto de las notificaciones - Il colore del Testo dei Suggerimenti + Il colore del testo dei suggerimenti Цвет шрифта всплывающих подсказок Kolor tekstu powiadomień Notification: couleur du texte @@ -438,7 +438,7 @@ The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. Wähle die Textfarbe für ACE-Hinweise. Die gewählte Farbe wird als Standartfarbe der Hinweise angezeigt, wenn der Hinweis selbst keine spezifische Farbe hat. El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado. - Il colore del testo dei suggerimenti dell'ACE. Questo è il colore standard per tutti i caratteri mostrati dal sistema di suggerimenti dell'ACE, se il colore del testo non è specificato. + Il colore del testo dei suggerimenti di ACE. Questo è il colore predefinito per tutto il testo mostrato dal sistema di suggerimenti di ACE quando il colore del testo non ha altro colore specificato. Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок. Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru. Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications @@ -457,6 +457,7 @@ Banane Banán Banana + Banana A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa. diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml index 625bb6a542..526844afcd 100644 --- a/addons/disposable/stringtable.xml +++ b/addons/disposable/stringtable.xml @@ -10,7 +10,7 @@ Lanzador utilizado Elhasznált kilövőcső Отстрелянная труба - Tubo utilizzato + Tubo usato Tubo utilizado @@ -22,7 +22,7 @@ Lanzador desechable utilizado Elhasznált eldobható rakétavető Отстрелянная одноразовая пусковая установка - Lanciarazzi monouso utilizzato + Lanciarazzi monouso già utilizzato Lança foguetes descartável utilizado @@ -34,8 +34,8 @@ Precargado misil inerte Előtöltött műrakéta Предзаряженная ракетная болванка - Missile stupido precaricato + Missile inerte precaricato Míssel inerte pré-carregado - \ No newline at end of file + diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index a432bbfcf0..956f004635 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -46,7 +46,7 @@ Nést Carregar Felvevés - Trasporta + Trasporta Нести diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 0c088df962..628c334314 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,4 +1,4 @@ - +<<<<<<< translation/15bn/alef @@ -368,7 +368,7 @@ Wybierz zapalnik Sélectionner une mise à feu Zvolit Detonátor - Seleziona un Attivatore + Seleziona un attivatore Gyújtóeszköz kiválasztása Selecionar um Gatilho Выберите детонатор @@ -392,7 +392,7 @@ Druckplatte Plaque de pression Nášlapná nástraha - Piastra a Pressione + Piastra a pressione Nyomólap Placa de pressão Нажимная плита @@ -404,7 +404,7 @@ Stolperdraht Fil de détente Nástražný drát - Filo a Inciampo + Filo a inciampo Botlódrót Linha de tração Растяжка @@ -440,7 +440,7 @@ Infrarotsensor (Seitenangriff) Capteur IR (de flanc) IR Značkovač (Výbuch stranou) - Sensore IR (Attacco laterale) + Sensore IR (attacco laterale) Infravörös szenzor (Side Attack) Sensor infravermelho (ataque lateral) ИК сенсор (детонация вбок) @@ -452,7 +452,7 @@ Magnetfeldsensor (Bodenangriff) Capteur magnétique (par le bas) Magnetický Senzor (Výbuch ze spoda) - Sensore Magnetico di Prossimità (Attacco inferiore) + Sensore Magnetico di Prossimità (attacco inferiore) Mágneses mező érzékelő (Bottom Attack) Influência magnética (ataque inferior) Магнитный сенсор (детонация вверх) @@ -462,7 +462,7 @@ Keine Sprengladungen auf diesem Auslöser. Ningún explosivo en el detonador. Pas d'explosif à mettre à feu. - Nessun esplosivo sul sensore. + Nessun esplosivo Žádná výbušnina k odpálení. Nincs robbanóanyag a gyújtóeszközhöz kötve. Brak ładunków na zapalnik. @@ -491,7 +491,7 @@ Robbanóanyagok távoli robbantásához Usado para detonar remotamente o explosivo quando solto. Используется для дистанционного подрыва, после смерти оператора. - Usato per attivare esplosivi al momento del rilascio + Usato per attivare a distanza esplosivi al momento del rilascio Pick up diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index cfc28f9c4e..e7ebb7c1bf 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -14,4 +14,4 @@ Desabilitar Fragmentação - \ No newline at end of file + diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index ee99e92544..1da22b649e 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -119,7 +119,7 @@ Меню взаимодействия (с собой) Cselekvő menü (saját) Menu de Interação (Individual) - Menù interazione (Individuale) + Menù interazione (individuale) Open / Close Door @@ -263,7 +263,7 @@ Жесты Kézjelek Gestos - Segnali gestuali + Gesti Attack @@ -503,7 +503,7 @@ A földre! Ложись! Abaixe-se! - A Terra! + A terra! Team Management @@ -729,7 +729,7 @@ Tecla modificadora Клавиша-модификатор Tecla Modificadora - Modifica tasto + Tasto modifica Módosító billentyű Modifikátor diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 135946f756..8c1a0e01dc 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -1,8 +1,4 @@  -<<<<<<< master -======= - ->>>>>>> HEAD~3 @@ -110,7 +106,7 @@ %1 plný a %2 částečně Pełnych: %1.<br/>Częściowo pełnych: %2. %1 teljes és %2 részleges - %1 pieno e %2 parziale + %1 pieno(i) e %2 parziale(i) %1 Total e %2 Parcial diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index a112096347..d9bdcb02c5 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -8,7 +8,7 @@ Narzędzia nawigacyjne Kartenwerkzeug Pomůcky k mapě - Strumenti Cartografici + Strumenti cartografici Ferramentas de Mapa Térképészeti eszközök Инструменты карты @@ -20,7 +20,7 @@ Narzędzia nawigacyjne pozwalają na mierzenie odległości i kątów na mapie. Das Kartenwerkzeug ermöglicht es dir, Distanzen und Winkel zu messen. Pomůcky k mapě slouží k měření vzdáleností a úhlů na mapě. - Gli Strumenti Cartografici ti consentono di misurare distanze ed angoli sulla mappa. + Gli strumenti cartografici ti consentono di misurare distanze ed angoli sulla mappa. As Ferramentas de Mapa permitem que você meça distâncias e ângulos no mapa. A térképészeti eszközökkel távolságokat és szögeket tudsz mérni a térképen. Картографические инструменты позволяют измерять расстояния и углы на карте. @@ -32,7 +32,7 @@ Narzędzia nawigacyjne Kartenwerkzeug Pomůcky k mapě - Strumenti Cartografici + Strumenti cartografici Ferramentas de Mapa Térképészeti eszközök Инструменты карты diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index f573f53b0d..42749f8ae8 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -83,7 +83,7 @@ Injecter de la morphine Morfium beadása Injetar Morfina - Inietta Morfina + Inietta morfina Transfuse Blood @@ -95,7 +95,7 @@ Transfusion Infúzió (vér) Transfundir Sangue - Effettua trasfusione di sangue + Trasfusione di sangue Transfuse Plasma @@ -106,7 +106,7 @@ Transfuser du Plasma Перелить плазму Infúzió (vérplazma) - Effettua trasfusione di plasma + Trasfusione di Plasma Transfundir Plasma @@ -118,7 +118,7 @@ Transfuser de la solution saline Перелить физраствор Infúzió (sós víz) - Effettua trasfusione di soluzione salina + Trasfusione di soluzione salina Transfundir Soro @@ -274,7 +274,7 @@ Transfusion de saline ... Переливание физраствора ... Infúzió sós vizzel ... - Effettuo la rasfusione di salina + Effettuo la rasfusione di soluzione salina Transfundindo Soro... @@ -370,7 +370,7 @@ QuikClot Hémostatique QuikClot - QuikClot(polvere emostatica) + QuikClot (polvere emostatica) QuikClot @@ -801,7 +801,7 @@ Bandage fait d'un matériel spécial utilisé pour couvrir une blessure, qui peut etre appliqué dès que le saignement a été stoppé. Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. Egy különleges anyagú kötszer sebek betakarására, amelyet a vérzés elállítása után helyeznek fel. - Una benda apposita, utilizzata per coprire una ferita, la quale è applicata sopra di essa una volta fermata l'emorragia. + Una benda apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. @@ -825,7 +825,7 @@ Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer - Usato su medie o larghe ferite per fermare emorragie. + Usato su ferite medie o larghe per fermare emorragie. Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. Používá se k zastavení středních až silnějších krvácení @@ -850,7 +850,7 @@ Bandaż (elastyczny) Obvaz (elastický) Rögzító kötszer - Benda (Elastica) + Benda (elastica) Bandagem (Elástica) @@ -861,7 +861,7 @@ Bandage compressif élastique Zestaw bandaży elastycznych. Rugalmas kötszercsomag, "rögzítő" - Kit bendaggio, elastico + Kit di bendaggio, elastico Kit de Bandagem, Elástica Sada obvazů, Elastická @@ -873,7 +873,7 @@ Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada Egyenletes nyomást és támogatást biztosít a sebesült felületnek. - Permette di comprimevere e aiutare la zone ferita. + Permette di comprimere e aiutare la zone ferita. Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. Hodí se k fixačním účelům a to i v oblastech kloubů. @@ -958,7 +958,7 @@ Atropin Autoinjektor Autoinjektor atropin Atropin autoinjektor - Autoiniettore di Atropina + Autoiniettore di atropina Auto-injetor de Atropina @@ -994,7 +994,7 @@ Epiniphrin Autoinjektor Autoinjektor adrenalin Epinefrin autoinjektor - Autoiniettore di Epinefrina + Autoiniettore di epinefrina Auto-injetor de epinefrina @@ -2693,4 +2693,4 @@ Снятие жгута ... - \ No newline at end of file + diff --git a/addons/safemode/stringtable.xml b/addons/safemode/stringtable.xml index c997d026a2..b31b5ab25f 100644 --- a/addons/safemode/stringtable.xml +++ b/addons/safemode/stringtable.xml @@ -34,7 +34,7 @@ Biztonsági kapcsoló helyretolása Поставить на предохранитель Sécurité mise - Inserisci la sicura + Metti la sicura Colocar Segurança @@ -46,7 +46,6 @@ Biztonságos mód megszüntetve Снят с предохранителя Sécurité enlevée - Togli la sicura Sicura tolta Tirou Segurança diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index f4162b3b03..498e526156 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -118,7 +118,7 @@ Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni. Klíč který by měl otevřít většinu Nezávislých vozidel. Ключ для открытия большинства машин Независимых. - Una chaive che apr ela maggior parte dei veicoli degli indipendenti + Una chaive che apre la maggior parte dei veicoli degli indipendenti Uma chave que abre a maioria dos veículos independentes diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml index 0bce22becb..810fda21c9 100644 --- a/addons/weaponselect/stringtable.xml +++ b/addons/weaponselect/stringtable.xml @@ -22,7 +22,7 @@ Wyświetla powiadomienie lub tekst przy rzucie granatem. Afficher texte/info au lancé de grenade Jelez egy súgót vagy szöveget a gránát eldobásakor. - Mostra un suggerimento quando si lanciano granate + Mostra una notifica quando si lanciano granate Mostra um hint ou texto ao lançar uma granada diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 4ebcc81bee..9336e6c457 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -18,7 +18,6 @@ Direction: %1 Kierunek: %1 Dirección: %1 - Направление: %1° Směr: %1 Direction %1 Windrichtung: %1 From d32e1024d359e4cc427e6c86334e97cb2ae8798f Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 10 May 2015 11:09:14 +0200 Subject: [PATCH 0146/1101] Fixed a typo --- .../functions/fnc_readAmmoDataFromConfig.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf b/addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf index 7ff94387d1..10e7e60df2 100644 --- a/addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf +++ b/addons/advanced_ballistics/functions/fnc_readAmmoDataFromConfig.sqf @@ -50,11 +50,11 @@ if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_ammoTempMuzzleVelocityShift }; _muzzleVelocityTable = []; _barrelLengthTable = []; -if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable")) then { - _muzzleVelocityTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocityTable"); +if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocities")) then { + _muzzleVelocityTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_muzzleVelocities"); }; if (isArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengths")) then { - _barrelLengthTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengthTable"); + _barrelLengthTable = getArray(configFile >> "CfgAmmo" >> _ammo >> "ACE_barrelLengths"); }; _result = [_airFriction, _caliber, _bulletLength, _bulletMass, _transonicStabilityCoef, _dragModel, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _ammoTempMuzzleVelocityShifts, _muzzleVelocityTable, _barrelLengthTable]; From 2dd06babecc734fb446ad7b5bbbaa9439b55c0d1 Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sun, 10 May 2015 11:44:46 +0200 Subject: [PATCH 0147/1101] Added: Italian translations completed. Fixed: BOM markers where missing --- addons/aircraft/stringtable.xml | 2 +- addons/common/stringtable.xml | 3 +- addons/explosives/stringtable.xml | 2 +- addons/interact_menu/stringtable.xml | 14 ++++- addons/laser/stringtable.xml | 78 ++++++++++++++------------ addons/medical/stringtable.xml | 11 +++- addons/mk6mortar/stringtable.xml | 7 ++- addons/nightvision/stringtable.xml | 4 +- addons/optionsmenu/stringtable.xml | 2 + addons/reload/stringtable.xml | 2 +- addons/reloadlaunchers/stringtable.xml | 2 +- addons/respawn/stringtable.xml | 5 +- 12 files changed, 82 insertions(+), 50 deletions(-) diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index c467cda3ce..a1fb5aaacf 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index b3741bb5d2..8d28704362 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -324,7 +324,7 @@ Rejeter requête Kérések elutasítása Rejeitar pedido - Rifiuta la richiesta + Rifiuta la richiesta Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. @@ -457,7 +457,6 @@ Banane Banán Banana - Banana A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa. diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 628c334314..9d885c236c 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,4 +1,4 @@ -<<<<<<< translation/15bn/alef + diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 6787d1e71e..320fa34a5d 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -1,4 +1,5 @@  + @@ -58,7 +59,7 @@ Klawisz własnej interakcji Touche d'interaction personnelle Saját cselekvő gomb - Tasto interazione su se stessi + Tasto interazione su se stessi Tecla de Interação Pessoal @@ -70,7 +71,7 @@ Własne akcje Interaction personnelle Saját cselekvések - Interazioni su se stessi + Interazioni su se stessi Ações Pessoais @@ -143,6 +144,7 @@ Mantener el cursor centrado Udržuj kurzor na středu Manter o cursor centralizado + Mantieni il cursore centrato Keeps cursor centered and pans the option menu around. Useful if screen size is limited. @@ -154,6 +156,7 @@ Utrzymuje kursor na środku ekranu, zamiast tego ruch myszą powoduje przesuwanie menu interakcji. Użyteczne w przypadku kiedy rozmiar ekranu jest ograniczony. Mantiene el cursor centrado y despliega los menús alrededor. Útil si el tamaño de la pantalla es limitado. Manter o cursor centralizado e mover o menu de opções. Útil caso o tamanho da tela seja limitado. + Mantieni il cursore centrato e sposta il menù intorno. Utile se lo schermo è piccolo. Do action when releasing menu key @@ -165,6 +168,7 @@ Realizar la acción al soltar la tecla menu Execute a ação quando soltar a tecla de menu Cselekvés végrehajtása a menügomb elengedésekor + Esegui l'azione quando rilasci il tasto menu Interaction Text Size @@ -176,6 +180,7 @@ Rozmiar tekstu interakcji Tamanho do texto de interação Cselekvő szöveg mérete + Dimensione del testo d'interazione Interaction Text Shadow @@ -187,6 +192,7 @@ Cień tekstu interakcji Sombra do texto de interação Cselekvő szöveg árnyéka + Ombra del testo d'interazione Allows controlling the text's shadow. Outline ignores custom shadow colors. @@ -198,6 +204,7 @@ Pozwala kontrolować cień tekstu. Kontury ignorują niestandardowe kolory cienia. Permite controlar a sombra do texto. Contorno ignora sombras com cores customizadas. 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 @@ -209,6 +216,7 @@ Kontur Contorno Körvonal + Contorno - + \ No newline at end of file diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml index 77a16db525..3cd5fa24fa 100644 --- a/addons/laser/stringtable.xml +++ b/addons/laser/stringtable.xml @@ -1,38 +1,42 @@ - - - - - Laser Code - Lasercode - Kod lasera - Code laser - Лазерный код - Código do Laser - Lézerkód - Código del láser - Laser kód - - - Laser - Cycle Code Up - Lasercode + - Laser - Następny kod - Laser - Code + - Лазер - увеличить частоту - Laser - Alternar Código para Cima - Lézer - kódciklus növelése - Láser - Aumentar código - Laser - Kód + - - - Laser - Cycle Code Down - Lasercode - - Laser - Poprzedni kod - Laser - Code - - Лазер - уменьшить частоту - Laser - Alternar Código para Baixo - Lézer - kódciklus csökkentése - Láser - Reducir código - Laser - Kód - - - + + + + + + Laser Code + Lasercode + Kod lasera + Code laser + Лазерный код + Código do Laser + Lézerkód + Código del láser + Laser kód + Codice laser + + + Laser - Cycle Code Up + Lasercode + + Laser - Następny kod + Laser - Code + + Лазер - увеличить частоту + Laser - Alternar Código para Cima + Lézer - kódciklus növelése + Láser - Aumentar código + Laser - Kód + + Codice laser + + + + Laser - Cycle Code Down + Lasercode - + Laser - Poprzedni kod + Laser - Code - + Лазер - уменьшить частоту + Laser - Alternar Código para Baixo + Lézer - kódciklus csökkentése + Láser - Reducir código + Laser - Kód - + Codice laser - + + \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 42749f8ae8..215d9ae766 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1271,6 +1271,7 @@ Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz Kit de primeiros socorros para sutura ou tratamentos avançados Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli + Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. Use Personal Aid Kit @@ -1282,6 +1283,7 @@ Elsősegélycsomag használata Usar o kit de primeiros socorros Použít osobní lékárničku + Usa il pronto soccorso personale Surgical Kit @@ -1777,7 +1779,7 @@ He's lost some blood - Ha perso molto sangue + Ha perso sangue Ha perdido un poco de sangre Есть кровопотеря Er hat etwas Blut verloren @@ -1797,6 +1799,7 @@ Il a perdu beaucoup de sang Ztratil hodně krve Ele perdeu muito sangue + Ha perso molto sangue He hasn't lost blood @@ -2240,6 +2243,7 @@ Styl menu (Zdravotní) Estilo do menu (Médico) Menü stílusa (Orvosi) + Stile del menù (medico) Select the type of menu you prefer; default 3d selections or radial. @@ -2251,6 +2255,7 @@ Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. Zvolte typ menu: základní 3D výběr nebo kruhový + Seleziona il tipo di menù che preferisci: selezione 3d predefinita o radiale. Selections (3d) @@ -2262,6 +2267,7 @@ Seleção (3d) Választékok (3D) 3D výběr + Selezione (3D) Radial @@ -2273,6 +2279,7 @@ Radial Kerek Kruhový + Radiale Scrape @@ -2680,6 +2687,7 @@ Tratando ... Tratando... Ošetřuji ... + Curando ... Removing Tourniquet ... @@ -2691,6 +2699,7 @@ Érszorító eltávolítása ... Sundavám škrtidlo ... Снятие жгута ... + Togliendo il laccio emostatico ... diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 12472343be..076b38bbf1 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -1,4 +1,5 @@  + @@ -11,6 +12,7 @@ 82mm hatótáv-tábla Tabela de distâncias de para 82mm 82mm Rangetable + Tavola di tiro 82mm Range Table for the MK6 82mm Mortar @@ -22,6 +24,7 @@ Hatótáv-tábla a MK6 82mm-es mozsárhoz Tabela de distâncias para morteiro MK6 82mm Rangetable pro MK6 82mm minomet + Tavola di tiro per il mortaio calibro 82mm MK6 Open 82mm Rangetable @@ -33,6 +36,7 @@ 82mm hatótáv-tábla megnyitása Abrir tabela de distâncias para 82mm Otevřít 82mm Rangetable + Apri la tavola di tiro 82mm Charge @@ -44,6 +48,7 @@ Töltés Carregar Nabít + Carica - + \ No newline at end of file diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index b6f2431eef..0255ddfd89 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -1,4 +1,5 @@  + @@ -95,6 +96,7 @@ JVN (Large) Éjjellátó szemüveg (széles látószögű) Óculos de visão noturna (Panorâmico) + Occhiali notturni (Larghi) Brightness: %1 @@ -133,4 +135,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 378661da50..444b3c6b7a 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,4 +1,5 @@  + @@ -239,6 +240,7 @@ UI Skalierung Beállításmenü kezelőfelületének skálázása Escalar o menu de opções + Proporzioni della interfaccia utente \ No newline at end of file diff --git a/addons/reload/stringtable.xml b/addons/reload/stringtable.xml index 316c7f2236..9e3cf6c1b0 100644 --- a/addons/reload/stringtable.xml +++ b/addons/reload/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/reloadlaunchers/stringtable.xml b/addons/reloadlaunchers/stringtable.xml index 2585358591..d82970a3d5 100644 --- a/addons/reloadlaunchers/stringtable.xml +++ b/addons/reloadlaunchers/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index cd0fda2780..5c701d7dc5 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -1,4 +1,5 @@  + @@ -35,6 +36,7 @@ Téléportation à la base Teletransportar para a Base Bázisra teleportálás + Teleporta alla base Teleport to Rallypoint @@ -46,6 +48,7 @@ Téléporation au point de ralliement Teletransportar para o ponto de encontro Gyülekezőpontra teleportálás + Teleporta al rallypoint Teleported to Base @@ -144,4 +147,4 @@ Ponto de encontro Independente - + \ No newline at end of file From 69648f0e1b2a213cae8100749b167871a84e6dbe Mon Sep 17 00:00:00 2001 From: SAM Date: Sun, 10 May 2015 12:00:19 +0200 Subject: [PATCH 0148/1101] Added adaptive view distance depending on vehicle --- addons/viewdistance/ACE_Settings.hpp | 36 ++++++++++++++++--- addons/viewdistance/CfgVehicles.hpp | 8 ++++- addons/viewdistance/XEH_preInit.sqf | 1 + .../functions/fnc_adaptViewDistance.sqf | 35 ++++++++++++++++++ .../functions/fnc_changeViewDistance.sqf | 21 +++++++---- addons/viewdistance/functions/fnc_init.sqf | 18 +++++++--- 6 files changed, 103 insertions(+), 16 deletions(-) create mode 100644 addons/viewdistance/functions/fnc_adaptViewDistance.sqf diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index 6572e4790e..46f7a8955a 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -1,11 +1,27 @@ class ACE_Settings { - class GVAR(viewDistance) { + class GVAR(viewDistanceOnFoot) { typeName = "SCALAR"; isClientSettable = 1; - value = 11; // index, NOT value // not sure what to set this to. + 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 = "Change View Distance"; - description = "Changes in game view distance"; + displayName = "Client View Distance (On Foot)"; + description = "Changes in game view distance when the player is on foot."; + }; + class GVAR(viewDistanceLandVehicle) { + typeName = "SCALAR"; + isClientSettable = 1; + 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 = "Client View Distance (Land Vehicle)"; + description = "Changes in game view distance when the player is in a land vehicle."; + }; + class GVAR(viewDistanceAirVehicle) { + typeName = "SCALAR"; + isClientSettable = 1; + 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 = "Client View Distance (Air Vehicle)"; + description = "Changes in game view distance when the player is in an air vehicle."; }; class GVAR(limitViewDistance) { typeName = "SCALAR"; @@ -13,6 +29,18 @@ class ACE_Settings { displayName = "View Distance Limit"; description = "Limit for client's view distance set here and can overridden by module"; }; + class GVAR(terrainGrid) { + typeName = "SCALAR"; + value = 10; // MP default as found in: https://community.bistudio.com/wiki/setTerrainGrid + displayName = "Client Terrain Grid"; + description = "Changes in game terrain grid"; + }; + class GVAR(shadows) { + typeName = "SCALAR"; + value = 200; // MP default as found in: https://community.bistudio.com/wiki/setObjectViewDistance + displayName = "Client Shadows distance"; + description = "Changes in game shadows"; + }; }; // 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 2a2f85e611..99897f5441 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -11,10 +11,16 @@ class CfgVehicles { class Arguments { class moduleViewDistanceLimit { displayName = "View Distance Limit"; - description = "Sets the limit for how high clients can raise their view distance (< 10000)"; + description = "Sets the limit for how high clients can raise their view distance (<= 10000)"; typeName = "NUMBER"; defaultValue = 10000; }; + class moduleTerrainGridLimit { + displayName = "Terrain Grid Limit"; + description = "Sets the limit for how high clients can raise their terrain grid (<= 50)"; + typeName = "NUMBER"; + defaultValue = 50; // range is 3.125 - 50 Reference: https://community.bistudio.com/wiki/setTerrainGrid + }; }; }; }; \ No newline at end of file diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index 883e393c8a..a44fab6169 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -6,5 +6,6 @@ PREP(initModule); PREP(init); PREP(returnValue); PREP(changeViewDistance); +PREP(adaptViewDistance); ADDON = true; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf new file mode 100644 index 0000000000..bc56955893 --- /dev/null +++ b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf @@ -0,0 +1,35 @@ +/* + * Author: Winter + * Sets the player's current view distance according to whether s/he is on foot, in a land vehicle or in an air vehicle. + * + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call ace_viewdistance_fnc_adaptViewDistance; + * + * Public: Yes + */ + +#include "script_component.hpp" + +private["_land_vehicle","_air_vehicle"]; + +_land_vehicle = (vehicle player) isKindOf "LandVehicle"; +_air_vehicle = (vehicle player) isKindOf "Air"; + +if (!_land_vehicle && !_air_vehicle) exitWith { + [GVAR(viewDistanceOnFoot),true] call FUNC(changeViewDistance); +}; + +if (_land_vehicle) exitWith { + [GVAR(viewDistanceLandVehicle),true] call FUNC(changeViewDistance); +}; + +if (_air_vehicle) exitWith { + [GVAR(viewDistanceAirVehicle),true] call FUNC(changeViewDistance); +}; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index f1274343d8..596c86d521 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -4,7 +4,8 @@ * * * Arguments: - * None + * 0: View Distance setting INDEX + * 1: Show Prompt * * Return Value: * None @@ -18,18 +19,24 @@ #include "script_component.hpp" private ["_text","_new_view_distance","_view_distance_limit"]; +PARAMS_2(_index_requested,_prompt); -// Change the received index number into an actual view distance: -_new_view_distance = [GVAR(viewDistance)] call FUNC(returnValue); +_new_view_distance = [_index_requested] call FUNC(returnValue); // change the index into an actual view distance value _view_distance_limit = GVAR(limitViewDistance); // Grab the limit if (_new_view_distance <= _view_distance_limit) then { - _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; - [_text,1] call EFUNC(common,displayTextStructured); + if (_prompt) then { + _text = composeText ["View distance: ",str(_new_view_distance)]; + [_text,1] call EFUNC(common,displayTextStructured); + }; setViewDistance _new_view_distance; setObjectViewDistance (0.8 * _new_view_distance); // maybe make this 0.8 a constant? } else { - _text = composeText ["That option is not allowed! The limit is: ",str(_view_distance_limit)]; - [_text,1] call EFUNC(common,displayTextStructured); + if (_prompt) then { + _text = composeText ["That option is invalid! The limit is: ",str(_view_distance_limit)]; + [_text,1] call EFUNC(common,displayTextStructured); + setViewDistance _view_distance_limit; + setObjectViewDistance (0.8 * _view_distance_limit); // maybe make this 0.8 a constant? + }; }; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_init.sqf b/addons/viewdistance/functions/fnc_init.sqf index 0d5ec7cf79..72fc2ee0e6 100644 --- a/addons/viewdistance/functions/fnc_init.sqf +++ b/addons/viewdistance/functions/fnc_init.sqf @@ -19,9 +19,19 @@ if (!hasInterface) exitWith {}; -// Set the EH which waits for the View Distance setting to be changed +if (viewDistance > GVAR(limitViewDistance)) then { + setViewDistance GVAR(limitViewDistance); // force the view distance down to the limit. + setObjectViewDistance (0.8 * GVAR(limitViewDistance)); +} else { + [] call FUNC(adaptViewDistance); // adapt view distance in the beginning according to whether client is on foot or vehicle. +}; + +// Set the EH which waits for any of the view distance settings to be changed (avoids the player having to enter or leave their vehicle for the changes to have effect.) ["SettingChanged",{ - if (_this select 0 == QGVAR(viewDistance)) then { - [] call FUNC(changeViewDistance); + if ((_this select 0 == QGVAR(viewDistanceOnFoot)) || (_this select 0 == QGVAR(viewDistanceLandVehicle)) || (_this select 0 == QGVAR(viewDistanceAirVehicle))) then { + [] call FUNC(adaptViewDistance); }; -},true] call ace_common_fnc_addEventHandler; \ No newline at end of file +},true] call ace_common_fnc_addEventHandler; + +// Set the EH which waits for a vehicle change to automatically swap to On Foot/In Land Vehicle/In Air Vehicle +["playerVehicleChanged",{[] call FUNC(adaptViewDistance)},true] call ace_common_fnc_addEventHandler; \ No newline at end of file From c05a91f5308d0f0ab63059c2ef17f67d73308d1c Mon Sep 17 00:00:00 2001 From: SAM Date: Sun, 10 May 2015 12:15:34 +0200 Subject: [PATCH 0149/1101] Suppress prompts when changing vehicle. They're only shown when the player changes the setting. --- .../viewdistance/functions/fnc_adaptViewDistance.sqf | 10 ++++++---- .../viewdistance/functions/fnc_changeViewDistance.sqf | 2 +- addons/viewdistance/functions/fnc_init.sqf | 8 ++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf index bc56955893..946c601fc8 100644 --- a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf @@ -4,7 +4,7 @@ * * * Arguments: - * None + * 0: Show Prompt * * Return Value: * None @@ -17,19 +17,21 @@ #include "script_component.hpp" +PARAMS_1(_show_prompt); + private["_land_vehicle","_air_vehicle"]; _land_vehicle = (vehicle player) isKindOf "LandVehicle"; _air_vehicle = (vehicle player) isKindOf "Air"; if (!_land_vehicle && !_air_vehicle) exitWith { - [GVAR(viewDistanceOnFoot),true] call FUNC(changeViewDistance); + [GVAR(viewDistanceOnFoot),_show_prompt] call FUNC(changeViewDistance); }; if (_land_vehicle) exitWith { - [GVAR(viewDistanceLandVehicle),true] call FUNC(changeViewDistance); + [GVAR(viewDistanceLandVehicle),_show_prompt] call FUNC(changeViewDistance); }; if (_air_vehicle) exitWith { - [GVAR(viewDistanceAirVehicle),true] call FUNC(changeViewDistance); + [GVAR(viewDistanceAirVehicle),_show_prompt] call FUNC(changeViewDistance); }; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 596c86d521..bf5f610c0d 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -26,7 +26,7 @@ _view_distance_limit = GVAR(limitViewDistance); // Grab the limit if (_new_view_distance <= _view_distance_limit) then { if (_prompt) then { - _text = composeText ["View distance: ",str(_new_view_distance)]; + _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; [_text,1] call EFUNC(common,displayTextStructured); }; setViewDistance _new_view_distance; diff --git a/addons/viewdistance/functions/fnc_init.sqf b/addons/viewdistance/functions/fnc_init.sqf index 72fc2ee0e6..07befd157c 100644 --- a/addons/viewdistance/functions/fnc_init.sqf +++ b/addons/viewdistance/functions/fnc_init.sqf @@ -23,15 +23,15 @@ if (viewDistance > GVAR(limitViewDistance)) then { setViewDistance GVAR(limitViewDistance); // force the view distance down to the limit. setObjectViewDistance (0.8 * GVAR(limitViewDistance)); } else { - [] call FUNC(adaptViewDistance); // adapt view distance in the beginning according to whether client is on foot or vehicle. + [true] call FUNC(adaptViewDistance); // adapt view distance in the beginning according to whether client is on foot or vehicle. }; -// Set the EH which waits for any of the view distance settings to be changed (avoids the player having to enter or leave their vehicle for the changes to have effect.) +// Set the EH which waits for any of the view distance settings to be changed, avoids the player having to enter or leave a vehicle for the changes to have effect. ["SettingChanged",{ if ((_this select 0 == QGVAR(viewDistanceOnFoot)) || (_this select 0 == QGVAR(viewDistanceLandVehicle)) || (_this select 0 == QGVAR(viewDistanceAirVehicle))) then { - [] call FUNC(adaptViewDistance); + [true] call FUNC(adaptViewDistance); }; },true] call ace_common_fnc_addEventHandler; // Set the EH which waits for a vehicle change to automatically swap to On Foot/In Land Vehicle/In Air Vehicle -["playerVehicleChanged",{[] call FUNC(adaptViewDistance)},true] call ace_common_fnc_addEventHandler; \ No newline at end of file +["playerVehicleChanged",{[false] call FUNC(adaptViewDistance)},true] call ace_common_fnc_addEventHandler; \ No newline at end of file From 2ce133675a6a946a69f3686d0742881b41889aa6 Mon Sep 17 00:00:00 2001 From: SAM Date: Sun, 10 May 2015 12:28:58 +0200 Subject: [PATCH 0150/1101] Removed terrain grid related configs --- addons/viewdistance/CfgVehicles.hpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 99897f5441..870c669601 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -15,12 +15,6 @@ class CfgVehicles { typeName = "NUMBER"; defaultValue = 10000; }; - class moduleTerrainGridLimit { - displayName = "Terrain Grid Limit"; - description = "Sets the limit for how high clients can raise their terrain grid (<= 50)"; - typeName = "NUMBER"; - defaultValue = 50; // range is 3.125 - 50 Reference: https://community.bistudio.com/wiki/setTerrainGrid - }; }; }; }; \ No newline at end of file From 6a6681872cc1f3d29009c1fa666deed8eec4647b Mon Sep 17 00:00:00 2001 From: SAM Date: Sun, 10 May 2015 12:54:53 +0200 Subject: [PATCH 0151/1101] Replaced player with ACE_player --- addons/viewdistance/functions/fnc_adaptViewDistance.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf index 946c601fc8..c81b522747 100644 --- a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf @@ -21,8 +21,8 @@ PARAMS_1(_show_prompt); private["_land_vehicle","_air_vehicle"]; -_land_vehicle = (vehicle player) isKindOf "LandVehicle"; -_air_vehicle = (vehicle player) isKindOf "Air"; +_land_vehicle = (vehicle ACE_player) isKindOf "LandVehicle"; +_air_vehicle = (vehicle ACE_player) isKindOf "Air"; if (!_land_vehicle && !_air_vehicle) exitWith { [GVAR(viewDistanceOnFoot),_show_prompt] call FUNC(changeViewDistance); From 283768fabb2da7e5741a3c305be449bff8e07699 Mon Sep 17 00:00:00 2001 From: SAM Date: Sun, 10 May 2015 12:56:05 +0200 Subject: [PATCH 0152/1101] Fixed code style in switch statement --- .../functions/fnc_returnValue.sqf | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/addons/viewdistance/functions/fnc_returnValue.sqf b/addons/viewdistance/functions/fnc_returnValue.sqf index 86b940d582..80e82feee2 100644 --- a/addons/viewdistance/functions/fnc_returnValue.sqf +++ b/addons/viewdistance/functions/fnc_returnValue.sqf @@ -21,21 +21,20 @@ PARAMS_1(_index); private ["_return"]; -_return = switch (_index) do -{ - case 0: {1500}; - case 1: {2000}; - case 2: {2500}; - case 3: {3000}; - case 4: {3500}; - case 5: {4000}; - case 6: {5000}; - case 7: {6000}; - case 8: {7000}; - case 9: {8000}; - case 10: {9000}; - case 11: {10000}; - default {1000}; +_return = switch (_index) do { + case 0: {1500}; + case 1: {2000}; + case 2: {2500}; + case 3: {3000}; + case 4: {3500}; + case 5: {4000}; + case 6: {5000}; + case 7: {6000}; + case 8: {7000}; + case 9: {8000}; + case 10: {9000}; + case 11: {10000}; + default {1000}; }; _return; \ No newline at end of file From 495e94f3f0071d2355e6af636c6bb15a3ac768b9 Mon Sep 17 00:00:00 2001 From: SAM Date: Sun, 10 May 2015 13:04:08 +0200 Subject: [PATCH 0153/1101] Merged fnc_init.sqf into XEH_postInit.sqf --- addons/viewdistance/XEH_postInit.sqf | 19 ++++++++++- addons/viewdistance/XEH_preInit.sqf | 1 - addons/viewdistance/functions/fnc_init.sqf | 37 ---------------------- 3 files changed, 18 insertions(+), 39 deletions(-) delete mode 100644 addons/viewdistance/functions/fnc_init.sqf diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index f5c15322bf..d3924666c2 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -1,3 +1,20 @@ #include "script_component.hpp" -[] call FUNC(init); \ No newline at end of file +if (!hasInterface) exitWith {}; + +if (viewDistance > GVAR(limitViewDistance)) then { + setViewDistance GVAR(limitViewDistance); // force the view distance down to the limit. + setObjectViewDistance (0.8 * GVAR(limitViewDistance)); +} else { + [true] call FUNC(adaptViewDistance); // adapt view distance in the beginning according to whether client is on foot or vehicle. +}; + +// Set the EH which waits for any of the view distance settings to be changed, avoids the player having to enter or leave a vehicle for the changes to have effect. +["SettingChanged",{ + if ((_this select 0 == QGVAR(viewDistanceOnFoot)) || (_this select 0 == QGVAR(viewDistanceLandVehicle)) || (_this select 0 == QGVAR(viewDistanceAirVehicle))) then { + [true] call FUNC(adaptViewDistance); + }; +},true] call ace_common_fnc_addEventHandler; + +// Set the EH which waits for a vehicle change to automatically swap to On Foot/In Land Vehicle/In Air Vehicle +["playerVehicleChanged",{[false] call FUNC(adaptViewDistance)},true] call ace_common_fnc_addEventHandler; \ No newline at end of file diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index a44fab6169..a55e0a3075 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -3,7 +3,6 @@ ADDON = false; PREP(initModule); -PREP(init); PREP(returnValue); PREP(changeViewDistance); PREP(adaptViewDistance); diff --git a/addons/viewdistance/functions/fnc_init.sqf b/addons/viewdistance/functions/fnc_init.sqf deleted file mode 100644 index 07befd157c..0000000000 --- a/addons/viewdistance/functions/fnc_init.sqf +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Author: Winter - * Assigns the Event Handler which triggers when a player adjusts their view distance in the menu - * - * - * Arguments: - * None - * - * Return Value: - * None - * - * Example: - * [] call ace_viewdistance_fnc_initViewDistance; - * - * Public: Yes - */ - -#include "script_component.hpp" - -if (!hasInterface) exitWith {}; - -if (viewDistance > GVAR(limitViewDistance)) then { - setViewDistance GVAR(limitViewDistance); // force the view distance down to the limit. - setObjectViewDistance (0.8 * GVAR(limitViewDistance)); -} else { - [true] call FUNC(adaptViewDistance); // adapt view distance in the beginning according to whether client is on foot or vehicle. -}; - -// Set the EH which waits for any of the view distance settings to be changed, avoids the player having to enter or leave a vehicle for the changes to have effect. -["SettingChanged",{ - if ((_this select 0 == QGVAR(viewDistanceOnFoot)) || (_this select 0 == QGVAR(viewDistanceLandVehicle)) || (_this select 0 == QGVAR(viewDistanceAirVehicle))) then { - [true] call FUNC(adaptViewDistance); - }; -},true] call ace_common_fnc_addEventHandler; - -// Set the EH which waits for a vehicle change to automatically swap to On Foot/In Land Vehicle/In Air Vehicle -["playerVehicleChanged",{[false] call FUNC(adaptViewDistance)},true] call ace_common_fnc_addEventHandler; \ No newline at end of file From 8ccb2a47ffb7f3786330b018240fcc74019fec92 Mon Sep 17 00:00:00 2001 From: bux578 Date: Sun, 10 May 2015 13:10:45 +0200 Subject: [PATCH 0154/1101] add rallypoint and switchunits documentation --- documentation/missionmaker/mission-tools.md | 58 +++++++++++++++++++++ documentation/missionmaker/modules.md | 4 +- 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 documentation/missionmaker/mission-tools.md diff --git a/documentation/missionmaker/mission-tools.md b/documentation/missionmaker/mission-tools.md new file mode 100644 index 0000000000..cb167afb7b --- /dev/null +++ b/documentation/missionmaker/mission-tools.md @@ -0,0 +1,58 @@ +--- +layout: wiki +title: Mission tools +group: missionmaker +order: 10 +parent: wiki +--- + +## 1. ACE Rallypoints +*Part of: ace_respawn* + +"ACE rally points" is a two way teleport system between two positions. Usually this is used to transport units that have died during a mission back to the front line. The rally points are portrayed by flagpoles (West, East and Independant flagpoles are available) that have a "Base" and an "Exit" version. + +They can be found in the editor under: "Empty" >> "ACE Respawn" + +**Classnames:** +* `ACE_Rallypoint_West`, `ACE_RallypointExit_West` +* `ACE_Rallypoint_East`, `ACE_RallypointExit_East` +* `ACE_Rallypoint_Independent`, `ACE_RallypointExit_Independent` + +Using the Interaction Menu on a rallypoint offers the ability to teleport from one flagpole to the other flagpole and vice versa. + +If you want to change the texture of the flag use this line: +```c++ +this setFlagTexture 'path\to\my\texture\my_awesome_clan_logo.paa'; +``` + +*Note: You can't place more than one rallypoint of the same type.* + +All units synced to the ["Rallypoint System" module](./modules.html#1.14-rallypoint-system) are able to move the rallypoint. + +
+
Note:
+

It's important to mention that this doesn't work for player who join during a mission (JIP = Join in progress). That's something we can't change because that's the way Bohemia has implemented their module framework.

+
+ +To enable other units to move them add this to the unit's initialization code: + +```c++ +_unit setVariable ["ACE_canMoveRallypoint", true, true]; +``` + +## 2. ACE SwitchUnits +*Part of: ace_switchunits* + +"ACE SwitchUnits" is a tool for misson 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. + +In its current form you're able to switch to infantry (vehicles, etc. are planned) from all four sides (West, East, Independent, Civilian). + +To enable a player to control AI add the following to its init line: +```sqf +this setVariable ["ACE_CanSwitchUnits", true]; +``` +Once this player spawns, all controllable AI will be marked on his map and he'll be able to click on the map to switch to this unit. The initial unit will be prone to damage, but has no equipment and can't run. So it would be wise to hide or move this unit far from other players. + +The [module settings](./modules.html#1.16-switchunits-system) define which side a player can control or how big the radius of the safe zone is. The safe zone is a circular zone around AI units that must be clear from players of an opposing side to be able to switch to. \ No newline at end of file diff --git a/documentation/missionmaker/modules.md b/documentation/missionmaker/modules.md index a6d75531dc..f67b271435 100644 --- a/documentation/missionmaker/modules.md +++ b/documentation/missionmaker/modules.md @@ -235,7 +235,7 @@ This module enables Mission Makers to specificly enable units to move a rallypoi

It's important to mention that this doesn't work for player who join during a mission (JIP = Join in progress). That's something we can't change because that's the way Bohemia has implemented their module framework.

-To enable JIP players to move rally points have a look at [ACE Rallypoints (to be done)](#). +To enable JIP players to move rally points have a look at [ACE Rallypoints](./mission-tools.html#1-ace-rallypoints). ### 1.15 Respawn System @@ -252,7 +252,7 @@ Respawn with the gear a player had just before his death.
### 1.16 SwitchUnits System *Part of: ace_switchunits* -The [SwitchUnits System (to be done)](#) enables players to control certain AI units on the map. +The [SwitchUnits System](mission-tools.html#1-ace-switchunits) enables players to control certain AI units on the map. **Settings:** From b927c5d4f5ac01ff29c0db2322681a40edaf7f3b Mon Sep 17 00:00:00 2001 From: bux578 Date: Sun, 10 May 2015 13:13:38 +0200 Subject: [PATCH 0155/1101] wrong syntax highlighting --- documentation/missionmaker/mission-tools.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/documentation/missionmaker/mission-tools.md b/documentation/missionmaker/mission-tools.md index cb167afb7b..a7104676f0 100644 --- a/documentation/missionmaker/mission-tools.md +++ b/documentation/missionmaker/mission-tools.md @@ -50,7 +50,8 @@ The most prominent feature of ACE SwitchUnits is that you can add it to nearly e In its current form you're able to switch to infantry (vehicles, etc. are planned) from all four sides (West, East, Independent, Civilian). To enable a player to control AI add the following to its init line: -```sqf + +```c++ this setVariable ["ACE_CanSwitchUnits", true]; ``` Once this player spawns, all controllable AI will be marked on his map and he'll be able to click on the map to switch to this unit. The initial unit will be prone to damage, but has no equipment and can't run. So it would be wise to hide or move this unit far from other players. From 0aac0ac30839dfc50224b93b3396c3cba1b8e8d7 Mon Sep 17 00:00:00 2001 From: bux578 Date: Sun, 10 May 2015 13:15:47 +0200 Subject: [PATCH 0156/1101] fix anchor links sorry :( --- documentation/missionmaker/modules.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/missionmaker/modules.md b/documentation/missionmaker/modules.md index f67b271435..ff18139482 100644 --- a/documentation/missionmaker/modules.md +++ b/documentation/missionmaker/modules.md @@ -235,7 +235,7 @@ This module enables Mission Makers to specificly enable units to move a rallypoi

It's important to mention that this doesn't work for player who join during a mission (JIP = Join in progress). That's something we can't change because that's the way Bohemia has implemented their module framework.

-To enable JIP players to move rally points have a look at [ACE Rallypoints](./mission-tools.html#1-ace-rallypoints). +To enable JIP players to move rally points have a look at [ACE Rallypoints](./mission-tools.html#1.-ace-rallypoints). ### 1.15 Respawn System @@ -252,7 +252,7 @@ Respawn with the gear a player had just before his death.
### 1.16 SwitchUnits System *Part of: ace_switchunits* -The [SwitchUnits System](mission-tools.html#1-ace-switchunits) enables players to control certain AI units on the map. +The [SwitchUnits System](./mission-tools.html#2.-ace-switchunits) enables players to control certain AI units on the map. **Settings:** From cb64f7d1a9276d1bf256e66039b57f2b3f281cc5 Mon Sep 17 00:00:00 2001 From: SAM Date: Sun, 10 May 2015 13:28:18 +0200 Subject: [PATCH 0157/1101] Adjusted PBOPREFIX --- addons/viewdistance/$PBOPREFIX$ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/viewdistance/$PBOPREFIX$ b/addons/viewdistance/$PBOPREFIX$ index 39789fcaba..278df54db3 100644 --- a/addons/viewdistance/$PBOPREFIX$ +++ b/addons/viewdistance/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\addons\blank \ No newline at end of file +z\ace\addons\viewdistance \ No newline at end of file From 2bb3a0f139374ae9e06c50b636d0b3bdb83d1f46 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Sun, 10 May 2015 16:19:46 +0200 Subject: [PATCH 0158/1101] Cleanup #1095 - Fix tabs - Remove tabler comments - Restore one removed Russian string --- addons/aircraft/stringtable.xml | 2 +- addons/captives/stringtable.xml | 4 ++-- addons/disposable/stringtable.xml | 2 +- addons/hearing/stringtable.xml | 2 +- addons/interact_menu/stringtable.xml | 3 +-- addons/interaction/stringtable.xml | 16 ++++++++-------- addons/laser/stringtable.xml | 3 +-- addons/logistics_wirecutter/stringtable.xml | 2 +- addons/microdagr/stringtable.xml | 4 ++-- addons/mk6mortar/stringtable.xml | 3 +-- addons/nametags/stringtable.xml | 4 ++-- addons/nightvision/stringtable.xml | 3 +-- addons/optionsmenu/stringtable.xml | 3 +-- addons/respawn/stringtable.xml | 3 +-- addons/vehiclelock/stringtable.xml | 2 +- addons/winddeflection/stringtable.xml | 1 + 16 files changed, 26 insertions(+), 31 deletions(-) diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index a1fb5aaacf..e917ca7e9d 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -34,7 +34,7 @@ Otevřít nákladní prostor Rakodórámpa nyitása Открыть грузовой отсек - Apri la rampa di carico + Apri la rampa di carico Abrir porta de carga
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index b45e8c3541..def173c55b 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -155,7 +155,7 @@ Podejmij walkę ponownie Прекратить сдачу в плен Megadás abbahagyása - Smetti di arrenderti + Smetti di arrenderti Only use on alive units @@ -191,7 +191,7 @@ Nie ma nic pod kursorem Ничего не выделено Semmi sincs az egér alatt - Nessuna selezione + Nessuna selezione
diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml index 526844afcd..2cbd8b0012 100644 --- a/addons/disposable/stringtable.xml +++ b/addons/disposable/stringtable.xml @@ -10,7 +10,7 @@ Lanzador utilizado Elhasznált kilövőcső Отстрелянная труба - Tubo usato + Tubo usato Tubo utilizado
diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 40fc6929f7..e6f59604a3 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -106,7 +106,7 @@ Vypnout pískání v uších Wyłącz dzwonienie w uszach Fülcsengés letiltása - Disabilita i fischi nelle orecchie + Disabilita i fischi nelle orecchie Desabilitar zumbido de ouvidos diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 320fa34a5d..8f60fa6879 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -1,5 +1,4 @@  - @@ -219,4 +218,4 @@ Contorno - \ No newline at end of file + diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 1da22b649e..32a901507b 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -575,7 +575,7 @@ Přiřadit k červeným Назначить в Красную группу Assigner à rouge - Assegna al team rosso + Assegna al team rosso Assign Green @@ -587,7 +587,7 @@ Přiřadit k zeleným Назначить в Зеленую группу Assigner à vert - Assegna al team verde + Assegna al team verde Assign Blue @@ -599,7 +599,7 @@ Přiřadit k modrým Назначить в Синюю группу Assigner à bleu - Assegna al team blu + Assegna al team blu Assign Yellow @@ -611,7 +611,7 @@ Přiřadit ke žlutým Назначить в Желтую группу Assigner à jaune - Assegna al team giallo + Assegna al team giallo Join Red @@ -623,7 +623,7 @@ Připojit k červeným Присоединиться к Красной группе Rejoindre rouge - Unirsi al team rosso + Unirsi al team rosso Join Green @@ -635,7 +635,7 @@ Připojit k zeleným Присоединиться к Зеленой группе Rejoindre vert - Unirsi al team verde + Unirsi al team verde Join Blue @@ -647,7 +647,7 @@ Připojit k modrým Присоединиться к Синей группе Rejoindre bleu - Unirsi al team blu + Unirsi al team blu Join Yellow @@ -659,7 +659,7 @@ Připojit ke žlutým Присоединиться к Жёлтой группе Rejoindre jaune - Unirsi al team giallo + Unirsi al team giallo You joined Team %1 diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml index 3cd5fa24fa..8ea28398e0 100644 --- a/addons/laser/stringtable.xml +++ b/addons/laser/stringtable.xml @@ -1,5 +1,4 @@  - @@ -39,4 +38,4 @@ Codice laser - - \ No newline at end of file + diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml index eb3ad70ce1..b9e4023765 100644 --- a/addons/logistics_wirecutter/stringtable.xml +++ b/addons/logistics_wirecutter/stringtable.xml @@ -22,7 +22,7 @@ Służą do cięcia drutu i płotów Pince coupante Drótok, huzalok, és kábelek vágására alkalmas olló. - Trancia da ferro + Trancia da ferro Cortador de Arame diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index 55eccb1acf..af2b303f2b 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -22,7 +22,7 @@ Récepteur GPS MicroDAGR MicroDAGR pokročílá GPS příjímač MicroDAGR fejlett GPS vevőegység - Ricevitore GPS avanzato MicroDAGR + Ricevitore GPS avanzato MicroDAGR Recepitor GPS avançado MicroDAGR @@ -46,7 +46,7 @@ Mils Mils Mil - Mils + Mils Mils: diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 076b38bbf1..fd2fe4aa4c 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -1,5 +1,4 @@  - @@ -51,4 +50,4 @@ Carica - \ No newline at end of file + diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index fd88a8fbc2..8daae5cd5d 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -71,7 +71,7 @@ Показывать информацию об экипаже Jármű-legénység adatainak mutatása Mostrar tripulantes - Mostra l'elenco del personale a bordo + Mostra l'elenco del personale a bordo Show name tags for AI units @@ -106,7 +106,7 @@ Couleur d'affichage par défaut (si dans aucun groupe) Standardní barva jmenovek (pro nečleny jednotky) Alap névcímke-szín (csoporton kívüli személyek) - Colore dei nomi non appartenenti al gruppo + Colore dei nomi non appartenenti al gruppo Cor padrão do nome (unidades fora do grupo) diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index 0255ddfd89..9fe8593e13 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -1,5 +1,4 @@  - @@ -135,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 444b3c6b7a..d5de0c1426 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,5 +1,4 @@  - @@ -243,4 +242,4 @@ Proporzioni della interfaccia utente - \ No newline at end of file + diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 5c701d7dc5..539bb4b530 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -1,5 +1,4 @@  - @@ -147,4 +146,4 @@ Ponto de encontro Independente - \ No newline at end of file + diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 498e526156..6ccfc8347b 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -22,7 +22,7 @@ Zamknout vozidlo Jármű zárása Закрыть машину - Chiudi il veicolo a chiave + Chiudi il veicolo a chiave Travar Veículo diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 9336e6c457..4ebcc81bee 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -18,6 +18,7 @@ Direction: %1 Kierunek: %1 Dirección: %1 + Направление: %1° Směr: %1 Direction %1 Windrichtung: %1 From 235534292f316dc3d85463b70191d1dc6d04f463 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 10 May 2015 16:31:56 +0200 Subject: [PATCH 0159/1101] Rifle dispersion overhaul: *Added dispersion values for the new marksmen rifles (when needed) *Overworked some of the (ridiculous) existing values *Made use of the vanilla values whenever possible --- addons/ballistics/CfgWeapons.hpp | 175 ++++++++++++++++--------------- 1 file changed, 92 insertions(+), 83 deletions(-) diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 34c18a90dd..15f70d643d 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -1,16 +1,13 @@ +class Single; +class Burst; +class FullAuto; class Mode_SemiAuto; +class Mode_Burst; class Mode_FullAuto; class CfgWeapons { - class DMR_02_base_F; - class DMR_03_base_F; - class DMR_04_base_F; - class DMR_05_base_F; - class DMR_06_base_F; - class GM6_base_F; class LMG_RCWS; - class LRR_base_F; class MGun; class MGunCore; class MMG_01_base_F; @@ -22,19 +19,83 @@ class CfgWeapons { /* Long Rifles */ + class GM6_base_F: Rifle_Long_Base_F { + class Single: Mode_SemiAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. + }; + }; + + class LRR_base_F: Rifle_Long_Base_F { + class Single: Mode_SemiAuto { + dispersion = 0.00020; // radians. Equal to 0.70 MOA. + }; + }; + + class DMR_06_base_F: Rifle_Long_Base_F { + class Single: Mode_SemiAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. + }; + + class FullAuto: Mode_FullAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. + }; + }; + + class DMR_05_base_F: Rifle_Long_Base_F { + class Single: Mode_SemiAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. + }; + + class FullAuto: Mode_FullAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. + }; + }; + + class DMR_04_base_F: Rifle_Long_Base_F { + class Single: Mode_SemiAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. + }; + }; + + class DMR_03_base_F: Rifle_Long_Base_F { + class Single: Mode_SemiAuto { + dispersion = 0.00032; // radians. Equal to 1.10 MOA. + }; + + class FullAuto: Mode_FullAuto { + dispersion = 0.00032; // radians. Equal to 1.10 MOA. + }; + }; + + class DMR_02_base_F: Rifle_Long_Base_F { + class Single: Mode_SemiAuto { + dispersion = 0.000262; // radians. Equal to 0.90 MOA. + }; + }; + + class DMR_01_base_F: Rifle_Long_Base_F { + class WeaponSlotsInfo: WeaponSlotsInfo { + class MuzzleSlot: MuzzleSlot { + compatibleItems[] += {"ACE_muzzle_mzls_B"}; + }; + }; + class Single: Mode_SemiAuto { + dispersion = 0.0004; // radians. Equal to 1.375 MOA. + }; + }; + class EBR_base_F: Rifle_Long_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { class MuzzleSlot: MuzzleSlot { compatibleItems[] += {"ACE_muzzle_mzls_B"}; }; }; - }; - - class DMR_01_base_F: Rifle_Long_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_B"}; - }; + class Single: Mode_SemiAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. + }; + + class FullAuto: Mode_FullAuto { + dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; }; @@ -46,14 +107,6 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_H"}; }; }; - class Single: Mode_SemiAuto { - dispersion = 0.000800; // radians. Equal to 2.75 MOA. - // Based on widely cited 2 MOA figure for new 5.56 ACR. - }; - - class FullAuto: Mode_FullAuto { - dispersion = 0.00147; // radians. Equal to 5.1 MOA. - }; }; class arifle_MX_SW_F: arifle_MX_Base_F { magazines[] = { @@ -74,14 +127,6 @@ class CfgWeapons { compatibleItems[] = {"muzzle_snds_H","muzzle_snds_H_SW","ACE_muzzle_mzls_H"}; }; }; - class Single: Mode_SemiAuto { - dispersion = 0.000800; // radians. Equal to 2.75 MOA. - // Based on widely cited 2 MOA figure for new 5.56 ACR. - }; - - class manual: FullAuto { - dispersion = 0.00147; // radians. Equal to 5.1 MOA. - }; }; class arifle_MXM_F: arifle_MX_Base_F { magazines[] = { @@ -95,12 +140,11 @@ class CfgWeapons { ACE_barrelTwist=228.6; ACE_barrelLength=457.2; class Single: Single { - dispersion = 0.00029; // radians. Equal to 1 MOA. - // 6.5mm is easily capable of this in a half-tuned rifle. + dispersion = 0.000436; // radians. Equal to 1.50 MOA. }; class FullAuto: FullAuto { - dispersion = 0.000800; // radians. Equal to 2.75 MOA. + dispersion = 0.000436; // radians. Equal to 1.50 MOA. }; }; @@ -112,15 +156,6 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_H"}; }; }; - class Single: Mode_SemiAuto { - dispersion = 0.000800; // radians. Equal to 2.75 MOA. - // Based on widely cited 2 MOA figure for new 5.56 ACR? - // Use your imagination for fictional weapons! - }; - - class FullAuto: Mode_FullAuto { - dispersion = 0.00147; // radians. Equal to 5.1 MOA. - }; }; @@ -139,13 +174,6 @@ class CfgWeapons { }; ACE_barrelTwist=177.8; ACE_barrelLength=317.5; - class manual: Mode_FullAuto { - dispersion = 0.00175; // radians. Equal to 6 MOA. - }; - - class Single: manual { - dispersion = 0.00175; // radians. Equal to 6 MOA. - }; }; class LMG_Zafir_F: Rifle_Long_Base_F { initSpeed = -1.0; @@ -156,13 +184,6 @@ class CfgWeapons { }; ACE_barrelTwist=304.8; ACE_barrelLength=459.74; - class FullAuto: Mode_FullAuto { - dispersion = 0.00175; // radians. Equal to 6 MOA. - }; - - class Single: Mode_SemiAuto { - dispersion = 0.00175; // radians. Equal to 6 MOA. - }; }; @@ -173,13 +194,6 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_L"}; }; }; - class Single: Mode_SemiAuto { - dispersion = 0.000727; // radians. Equal to 2.5 MOA, about the limit of mass-produced M855. - }; - - class FullAuto: Mode_FullAuto { - dispersion = 0.00147; // radians. Equal to 5.1 MOA. - }; }; class mk20_base_F: Rifle_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { @@ -187,14 +201,6 @@ class CfgWeapons { compatibleItems[] += {"ACE_muzzle_mzls_L"}; }; }; - class Single: Mode_SemiAuto { - dispersion = 0.0008727; // radians. Equal to 3 MOA, about the limit of mass-produced M855 plus - // some extra for these worn out Greek Army service rifles. - }; - - class FullAuto: Mode_FullAuto { - dispersion = 0.00147; // radians. Equal to 5.1 MOA. - }; }; @@ -202,12 +208,15 @@ class CfgWeapons { class SDAR_base_F: Rifle_Base_F { initSpeed = -0.989; class Single: Mode_SemiAuto { - dispersion = 0.0008727; // radians. Equal to 3 MOA, about the limit of mass-produced M855 plus - // some extra because Kel-Tec. + dispersion = 0.0008727; // radians. Equal to 3 MOA. }; + class Burst: Mode_Burst { + dispersion = 0.0008727; // radians. Equal to 3 MOA. + }; + class FullAuto: Mode_FullAuto { - dispersion = 0.00147; // radians. Equal to 5.1 MOA. + dispersion = 0.0008727; // radians. Equal to 3 MOA. }; }; class pdw2000_base_F: Rifle_Base_F { @@ -642,7 +651,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -675,7 +684,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -708,7 +717,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -741,7 +750,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -774,7 +783,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -807,7 +816,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -840,7 +849,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -873,7 +882,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -906,7 +915,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.8f"; + dispersionCoef = "0.9f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; From e0c658560bc50c9cc6d7ce1b11c8db0410432c92 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 15:33:03 +0100 Subject: [PATCH 0160/1101] Added myself to authors.txt --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 366664efbd..f1f1db5755 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -72,6 +72,7 @@ Raspu86 Riccardo Petricca Robert Boklahánics ramius86 +SilentSpike simon84 Sniperwolf572 Tachi From 1cc5bd1c506d6c6a540bef89d7b1d81856e755aa Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 07:41:24 -0700 Subject: [PATCH 0161/1101] removing unneeded debug files --- addons/common/config - Copy.cpp | 167 -------------------------------- server.md5 | 2 - server2.md5 | 3 - server3.md5 | 3 - tools/vm_build.py | 6 -- 5 files changed, 181 deletions(-) delete mode 100644 addons/common/config - Copy.cpp delete mode 100644 server.md5 delete mode 100644 server2.md5 delete mode 100644 server3.md5 delete mode 100644 tools/vm_build.py diff --git a/addons/common/config - Copy.cpp b/addons/common/config - Copy.cpp deleted file mode 100644 index 27647f8d00..0000000000 --- a/addons/common/config - Copy.cpp +++ /dev/null @@ -1,167 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; - weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_main"}; - author[] = {"KoffeinFlummi"}; - authorUrl = "https://github.com/KoffeinFlummi/"; - VERSION_CONFIG; - }; -}; - -#include "CfgEventHandlers.hpp" - -#include "CfgSounds.hpp" -#include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" -#include "CfgMagazines.hpp" - -#include "CfgActions.hpp" -#include "CfgMoves.hpp" -#include "CfgVoice.hpp" -#include "CfgUnitInsignia.hpp" - -class ACE_Rsc_Display_Base { - idd = -1; - type = 0; - style = 48; - name = ""; - duration = 999999; - fadeIn = 0; - fadeOut = 0; - font = "TahomaB"; - size = 1; - colorBackground[] = {1, 1, 1, 0}; - colorText[] = {1, 1, 1, 1}; -}; - -class ACE_Rsc_Control_Base { - idc = 1; - type = 0; - style = 48; - access = 0; - lineSpacing = 0; - moving = 1; - text = ""; - size = 1; - sizeEx = 0; - font = "TahomaB"; - colorBackground[] = {1, 1, 1, 0}; - colorText[] = {1, 1, 1, 1}; - x = 0; - y = 0; - w = 0; - 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(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[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; - }; - class GVAR(SettingProgressBarLocation) { - value = 0; - typeName = "SCALAR"; - force = 0; - isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; - description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; - values[] = {"Top", "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 "define.hpp" -#include -#include -#include - -class CfgUIGrids { - class IGUI { - class Presets { - class Arma3 { - class Variables { - grid_ACE_displayText[] = {{((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)),safeZoneY + 0.175 * safezoneH, (10 *(((safezoneW / safezoneH) min 1.2) / 40)), (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; - }; - }; - }; - - class Variables { - class grid_ACE_displayText { - displayName = "ACE Hint"; - description = "Textual in game feedback to the player."; - preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa"; - saveToProfile[] = {0,1}; - }; - }; - }; -}; - -/* -// check dll -class RscStandardDisplay; -class RscDisplayMain: RscStandardDisplay { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscDisplayMain"",'GUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_5('header','tail',{0},{},_this select 0)] call COMPILE_FILE(functions\fnc_errorMessage)); -}; -*/ - -class ACE_Extensions { - extensions[] = {}; -}; diff --git a/server.md5 b/server.md5 deleted file mode 100644 index 4b55677c68..0000000000 --- a/server.md5 +++ /dev/null @@ -1,2 +0,0 @@ -9f932a56f6d56912c3ed64583086c699 *server\config.cpp -a0d9c8926a9c729e96bb6f5e83072526 *server\script_component.hpp diff --git a/server2.md5 b/server2.md5 deleted file mode 100644 index e5a17d9cc0..0000000000 --- a/server2.md5 +++ /dev/null @@ -1,3 +0,0 @@ -d41d8cd98f00b204e9800998ecf8427e *server\$NOBIN$ -9f932a56f6d56912c3ed64583086c699 *server\config.cpp -a0d9c8926a9c729e96bb6f5e83072526 *server\script_component.hpp diff --git a/server3.md5 b/server3.md5 deleted file mode 100644 index 8c7d3ace7c..0000000000 --- a/server3.md5 +++ /dev/null @@ -1,3 +0,0 @@ -76717b52157b1d55caa07359c789c148 *server\$NOBIN$ -9f932a56f6d56912c3ed64583086c699 *server\config.cpp -a0d9c8926a9c729e96bb6f5e83072526 *server\script_component.hpp diff --git a/tools/vm_build.py b/tools/vm_build.py deleted file mode 100644 index 1d43c6ee30..0000000000 --- a/tools/vm_build.py +++ /dev/null @@ -1,6 +0,0 @@ -import subprocess -try: - result = subprocess.call("python make.py checkexternal test") - print (result) -except: - raise \ No newline at end of file From 318b2437f9db0513ec9a42bc202d5f6f48eebc2a Mon Sep 17 00:00:00 2001 From: jaynus Date: Sun, 10 May 2015 07:42:53 -0700 Subject: [PATCH 0162/1101] Applied virtual time acceleration to the master ACE_time. Created ACE_tickTime macro, to provide same-frame millisecond resolution. --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_timePFH.sqf | 7 ++++--- addons/main/script_macros.hpp | 4 ++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 881d77e156..cb688a419e 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -316,6 +316,7 @@ if (hasInterface) then { ACE_time = diag_tickTime; ACE_realTime = diag_tickTime; ACE_virtualTime = diag_tickTime; +ACE_tickTime = diag_tickTime; ACE_gameTime = time; PREP(timePFH); diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf index e8f0be1efd..968df846cc 100644 --- a/addons/common/functions/fnc_timePFH.sqf +++ b/addons/common/functions/fnc_timePFH.sqf @@ -7,9 +7,9 @@ _lastRealTime = ACE_realTime; _lastGameTime = ACE_gameTime; ACE_gameTime = time; -ACE_realTime = diag_tickTime; +ACE_tickTime = diag_tickTime; -_delta = ACE_realTime - _lastRealTime; +_delta = ACE_tickTime - _lastRealTime; if(ACE_gameTime <= _lastGameTime) then { ACE_paused = true; // Game is paused or not running @@ -18,7 +18,8 @@ if(ACE_gameTime <= _lastGameTime) then { } else { ACE_paused = false; // Time is updating + ACE_realTime = ACE_realTime + _delta; ACE_virtualTime = ACE_virtualTime + (_delta * accTime); - ACE_time = ACE_time + _delta; + ACE_time = ACE_virtualTime; }; diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index d4b6739918..416cc6981f 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -82,4 +82,8 @@ #define HASHLIST_SET(hashList, index, value) ([hashList, index, value, __FILE__, __LINE__] call EFUNC(common,hashListSet)) #define HASHLIST_PUSH(hashList, value) ([hashList, value, __FILE__, __LINE__] call EFUNC(common,hashListPush)) +// Time functions for accuracy per frame +#define ACE_tickTime (ACE_tickTime + (diag_tickTime - ACE_tickTime)) + + #include "script_debug.hpp" \ No newline at end of file From e1c3c40cddac38d0db0565e74d83ba2c4fbde7e6 Mon Sep 17 00:00:00 2001 From: jaynus Date: Sun, 10 May 2015 07:50:58 -0700 Subject: [PATCH 0163/1101] I need more coffee. this should be more accurate. --- addons/common/XEH_preInit.sqf | 2 +- addons/common/functions/fnc_timePFH.sqf | 4 ++-- addons/main/script_macros.hpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index cb688a419e..8c51ef95d5 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -316,7 +316,7 @@ if (hasInterface) then { ACE_time = diag_tickTime; ACE_realTime = diag_tickTime; ACE_virtualTime = diag_tickTime; -ACE_tickTime = diag_tickTime; +ACE_diagTime = diag_tickTime; ACE_gameTime = time; PREP(timePFH); diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf index 968df846cc..ee8fe4a9bb 100644 --- a/addons/common/functions/fnc_timePFH.sqf +++ b/addons/common/functions/fnc_timePFH.sqf @@ -7,9 +7,9 @@ _lastRealTime = ACE_realTime; _lastGameTime = ACE_gameTime; ACE_gameTime = time; -ACE_tickTime = diag_tickTime; +ACE_diagTime = diag_tickTime; -_delta = ACE_tickTime - _lastRealTime; +_delta = ACE_diagTime - _lastRealTime; if(ACE_gameTime <= _lastGameTime) then { ACE_paused = true; // Game is paused or not running diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 416cc6981f..860e21a54a 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -83,7 +83,7 @@ #define HASHLIST_PUSH(hashList, value) ([hashList, value, __FILE__, __LINE__] call EFUNC(common,hashListPush)) // Time functions for accuracy per frame -#define ACE_tickTime (ACE_tickTime + (diag_tickTime - ACE_tickTime)) +#define ACE_tickTime (ACE_diagTime + (diag_tickTime - ACE_diagTime)) #include "script_debug.hpp" \ No newline at end of file From c39b5931c705e6f73ac0a129ee74c65472efb252 Mon Sep 17 00:00:00 2001 From: jaynus Date: Sun, 10 May 2015 07:56:14 -0700 Subject: [PATCH 0164/1101] ACE tickTime based on ACE_time. --- addons/main/script_macros.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index 860e21a54a..175e5f63c7 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -83,7 +83,7 @@ #define HASHLIST_PUSH(hashList, value) ([hashList, value, __FILE__, __LINE__] call EFUNC(common,hashListPush)) // Time functions for accuracy per frame -#define ACE_tickTime (ACE_diagTime + (diag_tickTime - ACE_diagTime)) +#define ACE_tickTime (ACE_time + (diag_tickTime - ACE_diagTime)) #include "script_debug.hpp" \ No newline at end of file From 7012b32b558973ff0c62b90c384c1f6e885ae96a Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 07:56:56 -0700 Subject: [PATCH 0165/1101] Display the most likely resolution to the Error FAILED TO DETERMINE COMMIT ID. --- tools/make.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/make.py b/tools/make.py index e90beb7703..387332a666 100644 --- a/tools/make.py +++ b/tools/make.py @@ -610,6 +610,7 @@ See the make.cfg file for additional build options. key_name = str(key_name+"-"+commit_id) except: print_error("FAILED TO DETERMINE COMMIT ID.") + print_yellow("Verify that \GIT\BIN or \GIT\CMD is in your system path or user path.") commit_id = "NOGIT" cfg = configparser.ConfigParser(); From eaa0f16e3038c4d21261cb9de5e584daa2e4eba4 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 17:17:17 +0100 Subject: [PATCH 0166/1101] Transferring rest of function files --- addons/zeus/functions/fnc_bi_moduleMine.sqf | 18 +++ .../functions/fnc_bi_moduleProjectile.sqf | 141 +++++++++++++++++ .../functions/fnc_bi_moduleRemoteControl.sqf | 149 ++++++++++++++++++ 3 files changed, 308 insertions(+) create mode 100644 addons/zeus/functions/fnc_bi_moduleMine.sqf create mode 100644 addons/zeus/functions/fnc_bi_moduleProjectile.sqf create mode 100644 addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf diff --git a/addons/zeus/functions/fnc_bi_moduleMine.sqf b/addons/zeus/functions/fnc_bi_moduleMine.sqf new file mode 100644 index 0000000000..68e798df3a --- /dev/null +++ b/addons/zeus/functions/fnc_bi_moduleMine.sqf @@ -0,0 +1,18 @@ +_logic = _this select 0; +_units = _this select 1; +_activated = _this select 2; + +if (_activated) then { + _explosive = gettext (configfile >> "cfgvehicles" >> typeof _logic >> "explosive"); + if (_explosive != "") then { + _explosive = createvehicle [_explosive,position _logic,[],0,"none"]; + _explosive attachto [_logic]; + + //--- Show hint to curator who placed the object + [[["Curator","PlaceMines"],nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",_logic] call bis_fnc_mp; + + waituntil {sleep 0.1; isnull _explosive || isnull _logic || !alive _logic}; + if (isnull _logic) then {deletevehicle _explosive;} else {_explosive setdamage 1;}; + deletevehicle _logic; + }; +}; \ No newline at end of file diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf new file mode 100644 index 0000000000..7d9a8301f4 --- /dev/null +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -0,0 +1,141 @@ +_logic = _this select 0; +_units = _this select 1; +_activated = _this select 2; + +if ({local _x} count (objectcurators _logic) > 0) then { + //--- Reveal the circle to curators + _logic hideobject false; + _logic setpos position _logic; +}; +if !(isserver) exitwith {}; + +if (_activated) then { + _ammo = _logic getvariable ["type",gettext (configfile >> "cfgvehicles" >> typeof _logic >> "ammo")]; + if (_ammo != "") then { + _cfgAmmo = configfile >> "cfgammo" >> _ammo; + //if !(isclass _cfgAmmo) exitwith {["CfgAmmo class '%1' not found.",_ammo] call bis_fnc_error;}; + _dirVar = _fnc_scriptname + typeof _logic; + _logic setdir (missionnamespace getvariable [_dirVar,direction _logic]); //--- Restore custom direction + _pos = getposatl _logic; + _posAmmo = +_pos; + _posAmmo set [2,0]; + _dir = direction _logic; + _simulation = tolower gettext (configfile >> "cfgammo" >> _ammo >> "simulation"); + _altitude = 0; + _velocity = []; + _attach = false; + _radio = ""; + _delay = 60; + _sound = ""; + _soundSourceClass = ""; + _hint = []; + _shakeStrength = 0; + _shakeRadius = 0; + switch (_simulation) do { + case "shotshell": { + _altitude = 1000; + _velocity = [0,0,-100]; + _radio = "SentGenIncoming"; + _sounds = if (getnumber (_cfgAmmo >> "hit") < 200) then {["mortar1","mortar2"]} else {["shell1","shell2","shell3","shell4"]}; + _sound = _sounds call bis_fnc_selectrandom; + _hint = ["Curator","PlaceOrdnance"]; + _shakeStrength = 0.01; + _shakeRadius = 300; + }; + case "shotsubmunitions": { + _posAmmo = [_posAmmo,500,_dir + 180] call bis_fnc_relpos; + _altitude = 1000 - ((getterrainheightasl _posAmmo) - (getterrainheightasl _pos)); + _posAmmo set [2,_altitude]; + _velocity = [sin _dir * 68,cos _dir * 68,-100]; + _radio = "SentGenIncoming"; + _hint = ["Curator","PlaceOrdnance"]; + _shakeStrength = 0.02; + _shakeRadius = 500; + }; + case "shotilluminating": { + _altitude = 66; + _velocity = [wind select 0,wind select 1,30]; + _sound = "SN_Flare_Fired_4"; + _soundSourceClass = "SoundFlareLoop_F"; + }; + case "shotnvgmarker"; + case "shotsmokex": { + _altitude = 0; + _velocity = [0,0,0]; + _attach = true; + }; + default {["Ammo simulation '%1' is not supported",_simulation] call bis_fnc_error;}; + }; + if (count _hint > 0) then { + [[_hint,nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",objectcurators _logic] call bis_fnc_mp; + }; + if (count _velocity == 3) then { + _altitude = (_logic getvariable ["altitude",_altitude]) call bis_fnc_parsenumber; + _radio = _logic getvariable ["radio",_radio]; + + //--- Create projectile + _posAmmo set [2,_altitude]; + _projectile = createvehicle [_ammo,_posAmmo,[],0,"none"]; + _projectile setpos _posAmmo; + _projectile setvelocity _velocity; + if (_attach) then {_projectile attachto [_logic,[0,0,_altitude]];}; + + //--- Play sound + if (_sound != "") then {[[_logic,_sound,"say3D"],"bis_fnc_sayMessage"] call bis_fnc_mp;}; + + //--- Create sound source + _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; + + //--- Update + if (_attach) then { + waituntil { + _soundSource setposatl getposatl _projectile; + sleep 1; + isnull _projectile || isnull _logic + }; + } else { + waituntil { + _soundSource setposatl getposatl _projectile; + + if (getposatl _logic distance _pos > 0 || direction _logic != _dir) then { + _posNew = getposasl _logic; + _dirDiff = direction _logic - _dir; + _posNew = [_posNew,[getposasl _projectile,_pos] call bis_fnc_distance2d,direction _logic + 180] call bis_fnc_relpos; + _posNew set [2,getposasl _projectile select 2]; + _projectile setvelocity ([velocity _projectile,-_dirDiff] call bis_fnc_rotatevector2d); + _projectile setposasl _posNew; + _pos = getposatl _logic; + _dir = direction _logic; + missionnamespace setvariable [_dirVar,_dir]; + }; + sleep 0.1; + isnull _projectile || isnull _logic + }; + }; + deletevehicle _projectile; + deletevehicle _soundSource; + if (count objectcurators _logic > 0) then { + + //--- Delete curator spawned logic + if (_shakeStrength > 0) then { + if (_simulation == "shotsubmunitions") then {sleep 0.5;}; + [[_shakeStrength,0.7,[position _logic,_shakeRadius]],"bis_fnc_shakeCuratorCamera"] call bis_fnc_mp; + }; + deletevehicle _logic; + } else { + + //--- Repeat to achieve permanent effect + _repeat = _logic getvariable ["repeat",0] > 0; + if (_repeat) then { + [_logic,_units,_activated] call bis_fnc_moduleprojectile; + } else { + deletevehicle _logic; + }; + }; + } else { + deletevehicle _logic; + }; + } else { + ["Cannot create projectile, 'ammo' config attribute is missing in %1",typeof _logic] call bis_fnc_error; + }; +}; \ No newline at end of file diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf new file mode 100644 index 0000000000..cbf1ae69c2 --- /dev/null +++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf @@ -0,0 +1,149 @@ +_logic = _this select 0; +_units = _this select 1; +_activated = _this select 2; + +if (_activated && local _logic && !isnull curatorcamera) then { + + //--- Terminate when remote control is already in progress + if !(isnull (missionnamespace getvariable ["bis_fnc_moduleRemoteControl_unit",objnull])) exitwith {}; + + //--- Get unit under cursor + _unit = objnull; + _mouseOver = missionnamespace getvariable ["bis_fnc_curatorObjectPlaced_mouseOver",[""]]; + if ((_mouseOver select 0) == typename objnull) then {_unit = _mouseOver select 1;}; + _unit = effectivecommander _unit; + + //--- Check if the unit is suitable + _error = ""; + if !(side group _unit in [east,west,resistance,civilian]) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorEmpty";}; + if (isplayer _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorPlayer";}; + if !(alive _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorDestroyed";}; + if (isnull _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorNull";}; + if !(isnull (_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull])) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorControl";}; + + if (_error == "") then { + _unit spawn { + scriptname "bis_fnc_moduleRemoteControl: Loop"; + _unit = _this; + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; + + bis_fnc_moduleRemoteControl_unit = _unit; + _unit setvariable ["bis_fnc_moduleRemoteControl_owner",player,true]; + + _blur = ppeffectcreate ["RadialBlur",144]; + _blur ppeffectenable true; + _blur ppeffectadjust [0,0,0.3,0.3]; + _blur ppeffectcommit 0; + _blur ppeffectadjust [0.03,0.03,0.1,0.1]; + _blur ppeffectcommit 1; + + _cam = "camera" camcreate getposatl curatorcamera; + _cam cameraeffect ["internal","back"]; + _cam campreparetarget (screentoworld [0.5,0.5]); + _cam camcommitprepared 0; + _cam campreparetarget _unit; + _cam campreparefov 0.1; + _cam camcommitprepared 1; + sleep 0.75; + + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black out",0.25]; + sleep 0.25; + + //--- Wait for interface to close + (finddisplay 312) closedisplay 2; + waituntil {isnull curatorcamera}; + + //--- Switch + player remotecontrol _unit; + if (cameraon != _vehicle) then { + _vehicle switchcamera cameraview; + }; + + ppeffectdestroy _blur; + _cam cameraeffect ["terminate","back"]; + camdestroy _cam; + + _color = ppeffectcreate ["colorCorrections",1896]; + _color ppeffectenable true; + _color ppeffectadjust [1,1,0,[0,0,0,1],[1,1,1,1],[0,0,0,0],[0.9,0.0,0,0,0,0.5,1]]; + _color ppeffectcommit 0; + + _curator = getassignedcuratorlogic player; + [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,true]] call bis_fnc_callScriptedEventHandler; + [["Curator","RemoteControl"],nil,nil,nil,nil,nil,nil,true] call bis_fnc_advHint; + + sleep 0.3; + _color ppeffectadjust [1,1,0,[0,0,0,1],[1,1,1,1],[0,0,0,0],[0.9,0.85,0,0,0,0.5,1]]; + _color ppeffectcommit 0.3; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",0.5]; + + //--- Back to player + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; + _rating = rating player; + waituntil { + //--- Refresh when vehicle or vehicle role changes + if ((vehicle _unit != _vehicle || str assignedvehiclerole _unit != _vehicleRole) && {alive _unit}) then { + player remotecontrol _unit; + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; + }; + if (rating player < _rating) then { + player addrating (-rating player + _rating); + }; + sleep 0.01; + !isnull curatorcamera + || + {cameraon == vehicle player} + || + {!alive _unit} //--- Also isnull check, objNull is not alive + || + {isnull getassignedcuratorlogic player} + //|| + //{_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull] != player} //--- Another curator stole the unit + }; + + player addrating (-rating player + _rating); + objnull remotecontrol _unit; + _unit setvariable ["bis_fnc_moduleRemoteControl_owner",nil,true]; + + //--- Death screen + if ( + isnull curatorcamera + && + {cameraon != vehicle player} + && + {!isnull _unit} + && + {!isnull getassignedcuratorlogic player} + //&& + //{(_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull] == player)} + ) then { + sleep 2; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black out",1]; + sleep 1; + }; + _unitPos = getposatl _unit; + _camPos = [_unitPos,10,direction _unit + 180] call bis_fnc_relpos; + _camPos set [2,(_unitPos select 2) + (getterrainheightasl _unitPos) - (getterrainheightasl _camPos) + 10]; + //[_camPos,_unit] call bis_fnc_setcuratorcamera; + (getassignedcuratorlogic player) setvariable ["bis_fnc_modulecuratorsetcamera_params",[_camPos,_unit]]; + + sleep 0.1; //--- Engine needs a delay in case controlled unit was deleted + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",1e10]; + opencuratorinterface; + ppeffectdestroy _color; + + waituntil {!isnull curatorcamera}; + player switchcamera cameraview; + bis_fnc_moduleRemoteControl_unit = nil; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",1]; + [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,false]] call bis_fnc_callScriptedEventHandler; + sleep 0.01; + }; + } else { + [objnull,_error] call bis_fnc_showCuratorFeedbackMessage; + }; + deletevehicle _logic; +}; \ No newline at end of file From 9dd163ac3da97d7605f0906d189ef1b895315887 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 17:21:18 +0100 Subject: [PATCH 0167/1101] Use moduleProjectile with ballistics support --- .../functions/fnc_bi_moduleProjectile.sqf | 303 +++++++++++------- 1 file changed, 179 insertions(+), 124 deletions(-) diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index 7d9a8301f4..e6b98588a6 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -1,141 +1,196 @@ +/* + * Author: Bohemia Interactive + * Module function for spawning projectiles + * Used by Curator artillery modules etc + * Edited to remove radio warning (also retiained ballistics support) + * + * Arguments: + * 0: The logic object + * + * Return Value: + * nil + * + * Public: No + */ + +_fnc_scriptNameParentTemp = if !(isnil '_fnc_scriptName') then {_fnc_scriptName} else {'BIS_fnc_moduleProjectile'}; +private ['_fnc_scriptNameParent']; +_fnc_scriptNameParent = _fnc_scriptNameParentTemp; +_fnc_scriptNameParentTemp = nil; + +private ['_fnc_scriptName']; +_fnc_scriptName = 'BIS_fnc_moduleProjectile'; +scriptname _fnc_scriptName; + +private ["_logic", "_units", "_activated"]; _logic = _this select 0; _units = _this select 1; _activated = _this select 2; if ({local _x} count (objectcurators _logic) > 0) then { - //--- Reveal the circle to curators - _logic hideobject false; - _logic setpos position _logic; + //--- Reveal the circle to curators + _logic hideobject false; + _logic setpos position _logic; }; if !(isserver) exitwith {}; if (_activated) then { - _ammo = _logic getvariable ["type",gettext (configfile >> "cfgvehicles" >> typeof _logic >> "ammo")]; - if (_ammo != "") then { - _cfgAmmo = configfile >> "cfgammo" >> _ammo; - //if !(isclass _cfgAmmo) exitwith {["CfgAmmo class '%1' not found.",_ammo] call bis_fnc_error;}; - _dirVar = _fnc_scriptname + typeof _logic; - _logic setdir (missionnamespace getvariable [_dirVar,direction _logic]); //--- Restore custom direction - _pos = getposatl _logic; - _posAmmo = +_pos; - _posAmmo set [2,0]; - _dir = direction _logic; - _simulation = tolower gettext (configfile >> "cfgammo" >> _ammo >> "simulation"); - _altitude = 0; - _velocity = []; - _attach = false; - _radio = ""; - _delay = 60; - _sound = ""; - _soundSourceClass = ""; - _hint = []; - _shakeStrength = 0; - _shakeRadius = 0; - switch (_simulation) do { - case "shotshell": { - _altitude = 1000; - _velocity = [0,0,-100]; - _radio = "SentGenIncoming"; - _sounds = if (getnumber (_cfgAmmo >> "hit") < 200) then {["mortar1","mortar2"]} else {["shell1","shell2","shell3","shell4"]}; - _sound = _sounds call bis_fnc_selectrandom; - _hint = ["Curator","PlaceOrdnance"]; - _shakeStrength = 0.01; - _shakeRadius = 300; - }; - case "shotsubmunitions": { - _posAmmo = [_posAmmo,500,_dir + 180] call bis_fnc_relpos; - _altitude = 1000 - ((getterrainheightasl _posAmmo) - (getterrainheightasl _pos)); - _posAmmo set [2,_altitude]; - _velocity = [sin _dir * 68,cos _dir * 68,-100]; - _radio = "SentGenIncoming"; - _hint = ["Curator","PlaceOrdnance"]; - _shakeStrength = 0.02; - _shakeRadius = 500; - }; - case "shotilluminating": { - _altitude = 66; - _velocity = [wind select 0,wind select 1,30]; - _sound = "SN_Flare_Fired_4"; - _soundSourceClass = "SoundFlareLoop_F"; - }; - case "shotnvgmarker"; - case "shotsmokex": { - _altitude = 0; - _velocity = [0,0,0]; - _attach = true; - }; - default {["Ammo simulation '%1' is not supported",_simulation] call bis_fnc_error;}; - }; - if (count _hint > 0) then { - [[_hint,nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",objectcurators _logic] call bis_fnc_mp; - }; - if (count _velocity == 3) then { - _altitude = (_logic getvariable ["altitude",_altitude]) call bis_fnc_parsenumber; - _radio = _logic getvariable ["radio",_radio]; + _ammo = _logic getvariable ["type",gettext (configfile >> "cfgvehicles" >> typeof _logic >> "ammo")]; + if (_ammo != "") then { + _cfgAmmo = configfile >> "cfgammo" >> _ammo; + //if !(isclass _cfgAmmo) exitwith {["CfgAmmo class '%1' not found.",_ammo] call bis_fnc_error;}; + _dirVar = _fnc_scriptname + typeof _logic; + _logic setdir (missionnamespace getvariable [_dirVar,direction _logic]); //--- Restore custom direction + _pos = getposatl _logic; + _posAmmo = +_pos; + _posAmmo set [2,0]; + _dir = direction _logic; + _simulation = tolower gettext (configfile >> "cfgammo" >> _ammo >> "simulation"); + _altitude = 0; + _velocity = []; + _attach = false; + _radio = ""; + _delay = 60; + _sound = ""; + _soundSourceClass = ""; + _hint = []; + _shakeStrength = 0; + _shakeRadius = 0; + switch (_simulation) do { + case "shotshell": { + _altitude = 1000; + _velocity = [0,0,-100]; + _radio = "SentGenIncoming"; + _sounds = if (getnumber (_cfgAmmo >> "hit") < 200) then {["mortar1","mortar2"]} else {["shell1","shell2","shell3","shell4"]}; + _sound = _sounds call bis_fnc_selectrandom; + _hint = ["Curator","PlaceOrdnance"]; + _shakeStrength = 0.01; + _shakeRadius = 300; + }; + case "shotsubmunitions": { + _posAmmo = [_posAmmo,500,_dir + 180] call bis_fnc_relpos; + _altitude = 1000 - ((getterrainheightasl _posAmmo) - (getterrainheightasl _pos)); + _posAmmo set [2,_altitude]; + _velocity = [sin _dir * 68,cos _dir * 68,-100]; + _radio = "SentGenIncoming"; + _hint = ["Curator","PlaceOrdnance"]; + _shakeStrength = 0.02; + _shakeRadius = 500; + }; + case "shotilluminating": { + _altitude = 66; + _velocity = [wind select 0,wind select 1,30]; + _sound = "SN_Flare_Fired_4"; + _soundSourceClass = "SoundFlareLoop_F"; + }; + case "shotnvgmarker"; + case "shotsmokex": { + _altitude = 0; + _velocity = [0,0,0]; + _attach = true; + }; + default {["Ammo simulation '%1' is not supported",_simulation] call bis_fnc_error;}; + }; + /* Removed by ACE + _fnc_playRadio = { + if (_radio != "") then { + _entities = (getposatl _logic) nearentities ["All",100]; + _sides = []; + { + if (isplayer _x) then { + _side = side group _x; + if (_side in [east,west,resistance,civilian]) then { + //--- Play radio (only if it wasn't played recently) + if (time > _x getvariable ["BIS_fnc_moduleProjectile_radio",-_delay]) then { + [[_side,_radio,"side"],"bis_fnc_sayMessage",_x] call bis_fnc_mp; + _x setvariable ["BIS_fnc_moduleProjectile_radio",time + _delay]; + }; + }; + }; + } foreach _entities; + }; + }; + */ + if (count _hint > 0) then { + [[_hint,nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",objectcurators _logic] call bis_fnc_mp; + }; + if (count _velocity == 3) then { + _altitude = (_logic getvariable ["altitude",_altitude]) call bis_fnc_parsenumber; + _radio = _logic getvariable ["radio",_radio]; - //--- Create projectile - _posAmmo set [2,_altitude]; - _projectile = createvehicle [_ammo,_posAmmo,[],0,"none"]; - _projectile setpos _posAmmo; - _projectile setvelocity _velocity; - if (_attach) then {_projectile attachto [_logic,[0,0,_altitude]];}; + //--- Create projectile + _posAmmo set [2,_altitude]; + _projectile = createvehicle [_ammo,_posAmmo,[],0,"none"]; + _projectile setpos _posAmmo; + _projectile setvelocity _velocity; + if (_attach) then {_projectile attachto [_logic,[0,0,_altitude]];}; - //--- Play sound - if (_sound != "") then {[[_logic,_sound,"say3D"],"bis_fnc_sayMessage"] call bis_fnc_mp;}; + // This is our addition to this function + if (!isnil "ace_frag_fnc_addManualTrack") then { + [_projectile] call ace_frag_fnc_addManualTrack + }; - //--- Create sound source - _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; + //--- Play sound + if (_sound != "") then {[[_logic,_sound,"say3D"],"bis_fnc_sayMessage"] call bis_fnc_mp;}; - //--- Update - if (_attach) then { - waituntil { - _soundSource setposatl getposatl _projectile; - sleep 1; - isnull _projectile || isnull _logic - }; - } else { - waituntil { - _soundSource setposatl getposatl _projectile; + //--- Create sound source + _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; - if (getposatl _logic distance _pos > 0 || direction _logic != _dir) then { - _posNew = getposasl _logic; - _dirDiff = direction _logic - _dir; - _posNew = [_posNew,[getposasl _projectile,_pos] call bis_fnc_distance2d,direction _logic + 180] call bis_fnc_relpos; - _posNew set [2,getposasl _projectile select 2]; - _projectile setvelocity ([velocity _projectile,-_dirDiff] call bis_fnc_rotatevector2d); - _projectile setposasl _posNew; - _pos = getposatl _logic; - _dir = direction _logic; - missionnamespace setvariable [_dirVar,_dir]; - }; - sleep 0.1; - isnull _projectile || isnull _logic - }; - }; - deletevehicle _projectile; - deletevehicle _soundSource; - if (count objectcurators _logic > 0) then { + /* Removed by ACE + //--- Play radio warning + [] call _fnc_playRadio; + */ - //--- Delete curator spawned logic - if (_shakeStrength > 0) then { - if (_simulation == "shotsubmunitions") then {sleep 0.5;}; - [[_shakeStrength,0.7,[position _logic,_shakeRadius]],"bis_fnc_shakeCuratorCamera"] call bis_fnc_mp; - }; - deletevehicle _logic; - } else { + //--- Update + if (_attach) then { + waituntil { + _soundSource setposatl getposatl _projectile; + sleep 1; + isnull _projectile || isnull _logic + }; + } else { + waituntil { + _soundSource setposatl getposatl _projectile; - //--- Repeat to achieve permanent effect - _repeat = _logic getvariable ["repeat",0] > 0; - if (_repeat) then { - [_logic,_units,_activated] call bis_fnc_moduleprojectile; - } else { - deletevehicle _logic; - }; - }; - } else { - deletevehicle _logic; - }; - } else { - ["Cannot create projectile, 'ammo' config attribute is missing in %1",typeof _logic] call bis_fnc_error; - }; + if (getposatl _logic distance _pos > 0 || direction _logic != _dir) then { + _posNew = getposasl _logic; + _dirDiff = direction _logic - _dir; + _posNew = [_posNew,[getposasl _projectile,_pos] call bis_fnc_distance2d,direction _logic + 180] call bis_fnc_relpos; + _posNew set [2,getposasl _projectile select 2]; + _projectile setvelocity ([velocity _projectile,-_dirDiff] call bis_fnc_rotatevector2d); + _projectile setposasl _posNew; + _pos = getposatl _logic; + _dir = direction _logic; + missionnamespace setvariable [_dirVar,_dir]; + }; + sleep 0.1; + isnull _projectile || isnull _logic + }; + }; + deletevehicle _projectile; + deletevehicle _soundSource; + if (count objectcurators _logic > 0) then { + + //--- Delete curator spawned logic + if (_shakeStrength > 0) then { + if (_simulation == "shotsubmunitions") then {sleep 0.5;}; + [[_shakeStrength,0.7,[position _logic,_shakeRadius]],"bis_fnc_shakeCuratorCamera"] call bis_fnc_mp; + }; + deletevehicle _logic; + } else { + + //--- Repeat to achieve permanent effect + _repeat = _logic getvariable ["repeat",0] > 0; + if (_repeat) then { + [_logic,_units,_activated] call bis_fnc_moduleprojectile; + } else { + deletevehicle _logic; + }; + }; + } else { + deletevehicle _logic; + }; + } else { + ["Cannot create projectile, 'ammo' config attribute is missing in %1",typeof _logic] call bis_fnc_error; + }; }; \ No newline at end of file From 5166e73cc0cd21b6c12e20aedb83cb7971913636 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 17:26:24 +0100 Subject: [PATCH 0168/1101] Added commented out code and function prep --- addons/zeus/XEH_preInit.sqf | 3 + addons/zeus/functions/fnc_bi_moduleMine.sqf | 31 ++- .../functions/fnc_bi_moduleRemoteControl.sqf | 253 +++++++++--------- 3 files changed, 153 insertions(+), 134 deletions(-) diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf index 2574706239..726f6923b3 100644 --- a/addons/zeus/XEH_preInit.sqf +++ b/addons/zeus/XEH_preInit.sqf @@ -3,5 +3,8 @@ ADDON = false; PREP(bi_moduleCurator); +PREP(bi_moduleMine); +PREP(bi_moduleProjectile); +PREP(bi_moduleRemoteControl); ADDON = true; diff --git a/addons/zeus/functions/fnc_bi_moduleMine.sqf b/addons/zeus/functions/fnc_bi_moduleMine.sqf index 68e798df3a..c3ce200a62 100644 --- a/addons/zeus/functions/fnc_bi_moduleMine.sqf +++ b/addons/zeus/functions/fnc_bi_moduleMine.sqf @@ -3,16 +3,27 @@ _units = _this select 1; _activated = _this select 2; if (_activated) then { - _explosive = gettext (configfile >> "cfgvehicles" >> typeof _logic >> "explosive"); - if (_explosive != "") then { - _explosive = createvehicle [_explosive,position _logic,[],0,"none"]; - _explosive attachto [_logic]; + _explosive = gettext (configfile >> "cfgvehicles" >> typeof _logic >> "explosive"); + if (_explosive != "") then { + _explosive = createvehicle [_explosive,position _logic,[],0,"none"]; + _explosive attachto [_logic]; - //--- Show hint to curator who placed the object - [[["Curator","PlaceMines"],nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",_logic] call bis_fnc_mp; + /* Removed by ACE + //--- Reveal the mine to curator's side + { + _side = (getassignedcuratorunit _x) call bis_fnc_objectSide; + _side revealmine _explosive; + } foreach (objectcurators _logic); - waituntil {sleep 0.1; isnull _explosive || isnull _logic || !alive _logic}; - if (isnull _logic) then {deletevehicle _explosive;} else {_explosive setdamage 1;}; - deletevehicle _logic; - }; + //--- Mark minefields in the map + [] spawn bis_fnc_drawMinefields; + */ + + //--- Show hint to curator who placed the object + [[["Curator","PlaceMines"],nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",_logic] call bis_fnc_mp; + + waituntil {sleep 0.1; isnull _explosive || isnull _logic || !alive _logic}; + if (isnull _logic) then {deletevehicle _explosive;} else {_explosive setdamage 1;}; + deletevehicle _logic; + }; }; \ No newline at end of file diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf index cbf1ae69c2..6289089d5e 100644 --- a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf +++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf @@ -4,146 +4,151 @@ _activated = _this select 2; if (_activated && local _logic && !isnull curatorcamera) then { - //--- Terminate when remote control is already in progress - if !(isnull (missionnamespace getvariable ["bis_fnc_moduleRemoteControl_unit",objnull])) exitwith {}; + //--- Terminate when remote control is already in progress + if !(isnull (missionnamespace getvariable ["bis_fnc_moduleRemoteControl_unit",objnull])) exitwith {}; - //--- Get unit under cursor - _unit = objnull; - _mouseOver = missionnamespace getvariable ["bis_fnc_curatorObjectPlaced_mouseOver",[""]]; - if ((_mouseOver select 0) == typename objnull) then {_unit = _mouseOver select 1;}; - _unit = effectivecommander _unit; + //--- Get unit under cursor + _unit = objnull; + _mouseOver = missionnamespace getvariable ["bis_fnc_curatorObjectPlaced_mouseOver",[""]]; + if ((_mouseOver select 0) == typename objnull) then {_unit = _mouseOver select 1;}; + _unit = effectivecommander _unit; - //--- Check if the unit is suitable - _error = ""; - if !(side group _unit in [east,west,resistance,civilian]) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorEmpty";}; - if (isplayer _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorPlayer";}; - if !(alive _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorDestroyed";}; - if (isnull _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorNull";}; - if !(isnull (_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull])) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorControl";}; + //--- Check if the unit is suitable + _error = ""; + if !(side group _unit in [east,west,resistance,civilian]) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorEmpty";}; + if (isplayer _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorPlayer";}; + if !(alive _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorDestroyed";}; + if (isnull _unit) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorNull";}; + if !(isnull (_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull])) then {_error = localize "str_a3_cfgvehicles_moduleremotecontrol_f_errorControl";}; - if (_error == "") then { - _unit spawn { - scriptname "bis_fnc_moduleRemoteControl: Loop"; - _unit = _this; - _vehicle = vehicle _unit; - _vehicleRole = str assignedvehiclerole _unit; + if (_error == "") then { + _unit spawn { + scriptname "bis_fnc_moduleRemoteControl: Loop"; + _unit = _this; + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; - bis_fnc_moduleRemoteControl_unit = _unit; - _unit setvariable ["bis_fnc_moduleRemoteControl_owner",player,true]; + bis_fnc_moduleRemoteControl_unit = _unit; + _unit setvariable ["bis_fnc_moduleRemoteControl_owner",player,true]; - _blur = ppeffectcreate ["RadialBlur",144]; - _blur ppeffectenable true; - _blur ppeffectadjust [0,0,0.3,0.3]; - _blur ppeffectcommit 0; - _blur ppeffectadjust [0.03,0.03,0.1,0.1]; - _blur ppeffectcommit 1; + /* Removed by ACE + //--- Play wind cue to all players + [format ["wind%1",ceil random 5],"bis_fnc_playsound"] call bis_fnc_mp; + */ - _cam = "camera" camcreate getposatl curatorcamera; - _cam cameraeffect ["internal","back"]; - _cam campreparetarget (screentoworld [0.5,0.5]); - _cam camcommitprepared 0; - _cam campreparetarget _unit; - _cam campreparefov 0.1; - _cam camcommitprepared 1; - sleep 0.75; + _blur = ppeffectcreate ["RadialBlur",144]; + _blur ppeffectenable true; + _blur ppeffectadjust [0,0,0.3,0.3]; + _blur ppeffectcommit 0; + _blur ppeffectadjust [0.03,0.03,0.1,0.1]; + _blur ppeffectcommit 1; - ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black out",0.25]; - sleep 0.25; + _cam = "camera" camcreate getposatl curatorcamera; + _cam cameraeffect ["internal","back"]; + _cam campreparetarget (screentoworld [0.5,0.5]); + _cam camcommitprepared 0; + _cam campreparetarget _unit; + _cam campreparefov 0.1; + _cam camcommitprepared 1; + sleep 0.75; - //--- Wait for interface to close - (finddisplay 312) closedisplay 2; - waituntil {isnull curatorcamera}; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black out",0.25]; + sleep 0.25; - //--- Switch - player remotecontrol _unit; - if (cameraon != _vehicle) then { - _vehicle switchcamera cameraview; - }; + //--- Wait for interface to close + (finddisplay 312) closedisplay 2; + waituntil {isnull curatorcamera}; - ppeffectdestroy _blur; - _cam cameraeffect ["terminate","back"]; - camdestroy _cam; + //--- Switch + player remotecontrol _unit; + if (cameraon != _vehicle) then { + _vehicle switchcamera cameraview; + }; - _color = ppeffectcreate ["colorCorrections",1896]; - _color ppeffectenable true; - _color ppeffectadjust [1,1,0,[0,0,0,1],[1,1,1,1],[0,0,0,0],[0.9,0.0,0,0,0,0.5,1]]; - _color ppeffectcommit 0; + ppeffectdestroy _blur; + _cam cameraeffect ["terminate","back"]; + camdestroy _cam; - _curator = getassignedcuratorlogic player; - [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,true]] call bis_fnc_callScriptedEventHandler; - [["Curator","RemoteControl"],nil,nil,nil,nil,nil,nil,true] call bis_fnc_advHint; + _color = ppeffectcreate ["colorCorrections",1896]; + _color ppeffectenable true; + _color ppeffectadjust [1,1,0,[0,0,0,1],[1,1,1,1],[0,0,0,0],[0.9,0.0,0,0,0,0.5,1]]; + _color ppeffectcommit 0; - sleep 0.3; - _color ppeffectadjust [1,1,0,[0,0,0,1],[1,1,1,1],[0,0,0,0],[0.9,0.85,0,0,0,0.5,1]]; - _color ppeffectcommit 0.3; - ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",0.5]; + _curator = getassignedcuratorlogic player; + [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,true]] call bis_fnc_callScriptedEventHandler; + [["Curator","RemoteControl"],nil,nil,nil,nil,nil,nil,true] call bis_fnc_advHint; - //--- Back to player - _vehicle = vehicle _unit; - _vehicleRole = str assignedvehiclerole _unit; - _rating = rating player; - waituntil { - //--- Refresh when vehicle or vehicle role changes - if ((vehicle _unit != _vehicle || str assignedvehiclerole _unit != _vehicleRole) && {alive _unit}) then { - player remotecontrol _unit; - _vehicle = vehicle _unit; - _vehicleRole = str assignedvehiclerole _unit; - }; - if (rating player < _rating) then { - player addrating (-rating player + _rating); - }; - sleep 0.01; - !isnull curatorcamera - || - {cameraon == vehicle player} - || - {!alive _unit} //--- Also isnull check, objNull is not alive - || - {isnull getassignedcuratorlogic player} - //|| - //{_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull] != player} //--- Another curator stole the unit - }; + sleep 0.3; + _color ppeffectadjust [1,1,0,[0,0,0,1],[1,1,1,1],[0,0,0,0],[0.9,0.85,0,0,0,0.5,1]]; + _color ppeffectcommit 0.3; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",0.5]; - player addrating (-rating player + _rating); - objnull remotecontrol _unit; - _unit setvariable ["bis_fnc_moduleRemoteControl_owner",nil,true]; + //--- Back to player + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; + _rating = rating player; + waituntil { + //--- Refresh when vehicle or vehicle role changes + if ((vehicle _unit != _vehicle || str assignedvehiclerole _unit != _vehicleRole) && {alive _unit}) then { + player remotecontrol _unit; + _vehicle = vehicle _unit; + _vehicleRole = str assignedvehiclerole _unit; + }; + if (rating player < _rating) then { + player addrating (-rating player + _rating); + }; + sleep 0.01; + !isnull curatorcamera + || + {cameraon == vehicle player} + || + {!alive _unit} //--- Also isnull check, objNull is not alive + || + {isnull getassignedcuratorlogic player} + //|| + //{_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull] != player} //--- Another curator stole the unit + }; - //--- Death screen - if ( - isnull curatorcamera - && - {cameraon != vehicle player} - && - {!isnull _unit} - && - {!isnull getassignedcuratorlogic player} - //&& - //{(_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull] == player)} - ) then { - sleep 2; - ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black out",1]; - sleep 1; - }; - _unitPos = getposatl _unit; - _camPos = [_unitPos,10,direction _unit + 180] call bis_fnc_relpos; - _camPos set [2,(_unitPos select 2) + (getterrainheightasl _unitPos) - (getterrainheightasl _camPos) + 10]; - //[_camPos,_unit] call bis_fnc_setcuratorcamera; - (getassignedcuratorlogic player) setvariable ["bis_fnc_modulecuratorsetcamera_params",[_camPos,_unit]]; + player addrating (-rating player + _rating); + objnull remotecontrol _unit; + _unit setvariable ["bis_fnc_moduleRemoteControl_owner",nil,true]; - sleep 0.1; //--- Engine needs a delay in case controlled unit was deleted - ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",1e10]; - opencuratorinterface; - ppeffectdestroy _color; + //--- Death screen + if ( + isnull curatorcamera + && + {cameraon != vehicle player} + && + {!isnull _unit} + && + {!isnull getassignedcuratorlogic player} + //&& + //{(_unit getvariable ["bis_fnc_moduleRemoteControl_owner",objnull] == player)} + ) then { + sleep 2; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black out",1]; + sleep 1; + }; + _unitPos = getposatl _unit; + _camPos = [_unitPos,10,direction _unit + 180] call bis_fnc_relpos; + _camPos set [2,(_unitPos select 2) + (getterrainheightasl _unitPos) - (getterrainheightasl _camPos) + 10]; + //[_camPos,_unit] call bis_fnc_setcuratorcamera; + (getassignedcuratorlogic player) setvariable ["bis_fnc_modulecuratorsetcamera_params",[_camPos,_unit]]; - waituntil {!isnull curatorcamera}; - player switchcamera cameraview; - bis_fnc_moduleRemoteControl_unit = nil; - ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",1]; - [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,false]] call bis_fnc_callScriptedEventHandler; - sleep 0.01; - }; - } else { - [objnull,_error] call bis_fnc_showCuratorFeedbackMessage; - }; - deletevehicle _logic; + sleep 0.1; //--- Engine needs a delay in case controlled unit was deleted + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",1e10]; + opencuratorinterface; + ppeffectdestroy _color; + + waituntil {!isnull curatorcamera}; + player switchcamera cameraview; + bis_fnc_moduleRemoteControl_unit = nil; + ("bis_fnc_moduleRemoteCurator" call bis_fnc_rscLayer) cuttext ["","black in",1]; + [_curator,"curatorObjectRemoteControlled",[_curator,player,_unit,false]] call bis_fnc_callScriptedEventHandler; + sleep 0.01; + }; + } else { + [objnull,_error] call bis_fnc_showCuratorFeedbackMessage; + }; + deletevehicle _logic; }; \ No newline at end of file From a40277f6f12b0d6228d0a24d837d7d5935c778b9 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 17:32:01 +0100 Subject: [PATCH 0169/1101] Module configs and function headers --- addons/zeus/config.cpp | 10 ++++++++++ addons/zeus/functions/fnc_bi_moduleCurator.sqf | 2 -- addons/zeus/functions/fnc_bi_moduleMine.sqf | 14 ++++++++++++++ .../zeus/functions/fnc_bi_moduleRemoteControl.sqf | 14 ++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 84d3077a96..3da43d935e 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -16,7 +16,17 @@ class CfgPatches { class CfgVehicles { class Module_F; + class ModuleEmpty_F; class ModuleCurator_F: Module_F { function = QUOTE(FUNC(bi_moduleCurator)); }; + class ModuleMine_F: ModuleEmpty_F { + function = QUOTE(FUNC(bi_moduleMine)); + }; + class ModuleOrdnance_F: Module_F { + function = QUOTE(FUNC(bi_moduleProjectile)); + }; + class ModuleRemoteControl_F: Module_F { + function = QUOTE(FUNC(bi_moduleRemoteControl)); + }; }; \ No newline at end of file diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 640ca7cead..2203cb7f3a 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -12,8 +12,6 @@ * Public: No */ -#include "script_component.hpp" - _logic = _this select 0; _units = _this select 1; _activated = _this select 2; diff --git a/addons/zeus/functions/fnc_bi_moduleMine.sqf b/addons/zeus/functions/fnc_bi_moduleMine.sqf index c3ce200a62..d8142c078d 100644 --- a/addons/zeus/functions/fnc_bi_moduleMine.sqf +++ b/addons/zeus/functions/fnc_bi_moduleMine.sqf @@ -1,3 +1,17 @@ +/* + * Author: Bohemia Interactive + * Module function for spawning mines + * Edited to remove forced map markers and mines being revealed to players + * + * Arguments: + * 0: The logic object + * + * Return Value: + * nil + * + * Public: No + */ + _logic = _this select 0; _units = _this select 1; _activated = _this select 2; diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf index 6289089d5e..bf73a8863e 100644 --- a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf +++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf @@ -1,3 +1,17 @@ +/* + * Author: Bohemia Interactive + * Module function for remote controlling units as zeus + * Edited to remove global wind sound + * + * Arguments: + * 0: The logic object + * + * Return Value: + * nil + * + * Public: No + */ + _logic = _this select 0; _units = _this select 1; _activated = _this select 2; From c1c10f43b266cc2b7863c441243d1ffb1ed5a822 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 17:41:43 +0100 Subject: [PATCH 0170/1101] Fixed typo --- addons/zeus/functions/fnc_bi_moduleProjectile.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index e6b98588a6..afb3f6e4bc 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -2,7 +2,7 @@ * Author: Bohemia Interactive * Module function for spawning projectiles * Used by Curator artillery modules etc - * Edited to remove radio warning (also retiained ballistics support) + * Edited to remove radio warning (also retains ballistics support added by ACE_Modules) * * Arguments: * 0: The logic object From 82f3c65c31ad5788dea8cd7b9e577be638034668 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 10 May 2015 20:06:27 +0200 Subject: [PATCH 0171/1101] Tuned down the dispersion reduction of suppressors some more --- addons/ballistics/CfgWeapons.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 15f70d643d..dfe485c205 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -651,7 +651,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -684,7 +684,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -717,7 +717,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -750,7 +750,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -783,7 +783,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -816,7 +816,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -849,7 +849,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -882,7 +882,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; @@ -915,7 +915,7 @@ class CfgWeapons { }; class MuzzleCoef { - dispersionCoef = "0.9f"; + dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; recoilCoef = "1.0f"; From d321ed27538dff41b76c0887db0243192cee93c8 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 19:56:35 +0100 Subject: [PATCH 0172/1101] Changed function variable to match other medical vehicle functions --- addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf index 539d428da0..670818b1f3 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf @@ -44,7 +44,7 @@ if (!isNull _logic) then { if (!isnil "_x") then { if (typeName _x == typeName objNull) then { if (local _x) then { - _x setvariable [QGVAR(medicClass), _setting, true]; + _x setvariable [QGVAR(isMedic), _setting, true]; }; }; }; @@ -54,7 +54,7 @@ if (!isNull _logic) then { if (!isnil "_x") then { if (typeName _x == typeName objNull) then { if (local _x) then { - _x setvariable [QGVAR(medicClass), _setting, true]; + _x setvariable [QGVAR(isMedic), _setting, true]; }; }; }; From 09c19e4ec2bb6343e09cc60931498eed7781ba4b Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 10 May 2015 20:58:36 +0200 Subject: [PATCH 0173/1101] Subtle recoil reduction when using a suppressor --- addons/ballistics/CfgWeapons.hpp | 36 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index dfe485c205..571112697a 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -654,8 +654,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -687,8 +687,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -720,8 +720,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -753,8 +753,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -786,8 +786,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -819,8 +819,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -852,8 +852,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -885,8 +885,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; @@ -918,8 +918,8 @@ class CfgWeapons { dispersionCoef = "0.95f"; artilleryDispersionCoef = "1.0f"; fireLightCoef = "0.5f"; - recoilCoef = "1.0f"; - recoilProneCoef = "1.0f"; + recoilCoef = "0.95f"; + recoilProneCoef = "0.95f"; minRangeCoef = "1.0f"; minRangeProbabCoef = "1.0f"; midRangeCoef = "1.0f"; From 518cfdab9e4c460c2ef6ce088993eea34757f90d Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 20:19:32 +0100 Subject: [PATCH 0174/1101] isMedic -> medicClass --- addons/medical/functions/fnc_isInMedicalVehicle.sqf | 2 +- addons/medical/functions/fnc_isMedicalVehicle.sqf | 2 +- addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/medical/functions/fnc_isInMedicalVehicle.sqf b/addons/medical/functions/fnc_isInMedicalVehicle.sqf index cffc24410d..5422ce8e1f 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(isMedic), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1] +_vehicle getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1] diff --git a/addons/medical/functions/fnc_isMedicalVehicle.sqf b/addons/medical/functions/fnc_isMedicalVehicle.sqf index 7be406e556..5635700fe0 100644 --- a/addons/medical/functions/fnc_isMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_isMedicalVehicle.sqf @@ -15,4 +15,4 @@ private ["_vehicle"]; _vehicle = _this select 0; -_vehicle getVariable [QGVAR(isMedic), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1] +_vehicle getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1] diff --git a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf index 670818b1f3..539d428da0 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf @@ -44,7 +44,7 @@ if (!isNull _logic) then { if (!isnil "_x") then { if (typeName _x == typeName objNull) then { if (local _x) then { - _x setvariable [QGVAR(isMedic), _setting, true]; + _x setvariable [QGVAR(medicClass), _setting, true]; }; }; }; @@ -54,7 +54,7 @@ if (!isNull _logic) then { if (!isnil "_x") then { if (typeName _x == typeName objNull) then { if (local _x) then { - _x setvariable [QGVAR(isMedic), _setting, true]; + _x setvariable [QGVAR(medicClass), _setting, true]; }; }; }; From eff5ce03d67919d499dd072f46134da7b02291dc Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 10 May 2015 20:58:17 +0100 Subject: [PATCH 0175/1101] false -> 0 --- addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf index 539d428da0..af6de73ce1 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf @@ -37,7 +37,7 @@ if (!isNull _logic) then { _list = "[" + _nilCheckPassedList + "]"; _parsedList = [] call compile _list; - _setting = _logic getvariable ["enabled", false]; + _setting = _logic getvariable ["enabled", 0]; _objects = synchronizedObjects _logic; if (!(_objects isEqualTo []) && _parsedList isEqualTo []) then { { From f7ff4a2f36de32b107d7a0a1ce9b7d1d07f107c8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 May 2015 14:59:53 -0500 Subject: [PATCH 0176/1101] Base Device Handler Framework Multiple devices share Home/Ctrl-home keys --- addons/common/XEH_postInit.sqf | 36 +++++++++++++++++++ addons/common/XEH_preInit.sqf | 2 ++ .../functions/fnc_deviceKeyFindValidIndex.sqf | 13 +++++++ .../functions/fnc_deviceKeyRegisterNew.sqf | 6 ++++ addons/microdagr/XEH_clientInit.sqf | 21 +++++++++-- 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 addons/common/functions/fnc_deviceKeyFindValidIndex.sqf create mode 100644 addons/common/functions/fnc_deviceKeyRegisterNew.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 696aa16f9b..d19958bd57 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -249,3 +249,39 @@ if(isMultiplayer && { time > 0 || isNull player } ) then { }; }, 0, []] call cba_fnc_addPerFrameHandler; }; + +//Device Handler: +GVAR(deviceKeyHandlingArray) = []; +GVAR(deviceKeyCurrentIndex) = -1; + +["ACE3 Equipment", QGVAR(openDevice), "Open Device", //(localize "STR_ACE_microdagr_toggleUnit"), +{ + [] call FUNC(deviceKeyFindValidIndex); + if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; + [] call ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 3); + true; +}, +{false}, +[0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key + +["ACE3 Equipment", QGVAR(closeDevice), "Close Device", //(localize "STR_ACE_microdagr_toggleUnit"), +{ + [] call FUNC(deviceKeyFindValidIndex); + if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; + [] call ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 4); +}, +{false}, +[0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key + +["ACE3 Equipment", QGVAR(cycleDevice), "Cycle Devices", //(localize "STR_ACE_microdagr_toggleUnit"), +{ + systemChat "here"; + [1] call FUNC(deviceKeyFindValidIndex); + if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; + _displayName = ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 0); + _iconImage = ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 1); + systemChat str [_displayName, _iconImage]; + [_displayName, _iconImage] call FUNC(displayTextPicture); +}, +{false}, +[0xC7, [true, false, false]], false] call cba_fnc_addKeybind; //SHIFT + Home Key diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 5c2ad1e592..4bedd36513 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -33,6 +33,8 @@ PREP(currentChannel); PREP(debug); PREP(debugModule); PREP(defineVariable); +PREP(deviceKeyFindValidIndex); +PREP(deviceKeyRegisterNew); PREP(disableAI); PREP(disableUserInput); PREP(displayIcon); diff --git a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf new file mode 100644 index 0000000000..19069b1821 --- /dev/null +++ b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf @@ -0,0 +1,13 @@ + +#include "script_component.hpp" + +DEFAULT_PARAM(0,_offsetBy,0); + +_validIndex = -1; +for "_offset" from _offsetBy to ((count GVAR(deviceKeyHandlingArray)) - 1 + _offsetBy) do { + _realIndex = (GVAR(deviceKeyCurrentIndex) + _offset) % (count GVAR(deviceKeyHandlingArray)); + if ([] call ((GVAR(deviceKeyHandlingArray) select _realIndex) select 2)) exitWith { + _validIndex = _realIndex; + }; +}; +GVAR(deviceKeyCurrentIndex) = _validIndex; diff --git a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf new file mode 100644 index 0000000000..0b8ab0761c --- /dev/null +++ b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf @@ -0,0 +1,6 @@ + +#include "script_component.hpp" +PARAMS_5(_displayName,_iconImage,_conditionCode,_toggleCode,_closeCode); + +GVAR(deviceKeyHandlingArray) pushBack [_displayName,_iconImage,_conditionCode,_toggleCode,_closeCode]; +[] call FUNC(deviceKeyFindValidIndex); diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index 587bf85ef5..339e0bf112 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -3,7 +3,24 @@ if (!hasInterface) exitWith {}; -//Add Keybinds: +_conditonCode = { +("ACE_microDAGR" in (items ace_player)) +}; +_toggleCode = { + if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + [] call FUNC(openDisplay); //toggle display mode + true +}; +_closeCode = { + if (GVAR(currentShowMode) == DISPLAY_MODE_CLOSED) exitWith {false}; + [DISPLAY_MODE_CLOSED] call FUNC(openDisplay); + true +}; + +["Mdagr", "", _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); + + +/* //Add Keybinds: ["ACE3 Equipment", QGVAR(openGPS), (localize "STR_ACE_microdagr_toggleUnit"), { // canInteractWith (can use on map) @@ -29,7 +46,7 @@ if (!hasInterface) exitWith {}; true; }, {false}, -[0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key +[0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key */ //Add Eventhandler: ["RangerfinderData", {_this call FUNC(recieveRangefinderData)}] call EFUNC(common,addEventHandler); From 05f1b884fac792df117947ab6fce4c238d5099e9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 May 2015 15:17:50 -0500 Subject: [PATCH 0177/1101] Localization/ headers --- addons/common/XEH_postInit.sqf | 8 ++--- .../functions/fnc_deviceKeyFindValidIndex.sqf | 16 ++++++++- .../functions/fnc_deviceKeyRegisterNew.sqf | 21 ++++++++++- addons/common/stringtable.xml | 11 +++++- addons/microdagr/XEH_clientInit.sqf | 36 +++---------------- 5 files changed, 52 insertions(+), 40 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index d19958bd57..ade35855ea 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -254,7 +254,7 @@ if(isMultiplayer && { time > 0 || isNull player } ) then { GVAR(deviceKeyHandlingArray) = []; GVAR(deviceKeyCurrentIndex) = -1; -["ACE3 Equipment", QGVAR(openDevice), "Open Device", //(localize "STR_ACE_microdagr_toggleUnit"), +["ACE3 Equipment", QGVAR(openDevice), (localize "STR_ACE_Common_toggleHandheldDevice"), { [] call FUNC(deviceKeyFindValidIndex); if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; @@ -264,7 +264,7 @@ GVAR(deviceKeyCurrentIndex) = -1; {false}, [0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key -["ACE3 Equipment", QGVAR(closeDevice), "Close Device", //(localize "STR_ACE_microdagr_toggleUnit"), +["ACE3 Equipment", QGVAR(closeDevice), (localize "STR_ACE_Common_closeHandheldDevice"), { [] call FUNC(deviceKeyFindValidIndex); if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; @@ -273,14 +273,12 @@ GVAR(deviceKeyCurrentIndex) = -1; {false}, [0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key -["ACE3 Equipment", QGVAR(cycleDevice), "Cycle Devices", //(localize "STR_ACE_microdagr_toggleUnit"), +["ACE3 Equipment", QGVAR(cycleDevice), (localize "STR_ACE_Common_cycleHandheldDevices"), { - systemChat "here"; [1] call FUNC(deviceKeyFindValidIndex); if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; _displayName = ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 0); _iconImage = ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 1); - systemChat str [_displayName, _iconImage]; [_displayName, _iconImage] call FUNC(displayTextPicture); }, {false}, diff --git a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf index 19069b1821..431761bae1 100644 --- a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf +++ b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf @@ -1,4 +1,18 @@ - +/* + * Author: PabstMirror + * Finds next valid index for the device array. + * + * Arguments: + * 0: Offset from currentIndex (use 1 to find next valid) + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_common_fnc_deviceKeyFindValidIndex + * + * Public: No + */ #include "script_component.hpp" DEFAULT_PARAM(0,_offsetBy,0); diff --git a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf index 0b8ab0761c..6a15c3c340 100644 --- a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf +++ b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf @@ -1,5 +1,24 @@ - +/* + * Author: PabstMirror + * Finds next valid index for the device array. + * + * Arguments: + * 0: Localized Device Display Name + * 1: Image + * 2: Condtion Code (do they have the device) + * 3: Toggle Code (on home press) + * 4: Close Code (on ctrl-home press) + * + * Return Value: + * Nothing + * + * Example: + * [(localize "STR_ACE_microdagr_itemName"), QUOTE(PATHTOF(images\microDAGR_item.paa)), _conditonCode, _toggleCode, _closeCode] call ace_common_fnc_deviceKeyRegisterNew + * + * Public: No + */ #include "script_component.hpp" + PARAMS_5(_displayName,_iconImage,_conditionCode,_toggleCode,_closeCode); GVAR(deviceKeyHandlingArray) pushBack [_displayName,_iconImage,_conditionCode,_toggleCode,_closeCode]; diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 8d28704362..3b1e5dbc76 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -470,5 +470,14 @@ Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa. A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa. + + Toggle Device + + + Close Device + + + Cycle Devices + - + \ No newline at end of file diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index 339e0bf112..0569256df3 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -3,8 +3,10 @@ if (!hasInterface) exitWith {}; +//Add deviceKey entry: +private ["_conditonCode", "_toggleCode", "_closeCode"]; _conditonCode = { -("ACE_microDAGR" in (items ace_player)) + ("ACE_microDAGR" in (items ace_player)) }; _toggleCode = { if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -16,37 +18,7 @@ _closeCode = { [DISPLAY_MODE_CLOSED] call FUNC(openDisplay); true }; - -["Mdagr", "", _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); - - -/* //Add Keybinds: -["ACE3 Equipment", QGVAR(openGPS), (localize "STR_ACE_microdagr_toggleUnit"), -{ - // canInteractWith (can use on map) - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; - // Conditions: specific - if (!("ACE_microDAGR" in (items ace_player))) exitWith {false}; - - [] call FUNC(openDisplay); //toggle display mode - true; -}, -{false}, -[0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key - -["ACE3 Equipment", QGVAR(closeGPS), (localize "STR_ACE_microdagr_closeUnit"), -{ - // canInteractWith (can use on map) - if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; - // Conditions: specific - if (!("ACE_microDAGR" in (items ace_player))) exitWith {false}; - if (GVAR(currentShowMode) == DISPLAY_MODE_CLOSED) exitWith {false}; - - [DISPLAY_MODE_CLOSED] call FUNC(openDisplay); //close unit - true; -}, -{false}, -[0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key */ +[(localize "STR_ACE_microdagr_itemName"), QUOTE(PATHTOF(images\microDAGR_item.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); //Add Eventhandler: ["RangerfinderData", {_this call FUNC(recieveRangefinderData)}] call EFUNC(common,addEventHandler); From 57d6ad988b1c85846c4dffbb853fd116cdd14227 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 May 2015 16:54:24 -0500 Subject: [PATCH 0178/1101] Kestral WIP --- .../functions/fnc_deviceKeyFindValidIndex.sqf | 15 ++++++++----- addons/kestrel4500/initKeybinds.sqf | 21 +++++++++---------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf index 431761bae1..f9ac89a30b 100644 --- a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf +++ b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf @@ -6,7 +6,7 @@ * 0: Offset from currentIndex (use 1 to find next valid) * * Return Value: - * Nothing + * The new index (-1 if no valid) * * Example: * [] call ace_common_fnc_deviceKeyFindValidIndex @@ -18,10 +18,15 @@ DEFAULT_PARAM(0,_offsetBy,0); _validIndex = -1; -for "_offset" from _offsetBy to ((count GVAR(deviceKeyHandlingArray)) - 1 + _offsetBy) do { - _realIndex = (GVAR(deviceKeyCurrentIndex) + _offset) % (count GVAR(deviceKeyHandlingArray)); - if ([] call ((GVAR(deviceKeyHandlingArray) select _realIndex) select 2)) exitWith { - _validIndex = _realIndex; +if ((count GVAR(deviceKeyHandlingArray)) > 0) then { + if (GVAR(deviceKeyCurrentIndex) == -1) then {GVAR(deviceKeyCurrentIndex) = 0;}; + for "_offset" from _offsetBy to ((count GVAR(deviceKeyHandlingArray)) - 1 + _offsetBy) do { + _realIndex = (GVAR(deviceKeyCurrentIndex) + _offset) % (count GVAR(deviceKeyHandlingArray)); + if ([] call ((GVAR(deviceKeyHandlingArray) select _realIndex) select 2)) exitWith { + _validIndex = _realIndex; + }; }; }; + GVAR(deviceKeyCurrentIndex) = _validIndex; +_validIndex diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index f910bdf552..9096b7c897 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -1,5 +1,9 @@ -["ACE3 Equipment", QGVAR(KestrelDialogKey), localize "STR_ACE_Kestrel4500_KestrelDialogKey", -{ +//Add deviceKey entry: +private ["_conditonCode", "_toggleCode", "_closeCode"]; +_conditonCode = { + [] call FUNC(canShow); +}; +_toggleCode = { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; if(GVAR(Kestrel4500)) exitWith { false }; @@ -7,18 +11,13 @@ // Statement [] call FUNC(createKestrelDialog); false -}, -{false}, -[0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) - -["ACE3 Equipment", QGVAR(DisplayKestrelKey), localize "STR_ACE_Kestrel4500_DisplayKestrelKey", -{ +}; +_closeCode = { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement [] call FUNC(displayKestrel); false -}, -{false}, -[0, [true, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) +}; +[(localize "STR_ACE_Kestrel_Name"), QUOTE(PATHTOF(UI\Kestrel4500.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); \ No newline at end of file From 2e91f4527323d887503d300a5319b28b43f16ee9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 10 May 2015 16:57:05 -0500 Subject: [PATCH 0179/1101] #1104 - Fix legend in editor --- addons/map/config.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/addons/map/config.cpp b/addons/map/config.cpp index 927d9aeb0f..9d75eaa5c8 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -87,6 +87,22 @@ class RscMapControl { sizeExGrid = 0.032; }; +class RscMap; +class RscDisplayArcadeMap_Layout_2: RscMap { //"Traditional" Editor: + class controlsBackground { + class CA_Map: RscMapControl { + #include "MapTweaks.hpp" + }; + }; +}; +class RscDisplayArcadeMap_Layout_6: RscMap { //"Streamlined" Editor: + class controlsBackground { + class CA_Map: RscMapControl { + #include "MapTweaks.hpp" + }; + }; +}; + // REGULAR MAP class RscDisplayMainMap { // Tweak map styling From 97105c5b0761018f1424efa8e0e72e522a4b7337 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 18:16:27 -0700 Subject: [PATCH 0180/1101] Change ACE is version stamp. Example. You will now see ACE is version 3.0.0.2 Initial prep for showing Commit ID for each PBO in #1105 --- tools/make.py | 130 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 95 insertions(+), 35 deletions(-) diff --git a/tools/make.py b/tools/make.py index 387332a666..f6fde50440 100644 --- a/tools/make.py +++ b/tools/make.py @@ -55,14 +55,18 @@ if sys.platform == "win32": import winreg ######## GLOBALS ######### +ACE_VERSION = "3.0.0.3" work_drive = "" module_root = "" +make_root = "" release_dir = "" module_root_parent = "" optionals_root = "" -key_name = "ace_3.0.0" +key_name = "ace" key = "" dssignfile = "" +prefix = "ace" +pbo_name_prefix = "ace_" signature_blacklist = ["ace_server.pbo"] ############################################################################### @@ -466,7 +470,7 @@ def check_for_obsolete_pbos(addonspath, file): return False -def config_restore(modulePath): +def addon_restore(modulePath): #PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp #print_green("\Pabst! (restoring): {}".format(os.path.join(modulePath, "config.cpp"))) try: @@ -478,10 +482,88 @@ def config_restore(modulePath): os.remove(os.path.join(modulePath, "config.bin")) if os.path.isfile(os.path.join(modulePath, "texHeaders.bin")): os.remove(os.path.join(modulePath, "texHeaders.bin")) + if os.path.isfile(os.path.join(modulePath, "$PBOPREFIX$.backup")): + if os.path.isfile(os.path.join(modulePath, "$PBOPREFIX$")): + os.remove(os.path.join(modulePath, "$PBOPREFIX$")) + os.rename(os.path.join(modulePath, "$PBOPREFIX$.backup"), os.path.join(modulePath, "$PBOPREFIX$")) except: print_yellow("Some error occurred. Check your addon folder {} for integrity".format(modulePath)) return True + + +def get_ace_version(): + global ACE_VERSION + #do the magic based on https://github.com/acemod/ACE3/issues/806#issuecomment-95639048 + return ACE_VERSION + +def get_private_keyname(commitID,module="main"): + global pbo_name_prefix + + aceVersion = get_ace_version() + keyName = str("{prefix}{version}-{commit_id}".format(prefix=pbo_name_prefix,version=aceVersion,commit_id=commitID)) + print_yellow(keyName) + return keyName + + +def get_commit_ID(): + # Get latest commit ID + global make_root + curDir = os.getcwd() + try: + gitpath = os.path.join(os.path.dirname(make_root), ".git") + assert os.path.exists(gitpath) + os.chdir(make_root) + + commit_id = subprocess.check_output(["git", "rev-parse", "HEAD"]) + commit_id = str(commit_id, "utf-8")[:8] + except: + print_error("FAILED TO DETERMINE COMMIT ID.") + print_yellow("Verify that \GIT\BIN or \GIT\CMD is in your system path or user path.") + commit_id = "NOGIT" + raise + finally: + pass + os.chdir(curDir) + + print_yellow("COMMIT ID set to {}".format(commit_id)) + return commit_id + + +def version_stamp_pboprefix(module,commitID): + ### Update pboPrefix with the correct version stamp. Use commit_id as the build number. + global work_drive + global prefix + + try: + configpath = os.path.join(work_drive, prefix, module, "$PBOPREFIX$") + shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) + + f = open(configpath, "r") + configtext = f.read() + f.close() + + if configtext: + #patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1) + #patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext) + #configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL) + f = open(configpath, "w") + f.write(configtext) + f.close() + else: + os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + except: + raise + print_error("Failed to include build number") + return False + finally: + if os.path.isfile(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")): + if os.path.isfile(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")): + os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + + return True ############################################################################### @@ -489,14 +571,18 @@ def main(argv): """Build an Arma addon suite in a directory from rules in a make.cfg file.""" print_blue("\nmake.py for Arma, modified for Advanced Combat Environment v{}".format(__version__)) + global ACE_VERSION global work_drive global module_root + global make_root global release_dir global module_root_parent global optionals_root global key_name global key global dssignfile + global prefix + global pbo_name_prefix if sys.platform != "win32": print_error("Non-Windows platform (Cygwin?). Please re-run from cmd.") @@ -600,18 +686,7 @@ See the make.cfg file for additional build options. make_root_parent = os.path.abspath(os.path.join(os.getcwd(), os.pardir)) os.chdir(make_root) - # Get latest commit ID - try: - gitpath = os.path.join(os.path.dirname(make_root), ".git") - assert os.path.exists(gitpath) - commit_id = subprocess.check_output(["git", "rev-parse", "HEAD"]) - commit_id = str(commit_id, "utf-8")[:8] - key_name = str(key_name+"-"+commit_id) - except: - print_error("FAILED TO DETERMINE COMMIT ID.") - print_yellow("Verify that \GIT\BIN or \GIT\CMD is in your system path or user path.") - commit_id = "NOGIT" cfg = configparser.ConfigParser(); try: @@ -665,6 +740,10 @@ See the make.cfg file for additional build options. extensions_root = os.path.join(module_root_parent, "extensions") print_green ("module_root: {}".format(module_root)) + + commit_id = get_commit_ID() + key_name = versionStamp = get_private_keyname(commit_id) + if (os.path.isdir(module_root)): os.chdir(module_root) else: @@ -934,27 +1013,7 @@ See the make.cfg file for additional build options. shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) - # Include build number - try: - configpath = os.path.join(work_drive, prefix, module, "config.cpp") - f = open(configpath, "r") - configtext = f.read() - f.close() - - if configtext: - patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1) - patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext) - configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL) - f = open(configpath, "w") - f.write(configtext) - f.close() - else: - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) - except: - raise - print_error("Failed to include build number") - continue + version_stamp_pboprefix(module,commit_id) if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")): print_green("$NOBIN$ Found. Proceeding with non-binarizing!") @@ -1013,7 +1072,7 @@ See the make.cfg file for additional build options. print ("Resuming build...") continue finally: - config_restore(os.path.join(work_drive, prefix, module)) + addon_restore(os.path.join(work_drive, prefix, module)) elif build_tool== "addonbuilder": # Detect $NOBIN$ and do not binarize if found. @@ -1092,6 +1151,7 @@ See the make.cfg file for additional build options. except: print_yellow("Cancel or some error detected.") + finally: copy_important_files(module_root_parent,os.path.join(release_dir, "@ace")) cleanup_optionals(optionals_modules) From 2ffc38ddd204ef340dfe7bfa081fb174c7fd48f8 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 18:21:01 -0700 Subject: [PATCH 0181/1101] Do not build common every time #1105 --- tools/make.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/make.py b/tools/make.py index f6fde50440..8bc4c50eb2 100644 --- a/tools/make.py +++ b/tools/make.py @@ -913,10 +913,6 @@ See the make.cfg file for additional build options. else: old_sha = "" - #We always build ACE_common so we can properly show the correct version stamp in the RPT file. - if module == "common": - old_sha = "" - # Hash the module new_sha = get_directory_hash(os.path.join(module_root, module)) From 097d0cb8ed0d3088efa624c6ea3b7a74f770d893 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 19:44:24 -0700 Subject: [PATCH 0182/1101] Update $PBOPREFIX$ with Commit ID for each PBO #1105 --- tools/make.py | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/tools/make.py b/tools/make.py index 8bc4c50eb2..76233f9120 100644 --- a/tools/make.py +++ b/tools/make.py @@ -497,6 +497,7 @@ def get_ace_version(): #do the magic based on https://github.com/acemod/ACE3/issues/806#issuecomment-95639048 return ACE_VERSION + def get_private_keyname(commitID,module="main"): global pbo_name_prefix @@ -544,19 +545,38 @@ def version_stamp_pboprefix(module,commitID): f.close() if configtext: - #patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1) - #patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext) - #configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL) - f = open(configpath, "w") - f.write(configtext) - f.close() - else: - os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) - os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + patchestext = re.search(r"version.*?=.*?$", configtext, re.DOTALL) + print("{}".format(patchestext)) + if patchestext: + if configtext: + print("configtext before ==> {}".format(configtext)) + patchestext = re.search(r"(version.*?=)(.*?)$", configtext, re.DOTALL).group(1) + print("patchestext before ==> {}".format(patchestext)) + #patchestext1 = re.sub(r'version(.*?)="(.*?)"$', r'version\1=" {}"'.format(commitID), patchestext) + #print("patchestext after ==> {}".format(patchestext1)) + print("commitID ==> {}".format(commitID)) + configtext = re.sub(r"version(.*?)=(.*?)$", "version = {}\n".format(commitID), configtext, flags=re.DOTALL) + print("configtext after ==> {}".format(configtext)) + f = open(configpath, "w") + f.write(configtext) + f.close() + os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) + else: + os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + else: + if configtext: + #append version info + f = open(configpath, "a") + f.write("\nversion = {}".format(commitID)) + f.close() + os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) + except: - raise print_error("Failed to include build number") + raise return False + finally: if os.path.isfile(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")): if os.path.isfile(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")): From 4d56e6317cb132879b549b9ec44080dfe9e3c149 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 19:58:32 -0700 Subject: [PATCH 0183/1101] Warn builder for missing $PBOPREFIX$ #1105 --- tools/make.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/make.py b/tools/make.py index 76233f9120..89ba17a0c1 100644 --- a/tools/make.py +++ b/tools/make.py @@ -538,8 +538,16 @@ def version_stamp_pboprefix(module,commitID): try: configpath = os.path.join(work_drive, prefix, module, "$PBOPREFIX$") - shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) - + if os.path.isfile(configpath): + shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) + else: + print_error("$PBOPREFIX$ Does not exist for module: {}.".format(module)) + return False + except: + print_error("Error updating $PBOPREFIX$ for module {}.") + return False + + try: f = open(configpath, "r") configtext = f.read() f.close() From 0e36e56c1c05d42bed54fa05f44662eba5d7a867 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 22:12:57 -0700 Subject: [PATCH 0184/1101] Proper handling $PBOPREFIX$ backups and cleanup if canceled. #1105 --- tools/make.py | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/tools/make.py b/tools/make.py index 89ba17a0c1..3d70c28f0a 100644 --- a/tools/make.py +++ b/tools/make.py @@ -533,20 +533,12 @@ def get_commit_ID(): def version_stamp_pboprefix(module,commitID): ### Update pboPrefix with the correct version stamp. Use commit_id as the build number. + #This function will not handle any $PBOPREFIX$ backup or cleanup. global work_drive global prefix - try: - configpath = os.path.join(work_drive, prefix, module, "$PBOPREFIX$") - if os.path.isfile(configpath): - shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) - else: - print_error("$PBOPREFIX$ Does not exist for module: {}.".format(module)) - return False - except: - print_error("Error updating $PBOPREFIX$ for module {}.") - return False - + configpath = os.path.join(work_drive, prefix, module, "$PBOPREFIX$") + try: f = open(configpath, "r") configtext = f.read() @@ -568,7 +560,6 @@ def version_stamp_pboprefix(module,commitID): f = open(configpath, "w") f.write(configtext) f.close() - os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) else: os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) @@ -578,19 +569,14 @@ def version_stamp_pboprefix(module,commitID): f = open(configpath, "a") f.write("\nversion = {}".format(commitID)) f.close() - os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) - + else: + os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) + os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) except: print_error("Failed to include build number") raise return False - finally: - if os.path.isfile(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")): - if os.path.isfile(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")): - os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) - os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) - return True ############################################################################### @@ -1018,6 +1004,16 @@ See the make.cfg file for additional build options. if build_tool == "pboproject": try: #PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up: + try: + configpath = os.path.join(work_drive, prefix, module, "$PBOPREFIX$") + if os.path.isfile(configpath): + shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) + else: + print_error("$PBOPREFIX$ Does not exist for module: {}.".format(module)) + return False + except: + print_error("Error creating backup of $PBOPREFIX$ for module {}.") + shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup")) os.chdir("P:\\") From d03203d3d5ecd129af47cadce8d4b5f7c8f232aa Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 22:20:29 -0700 Subject: [PATCH 0185/1101] remove debug #1105 --- tools/make.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tools/make.py b/tools/make.py index 3d70c28f0a..a4f0062c30 100644 --- a/tools/make.py +++ b/tools/make.py @@ -503,7 +503,6 @@ def get_private_keyname(commitID,module="main"): aceVersion = get_ace_version() keyName = str("{prefix}{version}-{commit_id}".format(prefix=pbo_name_prefix,version=aceVersion,commit_id=commitID)) - print_yellow(keyName) return keyName @@ -546,17 +545,10 @@ def version_stamp_pboprefix(module,commitID): if configtext: patchestext = re.search(r"version.*?=.*?$", configtext, re.DOTALL) - print("{}".format(patchestext)) if patchestext: if configtext: - print("configtext before ==> {}".format(configtext)) patchestext = re.search(r"(version.*?=)(.*?)$", configtext, re.DOTALL).group(1) - print("patchestext before ==> {}".format(patchestext)) - #patchestext1 = re.sub(r'version(.*?)="(.*?)"$', r'version\1=" {}"'.format(commitID), patchestext) - #print("patchestext after ==> {}".format(patchestext1)) - print("commitID ==> {}".format(commitID)) configtext = re.sub(r"version(.*?)=(.*?)$", "version = {}\n".format(commitID), configtext, flags=re.DOTALL) - print("configtext after ==> {}".format(configtext)) f = open(configpath, "w") f.write(configtext) f.close() From 46cabb14adc0b7306288efe46eb3e5ee0a529810 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 10 May 2015 23:49:40 -0700 Subject: [PATCH 0186/1101] Remove unnecessary return so that it can move to the next PBO after missing $PBOPREFIX$ #1105 --- tools/make.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/make.py b/tools/make.py index a4f0062c30..940579ffc2 100644 --- a/tools/make.py +++ b/tools/make.py @@ -1002,7 +1002,7 @@ See the make.cfg file for additional build options. shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) else: print_error("$PBOPREFIX$ Does not exist for module: {}.".format(module)) - return False + except: print_error("Error creating backup of $PBOPREFIX$ for module {}.") From cf6846dac2c24c6a2db19c0ba7374083c939581f Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Mon, 11 May 2015 00:34:32 -0700 Subject: [PATCH 0187/1101] Improve exception handling #1105 --- tools/make.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/make.py b/tools/make.py index 940579ffc2..e45c029ccc 100644 --- a/tools/make.py +++ b/tools/make.py @@ -564,9 +564,8 @@ def version_stamp_pboprefix(module,commitID): else: os.remove(os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) os.rename(os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup"), os.path.join(work_drive, prefix, module, "$PBOPREFIX$")) - except: - print_error("Failed to include build number") - raise + except Exception as e: + print_error("Failed to include build number: {}".format(e)) return False return True From b03333c9e8fb03febd5ee17ee98ce868c251bfb1 Mon Sep 17 00:00:00 2001 From: ulteq Date: Mon, 11 May 2015 10:59:07 +0200 Subject: [PATCH 0188/1101] Moved all wind calculations into the weather module --- addons/advanced_ballistics/XEH_preInit.sqf | 2 - .../functions/fnc_calculateWindSpeed.sqf | 78 -------- addons/config.cpp | 167 ------------------ addons/kestrel4500/XEH_preInit.sqf | 1 - .../functions/fnc_calculateWindSpeed.sqf | 68 ------- .../functions/fnc_measureWindSpeed.sqf | 7 +- addons/weather/XEH_preInit.sqf | 2 + addons/weather/config.cpp | 4 +- .../fnc_calculateRoughnessLength.sqf | 0 .../functions/fnc_calculateWindSpeed.sqf | 90 ++++++++++ .../weather/functions/fnc_displayWindInfo.sqf | 13 +- 11 files changed, 104 insertions(+), 328 deletions(-) delete mode 100644 addons/advanced_ballistics/functions/fnc_calculateWindSpeed.sqf delete mode 100644 addons/config.cpp delete mode 100644 addons/kestrel4500/functions/fnc_calculateWindSpeed.sqf rename addons/{advanced_ballistics => weather}/functions/fnc_calculateRoughnessLength.sqf (100%) create mode 100644 addons/weather/functions/fnc_calculateWindSpeed.sqf diff --git a/addons/advanced_ballistics/XEH_preInit.sqf b/addons/advanced_ballistics/XEH_preInit.sqf index 1d19a9c492..6fdd849b12 100644 --- a/addons/advanced_ballistics/XEH_preInit.sqf +++ b/addons/advanced_ballistics/XEH_preInit.sqf @@ -6,9 +6,7 @@ PREP(calculateAmmoTemperatureVelocityShift); PREP(calculateAtmosphericCorrection); PREP(calculateBarrelLengthVelocityShift); PREP(calculateRetardation); -PREP(calculateRoughnessLength); PREP(calculateStabilityFactor); -PREP(calculateWindSpeed); PREP(displayProtractor); PREP(handleFired); PREP(initializeTerrainExtension); diff --git a/addons/advanced_ballistics/functions/fnc_calculateWindSpeed.sqf b/addons/advanced_ballistics/functions/fnc_calculateWindSpeed.sqf deleted file mode 100644 index e7b0a322e8..0000000000 --- a/addons/advanced_ballistics/functions/fnc_calculateWindSpeed.sqf +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Author: Ruthberg - * - * Calculates the true wind speed at a given world position - * - * Arguments: - * 0: _this - world position - * - * Return Value: - * 0: wind speed - m/s - * - * Public: No - */ -#include "script_component.hpp" - -private ["_windSpeed", "_windDir", "_height", "_newWindSpeed", "_windSource", "_roughnessLength"]; - -fnc_polar2vect = { - private ["_mag2D"]; - _mag2D = (_this select 0) * cos((_this select 2)); - [_mag2D * sin((_this select 1)), _mag2D * cos((_this select 1)), (_this select 0) * sin((_this select 2))]; -}; - -_windSpeed = vectorMagnitude ACE_wind; -_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); - -// Wind gradient -if (_windSpeed > 0.05) then { - _height = (ASLToATL _this) select 2; - _height = 0 max _height min 20; - if (_height < 20) then { - _roughnessLength = _this call FUNC(calculateRoughnessLength); - _windSpeed = _windSpeed * ln(_height / _roughnessLength) / ln(20 / _roughnessLength); - }; -}; - -// Terrain effect on wind -if (_windSpeed > 0.05) then { - _newWindSpeed = 0; - { - _windSource = [100, _windDir + 180, _x] call fnc_polar2vect; - if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 9) * _windSpeed; - }; - _windSource = [100, _windDir + 180 + _x, 0] call fnc_polar2vect; - if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 9) * _windSpeed; - }; - _windSource = [100, _windDir + 180 - _x, 0] call fnc_polar2vect; - if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 9) * _windSpeed; - }; - } forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - _windSpeed = _newWindSpeed; -}; - -// Obstacle effect on wind -if (_windSpeed > 0.05) then { - _newWindSpeed = 0; - { - _windSource = [20, _windDir + 180, _x] call fnc_polar2vect; - if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 2) * _windSpeed; - }; - _windSource = [20, _windDir + 180 + _x, 0] call fnc_polar2vect; - if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 2) * _windSpeed; - }; - _windSource = [20, _windDir + 180 - _x, 0] call fnc_polar2vect; - if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 2) * _windSpeed; - }; - } forEach [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]; - _windSpeed = _newWindSpeed; -}; -_windSpeed = 0 max _windSpeed; - -_windSpeed diff --git a/addons/config.cpp b/addons/config.cpp deleted file mode 100644 index 27647f8d00..0000000000 --- a/addons/config.cpp +++ /dev/null @@ -1,167 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; - weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_main"}; - author[] = {"KoffeinFlummi"}; - authorUrl = "https://github.com/KoffeinFlummi/"; - VERSION_CONFIG; - }; -}; - -#include "CfgEventHandlers.hpp" - -#include "CfgSounds.hpp" -#include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" -#include "CfgMagazines.hpp" - -#include "CfgActions.hpp" -#include "CfgMoves.hpp" -#include "CfgVoice.hpp" -#include "CfgUnitInsignia.hpp" - -class ACE_Rsc_Display_Base { - idd = -1; - type = 0; - style = 48; - name = ""; - duration = 999999; - fadeIn = 0; - fadeOut = 0; - font = "TahomaB"; - size = 1; - colorBackground[] = {1, 1, 1, 0}; - colorText[] = {1, 1, 1, 1}; -}; - -class ACE_Rsc_Control_Base { - idc = 1; - type = 0; - style = 48; - access = 0; - lineSpacing = 0; - moving = 1; - text = ""; - size = 1; - sizeEx = 0; - font = "TahomaB"; - colorBackground[] = {1, 1, 1, 0}; - colorText[] = {1, 1, 1, 1}; - x = 0; - y = 0; - w = 0; - 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(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[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; - }; - class GVAR(SettingProgressBarLocation) { - value = 0; - typeName = "SCALAR"; - force = 0; - isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; - description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; - values[] = {"Top", "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 "define.hpp" -#include -#include -#include - -class CfgUIGrids { - class IGUI { - class Presets { - class Arma3 { - class Variables { - grid_ACE_displayText[] = {{((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)),safeZoneY + 0.175 * safezoneH, (10 *(((safezoneW / safezoneH) min 1.2) / 40)), (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; - }; - }; - }; - - class Variables { - class grid_ACE_displayText { - displayName = "ACE Hint"; - description = "Textual in game feedback to the player."; - preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa"; - saveToProfile[] = {0,1}; - }; - }; - }; -}; - -/* -// check dll -class RscStandardDisplay; -class RscDisplayMain: RscStandardDisplay { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscDisplayMain"",'GUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_5('header','tail',{0},{},_this select 0)] call COMPILE_FILE(functions\fnc_errorMessage)); -}; -*/ - -class ACE_Extensions { - extensions[] = {}; -}; diff --git a/addons/kestrel4500/XEH_preInit.sqf b/addons/kestrel4500/XEH_preInit.sqf index 2d5e211a54..4e29b9bdbf 100644 --- a/addons/kestrel4500/XEH_preInit.sqf +++ b/addons/kestrel4500/XEH_preInit.sqf @@ -3,7 +3,6 @@ ADDON = false; PREP(buttonPressed); -PREP(calculateWindSpeed); PREP(canShow); PREP(collectData); PREP(createKestrelDialog); diff --git a/addons/kestrel4500/functions/fnc_calculateWindSpeed.sqf b/addons/kestrel4500/functions/fnc_calculateWindSpeed.sqf deleted file mode 100644 index 8267f7f729..0000000000 --- a/addons/kestrel4500/functions/fnc_calculateWindSpeed.sqf +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Author: Ruthberg - * - * Calculates the wind speed at a given world position - * - * Arguments: - * 0: _this - world position - * - * Return Value: - * 0: wind speed - m/s - * - * Public: No - */ -#include "script_component.hpp" - -private ["_windSpeed", "_windDir", "_newWindSpeed", "_windSource"]; - -fnc_polar2vect = { - private ["_mag2D"]; - _mag2D = (_this select 0) * cos((_this select 2)); - [_mag2D * sin((_this select 1)), _mag2D * cos((_this select 1)), (_this select 0) * sin((_this select 2))]; -}; - -_windSpeed = vectorMagnitude ACE_wind; -_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); - -// Terrain effect on wind -if (_windSpeed > 0.05) then { - _newWindSpeed = 0; - { - _windSource = [100, _windDir + 180, _x] call fnc_polar2vect; - if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 9) * _windSpeed; - }; - _windSource = [100, _windDir + 180 + _x, 0] call fnc_polar2vect; - if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 9) * _windSpeed; - }; - _windSource = [100, _windDir + 180 - _x, 0] call fnc_polar2vect; - if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 9) * _windSpeed; - }; - } forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - _windSpeed = _newWindSpeed; -}; - -// Obstacle effect on wind -if (_windSpeed > 0.05) then { - _newWindSpeed = 0; - { - _windSource = [20, _windDir + 180, _x] call fnc_polar2vect; - if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 2) * _windSpeed; - }; - _windSource = [20, _windDir + 180 + _x, 0] call fnc_polar2vect; - if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 2) * _windSpeed; - }; - _windSource = [20, _windDir + 180 - _x, 0] call fnc_polar2vect; - if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { - _newWindSpeed = cos(_x * 2) * _windSpeed; - }; - } forEach [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]; - _windSpeed = _newWindSpeed; -}; -_windSpeed = 0 max _windSpeed; - -_windSpeed diff --git a/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf b/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf index eb718906aa..73b4e228d6 100644 --- a/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf +++ b/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf @@ -19,12 +19,13 @@ private ["_playerDir", "_windSpeed", "_windDir"]; _playerDir = getDir ACE_player; _windSpeed = vectorMagnitude ACE_wind; _windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); - if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { - _windSpeed = (eyePos ACE_player) call EFUNC(advanced_ballistics,calculateWindSpeed); + // With wind gradient + _windSpeed = [eyePos ACE_player, true, true, true] call EFUNC(weather,calculateWindSpeed); _windSpeed = abs(cos(_playerDir - _windDir)) * _windSpeed; } else { - _windSpeed = (eyePos ACE_player) call FUNC(calculateWindSpeed); + // Without wind gradient + _windSpeed = [eyePos ACE_player, false, true, true] call EFUNC(weather,calculateWindSpeed); }; if (_windSpeed > 0.3 || {GVAR(MeasuredWindSpeed) > 0.1 && _windSpeed > 0.125}) then { diff --git a/addons/weather/XEH_preInit.sqf b/addons/weather/XEH_preInit.sqf index 0f49226432..6e6e008a67 100644 --- a/addons/weather/XEH_preInit.sqf +++ b/addons/weather/XEH_preInit.sqf @@ -5,6 +5,8 @@ ADDON = false; PREP(calculateAirDensity); PREP(calculateBarometricPressure); +PREP(calculateRoughnessLength); +PREP(calculateWindSpeed); PREP(displayWindInfo); PREP(getMapData); PREP(getWind); diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 39cf223518..18059fe9e8 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -5,8 +5,8 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"q1184", "Rocko", "esteldunedain","Ruthberg"}; + requiredAddons[] = {"ace_common", "ace_modules"}; + author[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; VERSION_CONFIG; }; }; diff --git a/addons/advanced_ballistics/functions/fnc_calculateRoughnessLength.sqf b/addons/weather/functions/fnc_calculateRoughnessLength.sqf similarity index 100% rename from addons/advanced_ballistics/functions/fnc_calculateRoughnessLength.sqf rename to addons/weather/functions/fnc_calculateRoughnessLength.sqf diff --git a/addons/weather/functions/fnc_calculateWindSpeed.sqf b/addons/weather/functions/fnc_calculateWindSpeed.sqf new file mode 100644 index 0000000000..b5cde4e959 --- /dev/null +++ b/addons/weather/functions/fnc_calculateWindSpeed.sqf @@ -0,0 +1,90 @@ +/* + * Author: Ruthberg + * + * Calculates the true wind speed at a given world position + * + * Arguments: + * 0: world position - posASL + * 1: Account for wind gradient + * 2: Account for terrain + * 3: Account for obstacles + * + * Return Value: + * 0: wind speed - m/s + * + * Public: No + */ +#include "script_component.hpp" + +private ["_windSpeed", "_windDir", "_height", "_newWindSpeed", "_windSource", "_roughnessLength"]; + +EXPLODE_4_PVT(_this,_position,_windGradientEnabled,_terrainEffectEnabled,_obstacleEffectEnabled); + +fnc_polar2vect = { + private ["_mag2D"]; + _mag2D = (_this select 0) * cos((_this select 2)); + [_mag2D * sin((_this select 1)), _mag2D * cos((_this select 1)), (_this select 0) * sin((_this select 2))]; +}; + +_windSpeed = vectorMagnitude ACE_wind; +_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); + +// Wind gradient +if (_windGradientEnabled) then { + if (_windSpeed > 0.05) then { + _height = (ASLToATL _position) select 2; + _height = 0 max _height min 20; + if (_height < 20) then { + _roughnessLength = _position call FUNC(calculateRoughnessLength); + _windSpeed = _windSpeed * abs(ln(_height / _roughnessLength) / ln(20 / _roughnessLength)); + }; + }; +}; + +// Terrain effect on wind +if (_terrainEffectEnabled) then { + if (_windSpeed > 0.05) then { + _newWindSpeed = 0; + { + _windSource = [100, _windDir + 180, _x] call fnc_polar2vect; + if (!(terrainIntersectASL [_position, _position vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 9) * _windSpeed; + }; + _windSource = [100, _windDir + 180 + _x, 0] call fnc_polar2vect; + if (!(terrainIntersectASL [_position, _position vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 9) * _windSpeed; + }; + _windSource = [100, _windDir + 180 - _x, 0] call fnc_polar2vect; + if (!(terrainIntersectASL [_position, _position vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 9) * _windSpeed; + }; + } forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + _windSpeed = _newWindSpeed; + }; +}; + +// Obstacle effect on wind +if (_obstacleEffectEnabled) then { + if (_windSpeed > 0.05) then { + _newWindSpeed = 0; + { + _windSource = [20, _windDir + 180, _x] call fnc_polar2vect; + if (!(lineIntersects [_position, _position vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 2) * _windSpeed; + }; + _windSource = [20, _windDir + 180 + _x, 0] call fnc_polar2vect; + if (!(lineIntersects [_position, _position vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 2) * _windSpeed; + }; + _windSource = [20, _windDir + 180 - _x, 0] call fnc_polar2vect; + if (!(lineIntersects [_position, _position vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 2) * _windSpeed; + }; + } forEach [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]; + _windSpeed = _newWindSpeed; + }; +}; + +_windSpeed = 0 max _windSpeed; + +_windSpeed diff --git a/addons/weather/functions/fnc_displayWindInfo.sqf b/addons/weather/functions/fnc_displayWindInfo.sqf index 7996503719..e81463f41a 100644 --- a/addons/weather/functions/fnc_displayWindInfo.sqf +++ b/addons/weather/functions/fnc_displayWindInfo.sqf @@ -38,15 +38,14 @@ GVAR(WindInfo) = true; _windIndex = 12; _windColor = [1, 1, 1, 1]; - - // Toogle behaviour depending on ace_advanced_ballistics being used or not - // @todo, check ACE_AB is actually enabled - _windSpeed = if (isClass (configFile >> "CfgPatches" >> "ACE_Advanced_Ballistics")) then { - (eyePos ACE_player) call EFUNC(advanced_ballistics,calculateWindSpeed); + _windSpeed = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + // With wind gradient + [eyePos ACE_player, true, true, true] call FUNC(calculateWindSpeed); } else { - vectorMagnitude ACE_wind; + // Without wind gradient + [eyePos ACE_player, false, true, true] call FUNC(calculateWindSpeed); }; - + if (_windSpeed > 0.2) then { _playerDir = getDir ACE_player; _windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); From 519aba57b57ce5bdcc3edbd8cd3d16d58189b820 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 11 May 2015 14:45:37 +0100 Subject: [PATCH 0189/1101] Transfered ballistics support (as discussed with glowbal) --- addons/modules/XEH_preInit.sqf | 1 - addons/modules/config.cpp | 5 +- .../functions/fnc_bi_moduleProjectile.sqf | 191 ------------------ 3 files changed, 1 insertion(+), 196 deletions(-) delete mode 100644 addons/modules/functions/fnc_bi_moduleProjectile.sqf diff --git a/addons/modules/XEH_preInit.sqf b/addons/modules/XEH_preInit.sqf index dfbbe2c2b9..7573d34352 100644 --- a/addons/modules/XEH_preInit.sqf +++ b/addons/modules/XEH_preInit.sqf @@ -3,7 +3,6 @@ ADDON = false; PREP(moduleInit); -PREP(bi_moduleProjectile); GVAR(moduleInitCollection) = []; diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index 4fc3b8b60d..c5880e7bb1 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -23,9 +23,6 @@ class CfgVehicles { init = QUOTE(_this call DFUNC(moduleInit)); }; }; - class ModuleOrdnance_F: Module_F { - function = "ace_modules_fnc_bi_moduleProjectile"; - }; }; -#include "CfgEventHandlers.hpp" +#include "CfgEventHandlers.hpp" \ No newline at end of file diff --git a/addons/modules/functions/fnc_bi_moduleProjectile.sqf b/addons/modules/functions/fnc_bi_moduleProjectile.sqf deleted file mode 100644 index 56e3eb9883..0000000000 --- a/addons/modules/functions/fnc_bi_moduleProjectile.sqf +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Author: Bohemia Interactive - * Module function for spawning projectiles - * Used by Curator artillery modules etc - * - * Arguments: - * 0: The logic object - * - * Return Value: - * nil - * - * Public: No - */ - -_fnc_scriptNameParentTemp = if !(isnil '_fnc_scriptName') then {_fnc_scriptName} else {'BIS_fnc_moduleProjectile'}; -private ['_fnc_scriptNameParent']; -_fnc_scriptNameParent = _fnc_scriptNameParentTemp; -_fnc_scriptNameParentTemp = nil; - -private ['_fnc_scriptName']; -_fnc_scriptName = 'BIS_fnc_moduleProjectile'; -scriptname _fnc_scriptName; - -private ["_logic", "_units", "_activated"]; -_logic = _this select 0; -_units = _this select 1; -_activated = _this select 2; - -if ({local _x} count (objectcurators _logic) > 0) then { - //--- Reveal the circle to curators - _logic hideobject false; - _logic setpos position _logic; -}; -if !(isserver) exitwith {}; - -if (_activated) then { - _ammo = _logic getvariable ["type",gettext (configfile >> "cfgvehicles" >> typeof _logic >> "ammo")]; - if (_ammo != "") then { - _cfgAmmo = configfile >> "cfgammo" >> _ammo; - //if !(isclass _cfgAmmo) exitwith {["CfgAmmo class '%1' not found.",_ammo] call bis_fnc_error;}; - _dirVar = _fnc_scriptname + typeof _logic; - _logic setdir (missionnamespace getvariable [_dirVar,direction _logic]); //--- Restore custom direction - _pos = getposatl _logic; - _posAmmo = +_pos; - _posAmmo set [2,0]; - _dir = direction _logic; - _simulation = tolower gettext (configfile >> "cfgammo" >> _ammo >> "simulation"); - _altitude = 0; - _velocity = []; - _attach = false; - _radio = ""; - _delay = 60; - _sound = ""; - _soundSourceClass = ""; - _hint = []; - _shakeStrength = 0; - _shakeRadius = 0; - switch (_simulation) do { - case "shotshell": { - _altitude = 1000; - _velocity = [0,0,-100]; - _radio = "SentGenIncoming"; - _sounds = if (getnumber (_cfgAmmo >> "hit") < 200) then {["mortar1","mortar2"]} else {["shell1","shell2","shell3","shell4"]}; - _sound = _sounds call bis_fnc_selectrandom; - _hint = ["Curator","PlaceOrdnance"]; - _shakeStrength = 0.01; - _shakeRadius = 300; - }; - case "shotsubmunitions": { - _posAmmo = [_posAmmo,500,_dir + 180] call bis_fnc_relpos; - _altitude = 1000 - ((getterrainheightasl _posAmmo) - (getterrainheightasl _pos)); - _posAmmo set [2,_altitude]; - _velocity = [sin _dir * 68,cos _dir * 68,-100]; - _radio = "SentGenIncoming"; - _hint = ["Curator","PlaceOrdnance"]; - _shakeStrength = 0.02; - _shakeRadius = 500; - }; - case "shotilluminating": { - _altitude = 66; - _velocity = [wind select 0,wind select 1,30]; - _sound = "SN_Flare_Fired_4"; - _soundSourceClass = "SoundFlareLoop_F"; - }; - case "shotnvgmarker"; - case "shotsmokex": { - _altitude = 0; - _velocity = [0,0,0]; - _attach = true; - }; - default {["Ammo simulation '%1' is not supported",_simulation] call bis_fnc_error;}; - }; - _fnc_playRadio = { - if (_radio != "") then { - _entities = (getposatl _logic) nearentities ["All",100]; - _sides = []; - { - if (isplayer _x) then { - _side = side group _x; - if (_side in [east,west,resistance,civilian]) then { - //--- Play radio (only if it wasn't played recently) - if (time > _x getvariable ["BIS_fnc_moduleProjectile_radio",-_delay]) then { - [[_side,_radio,"side"],"bis_fnc_sayMessage",_x] call bis_fnc_mp; - _x setvariable ["BIS_fnc_moduleProjectile_radio",time + _delay]; - }; - }; - }; - } foreach _entities; - }; - }; - if (count _hint > 0) then { - [[_hint,nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",objectcurators _logic] call bis_fnc_mp; - }; - if (count _velocity == 3) then { - _altitude = (_logic getvariable ["altitude",_altitude]) call bis_fnc_parsenumber; - _radio = _logic getvariable ["radio",_radio]; - - //--- Create projectile - _posAmmo set [2,_altitude]; - _projectile = createvehicle [_ammo,_posAmmo,[],0,"none"]; - _projectile setpos _posAmmo; - _projectile setvelocity _velocity; - if (_attach) then {_projectile attachto [_logic,[0,0,_altitude]];}; - - // This is our addition to this function - if (!isnil "ace_frag_fnc_addManualTrack") then { - [_projectile] call ace_frag_fnc_addManualTrack - }; - - //--- Play sound - if (_sound != "") then {[[_logic,_sound,"say3D"],"bis_fnc_sayMessage"] call bis_fnc_mp;}; - - //--- Create sound source - _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; - - //--- Play radio warning - [] call _fnc_playRadio; - - //--- Update - if (_attach) then { - waituntil { - _soundSource setposatl getposatl _projectile; - sleep 1; - isnull _projectile || isnull _logic - }; - } else { - waituntil { - _soundSource setposatl getposatl _projectile; - - if (getposatl _logic distance _pos > 0 || direction _logic != _dir) then { - _posNew = getposasl _logic; - _dirDiff = direction _logic - _dir; - _posNew = [_posNew,[getposasl _projectile,_pos] call bis_fnc_distance2d,direction _logic + 180] call bis_fnc_relpos; - _posNew set [2,getposasl _projectile select 2]; - _projectile setvelocity ([velocity _projectile,-_dirDiff] call bis_fnc_rotatevector2d); - _projectile setposasl _posNew; - _pos = getposatl _logic; - _dir = direction _logic; - missionnamespace setvariable [_dirVar,_dir]; - }; - sleep 0.1; - isnull _projectile || isnull _logic - }; - }; - deletevehicle _projectile; - deletevehicle _soundSource; - if (count objectcurators _logic > 0) then { - - //--- Delete curator spawned logic - if (_shakeStrength > 0) then { - if (_simulation == "shotsubmunitions") then {sleep 0.5;}; - [[_shakeStrength,0.7,[position _logic,_shakeRadius]],"bis_fnc_shakeCuratorCamera"] call bis_fnc_mp; - }; - deletevehicle _logic; - } else { - - //--- Repeat to achieve permanent effect - _repeat = _logic getvariable ["repeat",0] > 0; - if (_repeat) then { - [_logic,_units,_activated] call bis_fnc_moduleprojectile; - } else { - deletevehicle _logic; - }; - }; - } else { - deletevehicle _logic; - }; - } else { - ["Cannot create projectile, 'ammo' config attribute is missing in %1",typeof _logic] call bis_fnc_error; - }; -}; From 3118666f8093dcbe2496182777e056caaef8125e Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 11 May 2015 16:02:24 +0100 Subject: [PATCH 0190/1101] Added settings module to config Started functionality --- .../functions/fnc_readSettingFromModule.sqf | 2 +- addons/zeus/CfgFactionClasses.hpp | 6 ++ addons/zeus/CfgVehicles.hpp | 80 +++++++++++++++++++ addons/zeus/XEH_preInit.sqf | 1 + addons/zeus/config.cpp | 21 +---- .../functions/fnc_bi_moduleProjectile.sqf | 2 +- .../zeus/functions/fnc_moduleZeusSettings.sqf | 29 +++++++ 7 files changed, 121 insertions(+), 20 deletions(-) create mode 100644 addons/zeus/CfgFactionClasses.hpp create mode 100644 addons/zeus/CfgVehicles.hpp create mode 100644 addons/zeus/functions/fnc_moduleZeusSettings.sqf diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index c92bb4ab94..518df8ed43 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -24,4 +24,4 @@ if (isNil {_logic getVariable _moduleVariable}) exitWith { }; // Set the setting globally and force it -[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting); +[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting); \ No newline at end of file diff --git a/addons/zeus/CfgFactionClasses.hpp b/addons/zeus/CfgFactionClasses.hpp new file mode 100644 index 0000000000..5d4fe23018 --- /dev/null +++ b/addons/zeus/CfgFactionClasses.hpp @@ -0,0 +1,6 @@ +class CfgFactionClasses { + class NO_CATEGORY; + class ADDON: NO_CATEGORY { + displayName = "ACE Zeus"; + }; +}; \ No newline at end of file diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp new file mode 100644 index 0000000000..41289e44db --- /dev/null +++ b/addons/zeus/CfgVehicles.hpp @@ -0,0 +1,80 @@ +class CfgVehicles { + class Module_F; + class ModuleEmpty_F; + class ACE_Module; + + class GVAR(moduleZeusSettings): ACE_Module { + scope = 2; + displayName = "Zeus Settings [ACE]"; + icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + category = "ACE_zeus"; + function = QUOTE(DFUNC(moduleZeusSettings)); + functionPriority = 1; + isGlobal = 1; + isTriggerActivated = 0; + author = "SilentSpike"; + class Arguments { + class zeusAscension { + displayName = "Enable Ascension Messages"; + description = "Display a global popup message when a player is assigned as Zeus."; + typeName = "BOOL"; + defaultValue = 1; + }; + class zeusBird { + displayName = "Enable Eagle"; + description = "Spawn an eagle that follows the Zeus camera."; + typeName = "BOOL"; + defaultValue = 1; + }; + class radioOrdnance { + displayName = "Ordnance Radio Warning"; + description = "Play a radio warning when Zeus uses ordnance."; + typeName = "BOOL"; + defaultValue = 1; + }; + class revealMines { + displayName = "Reveal Mines"; + description = "Do you want to reveal mines placed by Zeus?"; + typeName = "NUMBER"; + class values { + class disable { + name = "Disabled"; + value = 0; + }; + class partial { + name = "Reveal to sides friendly with Zeus unit"; + value = 1; + }; + class full { + name = "Add map markers and reveal to sides friendly with Zeus unit"; + value = 2; + default = 1; + }; + }; + }; + class remoteWind { + displayName = "Reveal Remote Control"; + description = "Play a wind sound when Zeus remote controls a unit."; + typeName = "BOOL"; + defaultValue = 1; + }; + }; + class ModuleDescription { + description = "Provides control over various aspects of Zeus."; + sync[] = {}; + }; + }; + + class ModuleCurator_F: Module_F { + function = QUOTE(DFUNC(bi_moduleCurator)); + }; + class ModuleMine_F: ModuleEmpty_F { + function = QUOTE(DFUNC(bi_moduleMine)); + }; + class ModuleOrdnance_F: Module_F { + function = QUOTE(DFUNC(bi_moduleProjectile)); + }; + class ModuleRemoteControl_F: Module_F { + function = QUOTE(DFUNC(bi_moduleRemoteControl)); + }; +}; \ No newline at end of file diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf index 726f6923b3..e7bb1b96a5 100644 --- a/addons/zeus/XEH_preInit.sqf +++ b/addons/zeus/XEH_preInit.sqf @@ -6,5 +6,6 @@ PREP(bi_moduleCurator); PREP(bi_moduleMine); PREP(bi_moduleProjectile); PREP(bi_moduleRemoteControl); +PREP(moduleZeusSettings); ADDON = true; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 3da43d935e..e469ae7aaa 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"}; + requiredAddons[] = {"ace_common","ace_modules"}; author[] = {"SilentSpike"}; authorUrl = "https://github.com/SilentSpike"; VERSION_CONFIG; @@ -13,20 +13,5 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" - -class CfgVehicles { - class Module_F; - class ModuleEmpty_F; - class ModuleCurator_F: Module_F { - function = QUOTE(FUNC(bi_moduleCurator)); - }; - class ModuleMine_F: ModuleEmpty_F { - function = QUOTE(FUNC(bi_moduleMine)); - }; - class ModuleOrdnance_F: Module_F { - function = QUOTE(FUNC(bi_moduleProjectile)); - }; - class ModuleRemoteControl_F: Module_F { - function = QUOTE(FUNC(bi_moduleRemoteControl)); - }; -}; \ No newline at end of file +#include "CfgFactionClasses.hpp" +#include "CfgVehicles.hpp" \ No newline at end of file diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index afb3f6e4bc..fbae16e00d 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -2,7 +2,7 @@ * Author: Bohemia Interactive * Module function for spawning projectiles * Used by Curator artillery modules etc - * Edited to remove radio warning (also retains ballistics support added by ACE_Modules) + * Edited to remove radio warning and add ballistics support * * Arguments: * 0: The logic object diff --git a/addons/zeus/functions/fnc_moduleZeusSettings.sqf b/addons/zeus/functions/fnc_moduleZeusSettings.sqf new file mode 100644 index 0000000000..94dc0d966a --- /dev/null +++ b/addons/zeus/functions/fnc_moduleZeusSettings.sqf @@ -0,0 +1,29 @@ +/* + * Author: SilentSpike + * Module for adjusting various aspects of zeus + * + * Arguments: + * 0: The module logic + * 1: units + * 2: activated + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_logic", "_units", "_activated"]; +_logic = _this select 0; +_units = _this select 1; +_activated = _this select 2; + +if !(_activated) exitWith {}; + +[_logic, QGVAR(settingAscension), "zeusAscension"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(settingBird), "zeusBird"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(settingOrdnance), "radioOrdnance"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(settingMines), "revealMines"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(settingWind), "remoteWind"] call EFUNC(common,readSettingFromModule); \ No newline at end of file From 755581be4084f8393b49bbf8343f09fea493afa0 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 11 May 2015 16:23:46 +0100 Subject: [PATCH 0191/1101] Changed BI functions to check for settings --- .../zeus/functions/fnc_bi_moduleCurator.sqf | 55 ++++++++++--------- addons/zeus/functions/fnc_bi_moduleMine.sqf | 22 +++++--- .../functions/fnc_bi_moduleProjectile.sqf | 11 ++-- .../functions/fnc_bi_moduleRemoteControl.sqf | 9 +-- .../zeus/functions/fnc_moduleZeusSettings.sqf | 10 ++-- 5 files changed, 57 insertions(+), 50 deletions(-) diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 2203cb7f3a..333053c8eb 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -150,14 +150,15 @@ if (_activated) then { _x radiochanneladd [_player]; } foreach (_logic getvariable ["channels",[]]); - /* Removed by ACE - //--- Sent notification to all assigned players - { - if (isplayer _x) then { - [["CuratorAssign",[_name,name _player]],"bis_fnc_showNotification",_x] call bis_fnc_mp; - }; - } foreach (curatoreditableobjects _logic); - */ + // Added by ACE_zeus to toggle ascension messages + if (GETMVAR(QGVAR(zeusAscension),true)) then { + //--- Sent notification to all assigned players + { + if (isplayer _x) then { + [["CuratorAssign",[_name,name _player]],"bis_fnc_showNotification",_x] call bis_fnc_mp; + }; + } foreach (curatoreditableobjects _logic); + }; [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler; @@ -189,14 +190,15 @@ if (_activated) then { }; }; - /* Removed by ACE - //--- Create bird - _birdType = _logic getvariable ["birdType","eagle_f"]; - if (_birdType != "") then { - _bird = createvehicle [_birdType,[100,100,100],[],0,"none"]; - _logic setvariable ["bird",_bird,true]; + // Added by ACE_zeus to toggle eagle + if (GETMVAR(QGVAR(zeusBird),true)) then { + //--- Create bird + _birdType = _logic getvariable ["birdType","eagle_f"]; + if (_birdType != "") then { + _bird = createvehicle [_birdType,[100,100,100],[],0,"none"]; + _logic setvariable ["bird",_bird,true]; + }; }; - */ //--- Activated all future addons _addons = []; @@ -213,17 +215,18 @@ if (_activated) then { } foreach (synchronizedobjects _logic); _addons call bis_fnc_activateaddons; - /* Removed by ACE - //--- Locality changed - _logic addeventhandler [ - "local", - { - _logic = _this select 0; - _bird = _logic getvariable ["bird",objnull]; - _bird setowner owner _logic; - } - ]; - */ + // Added by ACE_zeus to toggle eagle + if (GETMVAR(QGVAR(zeusBird),true)) then { + //--- Locality changed + _logic addeventhandler [ + "local", + { + _logic = _this select 0; + _bird = _logic getvariable ["bird",objnull]; + _bird setowner owner _logic; + } + ]; + }; }; //--- Player diff --git a/addons/zeus/functions/fnc_bi_moduleMine.sqf b/addons/zeus/functions/fnc_bi_moduleMine.sqf index d8142c078d..df1c55dbf1 100644 --- a/addons/zeus/functions/fnc_bi_moduleMine.sqf +++ b/addons/zeus/functions/fnc_bi_moduleMine.sqf @@ -22,16 +22,20 @@ if (_activated) then { _explosive = createvehicle [_explosive,position _logic,[],0,"none"]; _explosive attachto [_logic]; - /* Removed by ACE - //--- Reveal the mine to curator's side - { - _side = (getassignedcuratorunit _x) call bis_fnc_objectSide; - _side revealmine _explosive; - } foreach (objectcurators _logic); + // Added by ACE_zeus to control if mines are revealed + _revealMines = GETMVAR(QGVAR(revealMines),2); + if (_revealMines > 0) then { + //--- Reveal the mine to curator's side + { + _side = (getassignedcuratorunit _x) call bis_fnc_objectSide; + _side revealmine _explosive; + } foreach (objectcurators _logic); - //--- Mark minefields in the map - [] spawn bis_fnc_drawMinefields; - */ + if (_revealMines > 1) then { + //--- Mark minefields in the map + [] spawn bis_fnc_drawMinefields; + }; + }; //--- Show hint to curator who placed the object [[["Curator","PlaceMines"],nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",_logic] call bis_fnc_mp; diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index fbae16e00d..047f5ac5eb 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -91,7 +91,6 @@ if (_activated) then { }; default {["Ammo simulation '%1' is not supported",_simulation] call bis_fnc_error;}; }; - /* Removed by ACE _fnc_playRadio = { if (_radio != "") then { _entities = (getposatl _logic) nearentities ["All",100]; @@ -110,7 +109,6 @@ if (_activated) then { } foreach _entities; }; }; - */ if (count _hint > 0) then { [[_hint,nil,nil,nil,nil,nil,nil,true],"bis_fnc_advHint",objectcurators _logic] call bis_fnc_mp; }; @@ -136,10 +134,11 @@ if (_activated) then { //--- Create sound source _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; - /* Removed by ACE - //--- Play radio warning - [] call _fnc_playRadio; - */ + // Added by ACE_zeus to toggle ordnance radio message + if (GETMVAR(QGVAR(radioOrdnance),true)) then { + //--- Play radio warning + [] call _fnc_playRadio; + }; //--- Update if (_attach) then { diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf index bf73a8863e..e57ee98b5c 100644 --- a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf +++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf @@ -45,10 +45,11 @@ if (_activated && local _logic && !isnull curatorcamera) then { bis_fnc_moduleRemoteControl_unit = _unit; _unit setvariable ["bis_fnc_moduleRemoteControl_owner",player,true]; - /* Removed by ACE - //--- Play wind cue to all players - [format ["wind%1",ceil random 5],"bis_fnc_playsound"] call bis_fnc_mp; - */ + // Added by ACE_zeus to toggle remote control wind sound + if (GETMVAR(QGVAR(remoteWind),true)) then { + //--- Play wind cue to all players + [format ["wind%1",ceil random 5],"bis_fnc_playsound"] call bis_fnc_mp; + }; _blur = ppeffectcreate ["RadialBlur",144]; _blur ppeffectenable true; diff --git a/addons/zeus/functions/fnc_moduleZeusSettings.sqf b/addons/zeus/functions/fnc_moduleZeusSettings.sqf index 94dc0d966a..5963d7216c 100644 --- a/addons/zeus/functions/fnc_moduleZeusSettings.sqf +++ b/addons/zeus/functions/fnc_moduleZeusSettings.sqf @@ -22,8 +22,8 @@ _activated = _this select 2; if !(_activated) exitWith {}; -[_logic, QGVAR(settingAscension), "zeusAscension"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(settingBird), "zeusBird"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(settingOrdnance), "radioOrdnance"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(settingMines), "revealMines"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(settingWind), "remoteWind"] call EFUNC(common,readSettingFromModule); \ No newline at end of file +[_logic, QGVAR(zeusAscension), "zeusAscension"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(zeusBird), "zeusBird"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(radioOrdnance), "radioOrdnance"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(revealMines), "revealMines"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(remoteWind), "remoteWind"] call EFUNC(common,readSettingFromModule); \ No newline at end of file From e16ea007e401f15c18bcbbcdedd6171bd8dc3699 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 11 May 2015 16:30:46 +0100 Subject: [PATCH 0192/1101] Add ACE settings --- addons/zeus/ACE_Settings.hpp | 23 +++++++++++++++++++++++ addons/zeus/CfgVehicles.hpp | 2 +- addons/zeus/config.cpp | 3 ++- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 addons/zeus/ACE_Settings.hpp diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp new file mode 100644 index 0000000000..7221e51f34 --- /dev/null +++ b/addons/zeus/ACE_Settings.hpp @@ -0,0 +1,23 @@ +class ACE_Settings { + class GVAR(zeusAscension) { + typeName = "BOOL"; + value = 1; + }; + class GVAR(zeusBird) { + typeName = "BOOL"; + value = 1; + }; + class GVAR(radioOrdnance) { + typeName = "BOOL"; + value = 1; + }; + class GVAR(revealMines) { + typeName = "SCALAR"; + value = 2; + values[] = {"Disabled", "Partially", "Fully"}; + }; + class GVAR(remoteWind) { + typeName = "BOOL"; + value = 1; + }; +}; diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 41289e44db..8952571f2a 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { class GVAR(moduleZeusSettings): ACE_Module { scope = 2; displayName = "Zeus Settings [ACE]"; - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + //icon = QUOTE(PATHTOF(iconGoesHere)); category = "ACE_zeus"; function = QUOTE(DFUNC(moduleZeusSettings)); functionPriority = 1; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index e469ae7aaa..cea8c64f76 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -14,4 +14,5 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgFactionClasses.hpp" -#include "CfgVehicles.hpp" \ No newline at end of file +#include "CfgVehicles.hpp" +#include "ACE_Settings.hpp" \ No newline at end of file From 0b3d3b8793f7c3c9e02633e794125e1c14d19dc5 Mon Sep 17 00:00:00 2001 From: ulteq Date: Mon, 11 May 2015 17:37:08 +0200 Subject: [PATCH 0193/1101] Added missing PBOPREFIX files --- addons/advanced_ballistics/$PBOPREFIX$ | 1 + addons/atragmx/$PBOPREFIX$ | 1 + addons/kestrel4500/$PBOPREFIX$ | 1 + addons/nightvision/$PBOPREFIX$ | 1 + addons/winddeflection/$PBOPREFIX$ | 1 + 5 files changed, 5 insertions(+) create mode 100644 addons/advanced_ballistics/$PBOPREFIX$ create mode 100644 addons/atragmx/$PBOPREFIX$ create mode 100644 addons/kestrel4500/$PBOPREFIX$ create mode 100644 addons/nightvision/$PBOPREFIX$ create mode 100644 addons/winddeflection/$PBOPREFIX$ diff --git a/addons/advanced_ballistics/$PBOPREFIX$ b/addons/advanced_ballistics/$PBOPREFIX$ new file mode 100644 index 0000000000..1ab65b7c32 --- /dev/null +++ b/addons/advanced_ballistics/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\advanced_ballistics \ No newline at end of file diff --git a/addons/atragmx/$PBOPREFIX$ b/addons/atragmx/$PBOPREFIX$ new file mode 100644 index 0000000000..c42e89e22d --- /dev/null +++ b/addons/atragmx/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\atragmx \ No newline at end of file diff --git a/addons/kestrel4500/$PBOPREFIX$ b/addons/kestrel4500/$PBOPREFIX$ new file mode 100644 index 0000000000..15660502ce --- /dev/null +++ b/addons/kestrel4500/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\kestrel4500 \ No newline at end of file diff --git a/addons/nightvision/$PBOPREFIX$ b/addons/nightvision/$PBOPREFIX$ new file mode 100644 index 0000000000..4a3d560db5 --- /dev/null +++ b/addons/nightvision/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\nightvision \ No newline at end of file diff --git a/addons/winddeflection/$PBOPREFIX$ b/addons/winddeflection/$PBOPREFIX$ new file mode 100644 index 0000000000..e36be56aec --- /dev/null +++ b/addons/winddeflection/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\winddeflection \ No newline at end of file From 0bae8471c58c16f9f5e1359beb47f72316a3cce2 Mon Sep 17 00:00:00 2001 From: ulteq Date: Mon, 11 May 2015 17:43:48 +0200 Subject: [PATCH 0194/1101] Added more missing PBOPREFIX files --- optionals/compat_asdg/$PBOPREFIX$ | 1 + optionals/compat_cup/$PBOPREFIX$ | 1 + optionals/compat_hlc_ar15/$PBOPREFIX$ | 1 + optionals/compat_hlc_wp_mp5/$PBOPREFIX$ | 1 + optionals/compat_hlcmods_ak/$PBOPREFIX$ | 1 + optionals/compat_hlcmods_aug/$PBOPREFIX$ | 1 + optionals/compat_hlcmods_core/$PBOPREFIX$ | 1 + optionals/compat_hlcmods_fal/$PBOPREFIX$ | 1 + optionals/compat_hlcmods_g3/$PBOPREFIX$ | 1 + optionals/compat_hlcmods_m14/$PBOPREFIX$ | 1 + optionals/compat_hlcmods_m60e4/$PBOPREFIX$ | 1 + optionals/compat_rh_acc/$PBOPREFIX$ | 1 + optionals/compat_rh_de/$PBOPREFIX$ | 1 + optionals/compat_rh_m4/$PBOPREFIX$ | 1 + optionals/compat_rh_pdw/$PBOPREFIX$ | 1 + optionals/compat_rhs_afrf3/$PBOPREFIX$ | 1 + optionals/compat_rhs_usf3/$PBOPREFIX$ | 1 + optionals/compat_rksl_pm_ii/$PBOPREFIX$ | 1 + optionals/server/$PBOPREFIX$ | 1 + 19 files changed, 19 insertions(+) create mode 100644 optionals/compat_asdg/$PBOPREFIX$ create mode 100644 optionals/compat_cup/$PBOPREFIX$ create mode 100644 optionals/compat_hlc_ar15/$PBOPREFIX$ create mode 100644 optionals/compat_hlc_wp_mp5/$PBOPREFIX$ create mode 100644 optionals/compat_hlcmods_ak/$PBOPREFIX$ create mode 100644 optionals/compat_hlcmods_aug/$PBOPREFIX$ create mode 100644 optionals/compat_hlcmods_core/$PBOPREFIX$ create mode 100644 optionals/compat_hlcmods_fal/$PBOPREFIX$ create mode 100644 optionals/compat_hlcmods_g3/$PBOPREFIX$ create mode 100644 optionals/compat_hlcmods_m14/$PBOPREFIX$ create mode 100644 optionals/compat_hlcmods_m60e4/$PBOPREFIX$ create mode 100644 optionals/compat_rh_acc/$PBOPREFIX$ create mode 100644 optionals/compat_rh_de/$PBOPREFIX$ create mode 100644 optionals/compat_rh_m4/$PBOPREFIX$ create mode 100644 optionals/compat_rh_pdw/$PBOPREFIX$ create mode 100644 optionals/compat_rhs_afrf3/$PBOPREFIX$ create mode 100644 optionals/compat_rhs_usf3/$PBOPREFIX$ create mode 100644 optionals/compat_rksl_pm_ii/$PBOPREFIX$ create mode 100644 optionals/server/$PBOPREFIX$ diff --git a/optionals/compat_asdg/$PBOPREFIX$ b/optionals/compat_asdg/$PBOPREFIX$ new file mode 100644 index 0000000000..0ba5166c16 --- /dev/null +++ b/optionals/compat_asdg/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_asdg \ No newline at end of file diff --git a/optionals/compat_cup/$PBOPREFIX$ b/optionals/compat_cup/$PBOPREFIX$ new file mode 100644 index 0000000000..42044805ba --- /dev/null +++ b/optionals/compat_cup/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_cup \ No newline at end of file diff --git a/optionals/compat_hlc_ar15/$PBOPREFIX$ b/optionals/compat_hlc_ar15/$PBOPREFIX$ new file mode 100644 index 0000000000..1151a9959c --- /dev/null +++ b/optionals/compat_hlc_ar15/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlc_ar15 \ No newline at end of file diff --git a/optionals/compat_hlc_wp_mp5/$PBOPREFIX$ b/optionals/compat_hlc_wp_mp5/$PBOPREFIX$ new file mode 100644 index 0000000000..397f5e9e6b --- /dev/null +++ b/optionals/compat_hlc_wp_mp5/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlc_wp_mp5 \ No newline at end of file diff --git a/optionals/compat_hlcmods_ak/$PBOPREFIX$ b/optionals/compat_hlcmods_ak/$PBOPREFIX$ new file mode 100644 index 0000000000..d1d239c6d5 --- /dev/null +++ b/optionals/compat_hlcmods_ak/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlcmods_ak \ No newline at end of file diff --git a/optionals/compat_hlcmods_aug/$PBOPREFIX$ b/optionals/compat_hlcmods_aug/$PBOPREFIX$ new file mode 100644 index 0000000000..6b917cc98c --- /dev/null +++ b/optionals/compat_hlcmods_aug/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlcmods_aug \ No newline at end of file diff --git a/optionals/compat_hlcmods_core/$PBOPREFIX$ b/optionals/compat_hlcmods_core/$PBOPREFIX$ new file mode 100644 index 0000000000..9c9e9061e1 --- /dev/null +++ b/optionals/compat_hlcmods_core/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlcmods_core \ No newline at end of file diff --git a/optionals/compat_hlcmods_fal/$PBOPREFIX$ b/optionals/compat_hlcmods_fal/$PBOPREFIX$ new file mode 100644 index 0000000000..91bbe75e96 --- /dev/null +++ b/optionals/compat_hlcmods_fal/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlcmods_fal \ No newline at end of file diff --git a/optionals/compat_hlcmods_g3/$PBOPREFIX$ b/optionals/compat_hlcmods_g3/$PBOPREFIX$ new file mode 100644 index 0000000000..ff5b23f6ea --- /dev/null +++ b/optionals/compat_hlcmods_g3/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlcmods_g3 \ No newline at end of file diff --git a/optionals/compat_hlcmods_m14/$PBOPREFIX$ b/optionals/compat_hlcmods_m14/$PBOPREFIX$ new file mode 100644 index 0000000000..9542452ad0 --- /dev/null +++ b/optionals/compat_hlcmods_m14/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlcmods_m14 \ No newline at end of file diff --git a/optionals/compat_hlcmods_m60e4/$PBOPREFIX$ b/optionals/compat_hlcmods_m60e4/$PBOPREFIX$ new file mode 100644 index 0000000000..73c943fe8f --- /dev/null +++ b/optionals/compat_hlcmods_m60e4/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_hlcmods_m60e4 \ No newline at end of file diff --git a/optionals/compat_rh_acc/$PBOPREFIX$ b/optionals/compat_rh_acc/$PBOPREFIX$ new file mode 100644 index 0000000000..0b6e3940dd --- /dev/null +++ b/optionals/compat_rh_acc/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rh_acc \ No newline at end of file diff --git a/optionals/compat_rh_de/$PBOPREFIX$ b/optionals/compat_rh_de/$PBOPREFIX$ new file mode 100644 index 0000000000..7d6056b8b4 --- /dev/null +++ b/optionals/compat_rh_de/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rh_de \ No newline at end of file diff --git a/optionals/compat_rh_m4/$PBOPREFIX$ b/optionals/compat_rh_m4/$PBOPREFIX$ new file mode 100644 index 0000000000..a8d524952e --- /dev/null +++ b/optionals/compat_rh_m4/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rh_m4 \ No newline at end of file diff --git a/optionals/compat_rh_pdw/$PBOPREFIX$ b/optionals/compat_rh_pdw/$PBOPREFIX$ new file mode 100644 index 0000000000..24f07d7987 --- /dev/null +++ b/optionals/compat_rh_pdw/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rh_pdw \ No newline at end of file diff --git a/optionals/compat_rhs_afrf3/$PBOPREFIX$ b/optionals/compat_rhs_afrf3/$PBOPREFIX$ new file mode 100644 index 0000000000..db0e884853 --- /dev/null +++ b/optionals/compat_rhs_afrf3/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rhs_afrf3 \ No newline at end of file diff --git a/optionals/compat_rhs_usf3/$PBOPREFIX$ b/optionals/compat_rhs_usf3/$PBOPREFIX$ new file mode 100644 index 0000000000..5d837d06d7 --- /dev/null +++ b/optionals/compat_rhs_usf3/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rhs_usf3 \ No newline at end of file diff --git a/optionals/compat_rksl_pm_ii/$PBOPREFIX$ b/optionals/compat_rksl_pm_ii/$PBOPREFIX$ new file mode 100644 index 0000000000..2d73d5ce66 --- /dev/null +++ b/optionals/compat_rksl_pm_ii/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_rksl_pm_ii \ No newline at end of file diff --git a/optionals/server/$PBOPREFIX$ b/optionals/server/$PBOPREFIX$ new file mode 100644 index 0000000000..67fa39d646 --- /dev/null +++ b/optionals/server/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\server \ No newline at end of file From 695e775cd752fa795d85c7645ff33c8f322c7ad6 Mon Sep 17 00:00:00 2001 From: jaynus Date: Mon, 11 May 2015 09:01:16 -0700 Subject: [PATCH 0195/1101] Change 'ace_serverconfig' to 'ace_server' --- optionals/server/script_component.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/optionals/server/script_component.hpp b/optionals/server/script_component.hpp index f044c9601a..a17615ebbc 100644 --- a/optionals/server/script_component.hpp +++ b/optionals/server/script_component.hpp @@ -1,12 +1,12 @@ #define COMPONENT serverconfig #include "\z\ace\Addons\main\script_mod.hpp" -#ifdef DEBUG_ENABLED_SERVERCONFIG +#ifdef DEBUG_ENABLED_SERVER #define DEBUG_MODE_FULL #endif -#ifdef DEBUG_SETTINGS_SERVERCONFIG - #define DEBUG_SETTINGS DEBUG_SETTINGS_SERVERCONFIG +#ifdef DEBUG_SETTINGS_SERVER + #define DEBUG_SETTINGS DEBUG_SETTINGS_SERVER #endif #include "\z\ace\Addons\main\script_macros.hpp" From 9660978b92eb035b967c087e4e86b5cf376bc887 Mon Sep 17 00:00:00 2001 From: jaynus Date: Mon, 11 May 2015 09:02:13 -0700 Subject: [PATCH 0196/1101] Changed: search for ace_server, not ace_serverconfig --- addons/common/scripts/Version/checkVersionNumber.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/scripts/Version/checkVersionNumber.sqf b/addons/common/scripts/Version/checkVersionNumber.sqf index 1bc002153c..74f130596a 100644 --- a/addons/common/scripts/Version/checkVersionNumber.sqf +++ b/addons/common/scripts/Version/checkVersionNumber.sqf @@ -47,7 +47,7 @@ if (!isServer) then { _index = _files find _x; if (_index == -1) then { - if (_x != "ace_serverconfig") then {_missingAddons pushBack _x;}; + if (_x != "ace_server") then {_missingAddons pushBack _x;}; } else { _clientVersion = _versions select _index; From 192a02ce563d897280c8b4941ac0d37636346c8d Mon Sep 17 00:00:00 2001 From: jaynus Date: Mon, 11 May 2015 09:03:09 -0700 Subject: [PATCH 0197/1101] No really, change it. --- optionals/server/script_component.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optionals/server/script_component.hpp b/optionals/server/script_component.hpp index a17615ebbc..18afd814f7 100644 --- a/optionals/server/script_component.hpp +++ b/optionals/server/script_component.hpp @@ -1,4 +1,4 @@ -#define COMPONENT serverconfig +#define COMPONENT server #include "\z\ace\Addons\main\script_mod.hpp" #ifdef DEBUG_ENABLED_SERVER From b09ebc9c795704eb0d3c4d10dc6f1442ab574b3d Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 11 May 2015 17:08:25 +0100 Subject: [PATCH 0198/1101] QGVAR was meant to be GVAR Improved module text Forgot about script_component --- addons/zeus/ACE_Settings.hpp | 8 +++---- addons/zeus/CfgVehicles.hpp | 24 +++++++++---------- .../zeus/functions/fnc_bi_moduleCurator.sqf | 8 ++++--- addons/zeus/functions/fnc_bi_moduleMine.sqf | 4 +++- .../functions/fnc_bi_moduleProjectile.sqf | 4 +++- .../functions/fnc_bi_moduleRemoteControl.sqf | 4 +++- 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp index 7221e51f34..179a211664 100644 --- a/addons/zeus/ACE_Settings.hpp +++ b/addons/zeus/ACE_Settings.hpp @@ -7,6 +7,10 @@ class ACE_Settings { typeName = "BOOL"; value = 1; }; + class GVAR(remoteWind) { + typeName = "BOOL"; + value = 1; + }; class GVAR(radioOrdnance) { typeName = "BOOL"; value = 1; @@ -16,8 +20,4 @@ class ACE_Settings { value = 2; values[] = {"Disabled", "Partially", "Fully"}; }; - class GVAR(remoteWind) { - typeName = "BOOL"; - value = 1; - }; }; diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 8952571f2a..53c859309a 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -15,17 +15,23 @@ class CfgVehicles { author = "SilentSpike"; class Arguments { class zeusAscension { - displayName = "Enable Ascension Messages"; - description = "Display a global popup message when a player is assigned as Zeus."; + displayName = "Ascension Messages"; + description = "Display global popup messages when a player is assigned as Zeus."; typeName = "BOOL"; defaultValue = 1; }; class zeusBird { - displayName = "Enable Eagle"; + displayName = "Zeus Eagle"; description = "Spawn an eagle that follows the Zeus camera."; typeName = "BOOL"; defaultValue = 1; }; + class remoteWind { + displayName = "Wind Sounds"; + description = "Play wind sounds when Zeus remote controls a unit."; + typeName = "BOOL"; + defaultValue = 1; + }; class radioOrdnance { displayName = "Ordnance Radio Warning"; description = "Play a radio warning when Zeus uses ordnance."; @@ -34,7 +40,7 @@ class CfgVehicles { }; class revealMines { displayName = "Reveal Mines"; - description = "Do you want to reveal mines placed by Zeus?"; + description = "Reveal mines to allies and/or place map markers."; typeName = "NUMBER"; class values { class disable { @@ -42,22 +48,16 @@ class CfgVehicles { value = 0; }; class partial { - name = "Reveal to sides friendly with Zeus unit"; + name = "Reveal to Allies"; value = 1; }; class full { - name = "Add map markers and reveal to sides friendly with Zeus unit"; + name = "Allies + Map Markers"; value = 2; default = 1; }; }; }; - class remoteWind { - displayName = "Reveal Remote Control"; - description = "Play a wind sound when Zeus remote controls a unit."; - typeName = "BOOL"; - defaultValue = 1; - }; }; class ModuleDescription { description = "Provides control over various aspects of Zeus."; diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 333053c8eb..92375d3114 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -12,6 +12,8 @@ * Public: No */ +#include "script_component.hpp" + _logic = _this select 0; _units = _this select 1; _activated = _this select 2; @@ -151,7 +153,7 @@ if (_activated) then { } foreach (_logic getvariable ["channels",[]]); // Added by ACE_zeus to toggle ascension messages - if (GETMVAR(QGVAR(zeusAscension),true)) then { + if (GETMVAR(GVAR(zeusAscension),true)) then { //--- Sent notification to all assigned players { if (isplayer _x) then { @@ -191,7 +193,7 @@ if (_activated) then { }; // Added by ACE_zeus to toggle eagle - if (GETMVAR(QGVAR(zeusBird),true)) then { + if (GETMVAR(GVAR(zeusBird),true)) then { //--- Create bird _birdType = _logic getvariable ["birdType","eagle_f"]; if (_birdType != "") then { @@ -216,7 +218,7 @@ if (_activated) then { _addons call bis_fnc_activateaddons; // Added by ACE_zeus to toggle eagle - if (GETMVAR(QGVAR(zeusBird),true)) then { + if (GETMVAR(GVAR(zeusBird),true)) then { //--- Locality changed _logic addeventhandler [ "local", diff --git a/addons/zeus/functions/fnc_bi_moduleMine.sqf b/addons/zeus/functions/fnc_bi_moduleMine.sqf index df1c55dbf1..73395f48c2 100644 --- a/addons/zeus/functions/fnc_bi_moduleMine.sqf +++ b/addons/zeus/functions/fnc_bi_moduleMine.sqf @@ -12,6 +12,8 @@ * Public: No */ +#include "script_component.hpp" + _logic = _this select 0; _units = _this select 1; _activated = _this select 2; @@ -23,7 +25,7 @@ if (_activated) then { _explosive attachto [_logic]; // Added by ACE_zeus to control if mines are revealed - _revealMines = GETMVAR(QGVAR(revealMines),2); + _revealMines = GETMVAR(GVAR(revealMines),2); if (_revealMines > 0) then { //--- Reveal the mine to curator's side { diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index 047f5ac5eb..29a329ade5 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -13,6 +13,8 @@ * Public: No */ +#include "script_component.hpp" + _fnc_scriptNameParentTemp = if !(isnil '_fnc_scriptName') then {_fnc_scriptName} else {'BIS_fnc_moduleProjectile'}; private ['_fnc_scriptNameParent']; _fnc_scriptNameParent = _fnc_scriptNameParentTemp; @@ -135,7 +137,7 @@ if (_activated) then { _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; // Added by ACE_zeus to toggle ordnance radio message - if (GETMVAR(QGVAR(radioOrdnance),true)) then { + if (GETMVAR(GVAR(radioOrdnance),true)) then { //--- Play radio warning [] call _fnc_playRadio; }; diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf index e57ee98b5c..557d13f81f 100644 --- a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf +++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf @@ -12,6 +12,8 @@ * Public: No */ +#include "script_component.hpp" + _logic = _this select 0; _units = _this select 1; _activated = _this select 2; @@ -46,7 +48,7 @@ if (_activated && local _logic && !isnull curatorcamera) then { _unit setvariable ["bis_fnc_moduleRemoteControl_owner",player,true]; // Added by ACE_zeus to toggle remote control wind sound - if (GETMVAR(QGVAR(remoteWind),true)) then { + if (GETMVAR(GVAR(remoteWind),true)) then { //--- Play wind cue to all players [format ["wind%1",ceil random 5],"bis_fnc_playsound"] call bis_fnc_mp; }; From a7a76d69ae0eeb1c2b82a44d0419a6b4fe205ac9 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Mon, 11 May 2015 09:48:47 -0700 Subject: [PATCH 0199/1101] Read ACE VERSION from main/script_mod.hpp #1105 --- tools/make.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/tools/make.py b/tools/make.py index e45c029ccc..09b5b4671d 100644 --- a/tools/make.py +++ b/tools/make.py @@ -55,7 +55,7 @@ if sys.platform == "win32": import winreg ######## GLOBALS ######### -ACE_VERSION = "3.0.0.3" +ACE_VERSION = "3.0.0" work_drive = "" module_root = "" make_root = "" @@ -494,7 +494,35 @@ def addon_restore(modulePath): def get_ace_version(): global ACE_VERSION + versionStamp = ACE_VERSION #do the magic based on https://github.com/acemod/ACE3/issues/806#issuecomment-95639048 + + try: + scriptModPath = os.path.join(work_drive, prefix, "main\script_mod.hpp") + + if os.path.isfile(scriptModPath): + f = open(scriptModPath, "r") + hpptext = f.read() + f.close() + + if hpptext: + majorText = re.search(r"#define MAJOR (.*\b)", hpptext).group(1) + minorText = re.search(r"#define MINOR (.*\b)", hpptext).group(1) + patchlvlText = re.search(r"#define PATCHLVL (.*\b)", hpptext).group(1) + buildText = re.search(r"#define BUILD (.*\b)", hpptext).group(1) + + if majorText: + versionStamp = "{major}.{minor}.{patchlvl}.{build}".format(major=majorText,minor=minorText,patchlvl=patchlvlText,build=buildText) + + else: + print_error("A Critical file seems to be missing or inaccessible: {}".format(scriptModPath)) + return 0 + + except Exception as e: + print_error("Get_Ace_Version error: {}".format(e)) + + print_yellow("ACE VERSION set to {}".format(versionStamp)) + ACE_VERSION = versionStamp return ACE_VERSION @@ -569,6 +597,7 @@ def version_stamp_pboprefix(module,commitID): return False return True + ############################################################################### @@ -743,11 +772,10 @@ See the make.cfg file for additional build options. module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons")) optionals_root = os.path.join(module_root_parent, "optionals") extensions_root = os.path.join(module_root_parent, "extensions") - print_green ("module_root: {}".format(module_root)) - commit_id = get_commit_ID() key_name = versionStamp = get_private_keyname(commit_id) + print_green ("module_root: {}".format(module_root)) if (os.path.isdir(module_root)): os.chdir(module_root) From c0e2af2e6634430af3ed4ce19359942f13dc2112 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 11 May 2015 18:50:04 +0200 Subject: [PATCH 0200/1101] quotes in config arrays --- addons/thermals/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/thermals/config.cpp b/addons/thermals/config.cpp index 252a440535..07d19d1b50 100644 --- a/addons/thermals/config.cpp +++ b/addons/thermals/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {ace_common}; + requiredAddons[] = {"ace_common"}; author[] = {"[TF]Nkey"}; authorUrl = "https://github.com/michail-nikolaev/"; VERSION_CONFIG; From 5092d586fd6191389fa7fa646ac4a712e2dcf93c Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Mon, 11 May 2015 10:06:40 -0700 Subject: [PATCH 0201/1101] Exception handling and clean up. #1105 --- addons/config.cpp | 167 ---------------------------------------------- tools/make.py | 9 ++- 2 files changed, 7 insertions(+), 169 deletions(-) delete mode 100644 addons/config.cpp diff --git a/addons/config.cpp b/addons/config.cpp deleted file mode 100644 index 27647f8d00..0000000000 --- a/addons/config.cpp +++ /dev/null @@ -1,167 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; - weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_main"}; - author[] = {"KoffeinFlummi"}; - authorUrl = "https://github.com/KoffeinFlummi/"; - VERSION_CONFIG; - }; -}; - -#include "CfgEventHandlers.hpp" - -#include "CfgSounds.hpp" -#include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" -#include "CfgMagazines.hpp" - -#include "CfgActions.hpp" -#include "CfgMoves.hpp" -#include "CfgVoice.hpp" -#include "CfgUnitInsignia.hpp" - -class ACE_Rsc_Display_Base { - idd = -1; - type = 0; - style = 48; - name = ""; - duration = 999999; - fadeIn = 0; - fadeOut = 0; - font = "TahomaB"; - size = 1; - colorBackground[] = {1, 1, 1, 0}; - colorText[] = {1, 1, 1, 1}; -}; - -class ACE_Rsc_Control_Base { - idc = 1; - type = 0; - style = 48; - access = 0; - lineSpacing = 0; - moving = 1; - text = ""; - size = 1; - sizeEx = 0; - font = "TahomaB"; - colorBackground[] = {1, 1, 1, 0}; - colorText[] = {1, 1, 1, 1}; - x = 0; - y = 0; - w = 0; - 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(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[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; - }; - class GVAR(SettingProgressBarLocation) { - value = 0; - typeName = "SCALAR"; - force = 0; - isClientSettable = 1; - displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; - description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; - values[] = {"Top", "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 "define.hpp" -#include -#include -#include - -class CfgUIGrids { - class IGUI { - class Presets { - class Arma3 { - class Variables { - grid_ACE_displayText[] = {{((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)),safeZoneY + 0.175 * safezoneH, (10 *(((safezoneW / safezoneH) min 1.2) / 40)), (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))}, "(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"}; - }; - }; - }; - - class Variables { - class grid_ACE_displayText { - displayName = "ACE Hint"; - description = "Textual in game feedback to the player."; - preview = "\a3\Ui_f\data\GUI\Cfg\UIGrids\grid_hint_ca.paa"; - saveToProfile[] = {0,1}; - }; - }; - }; -}; - -/* -// check dll -class RscStandardDisplay; -class RscDisplayMain: RscStandardDisplay { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscDisplayMain"",'GUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_5('header','tail',{0},{},_this select 0)] call COMPILE_FILE(functions\fnc_errorMessage)); -}; -*/ - -class ACE_Extensions { - extensions[] = {}; -}; diff --git a/tools/make.py b/tools/make.py index 09b5b4671d..1138f782b2 100644 --- a/tools/make.py +++ b/tools/make.py @@ -516,11 +516,16 @@ def get_ace_version(): else: print_error("A Critical file seems to be missing or inaccessible: {}".format(scriptModPath)) - return 0 + raise FileNotFoundError("File Not Found: {}".format(scriptModPath)) except Exception as e: print_error("Get_Ace_Version error: {}".format(e)) - + print_error("Check the integrity of the file: {}".format(scriptModPath)) + versionStamp = ACE_VERSION + print_error("Resetting to the default version stamp: {}".format(versionStamp)) + input("Press Enter to continue...") + print("Resuming build...") + print_yellow("ACE VERSION set to {}".format(versionStamp)) ACE_VERSION = versionStamp return ACE_VERSION From 7cf52d13ca80c673fde07321d91d92f033ee9096 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 11 May 2015 18:06:01 +0100 Subject: [PATCH 0202/1101] Disable zeus settings by default Fixed newline characters --- addons/common/functions/fnc_readSettingFromModule.sqf | 2 +- addons/zeus/ACE_Settings.hpp | 10 +++++----- addons/zeus/CfgFactionClasses.hpp | 2 +- addons/zeus/CfgVehicles.hpp | 2 +- addons/zeus/config.cpp | 2 +- addons/zeus/functions/fnc_bi_moduleCurator.sqf | 8 ++++---- addons/zeus/functions/fnc_bi_moduleMine.sqf | 7 +++---- addons/zeus/functions/fnc_bi_moduleProjectile.sqf | 4 ++-- addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf | 4 ++-- addons/zeus/functions/fnc_moduleZeusSettings.sqf | 2 +- addons/zeus/script_component.hpp | 2 +- 11 files changed, 22 insertions(+), 23 deletions(-) diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index 518df8ed43..c92bb4ab94 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -24,4 +24,4 @@ if (isNil {_logic getVariable _moduleVariable}) exitWith { }; // Set the setting globally and force it -[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting); \ No newline at end of file +[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting); diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp index 179a211664..536790ba26 100644 --- a/addons/zeus/ACE_Settings.hpp +++ b/addons/zeus/ACE_Settings.hpp @@ -1,23 +1,23 @@ class ACE_Settings { class GVAR(zeusAscension) { typeName = "BOOL"; - value = 1; + value = 0; }; class GVAR(zeusBird) { typeName = "BOOL"; - value = 1; + value = 0; }; class GVAR(remoteWind) { typeName = "BOOL"; - value = 1; + value = 0; }; class GVAR(radioOrdnance) { typeName = "BOOL"; - value = 1; + value = 0; }; class GVAR(revealMines) { typeName = "SCALAR"; - value = 2; + value = 0; values[] = {"Disabled", "Partially", "Fully"}; }; }; diff --git a/addons/zeus/CfgFactionClasses.hpp b/addons/zeus/CfgFactionClasses.hpp index 5d4fe23018..bf34546727 100644 --- a/addons/zeus/CfgFactionClasses.hpp +++ b/addons/zeus/CfgFactionClasses.hpp @@ -3,4 +3,4 @@ class CfgFactionClasses { class ADDON: NO_CATEGORY { displayName = "ACE Zeus"; }; -}; \ No newline at end of file +}; diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 53c859309a..a7671232a7 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -77,4 +77,4 @@ class CfgVehicles { class ModuleRemoteControl_F: Module_F { function = QUOTE(DFUNC(bi_moduleRemoteControl)); }; -}; \ No newline at end of file +}; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index cea8c64f76..4bdc1cd5e1 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -15,4 +15,4 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgFactionClasses.hpp" #include "CfgVehicles.hpp" -#include "ACE_Settings.hpp" \ No newline at end of file +#include "ACE_Settings.hpp" diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 92375d3114..a2ccf537bc 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -153,7 +153,7 @@ if (_activated) then { } foreach (_logic getvariable ["channels",[]]); // Added by ACE_zeus to toggle ascension messages - if (GETMVAR(GVAR(zeusAscension),true)) then { + if GVAR(zeusAscension) then { //--- Sent notification to all assigned players { if (isplayer _x) then { @@ -193,7 +193,7 @@ if (_activated) then { }; // Added by ACE_zeus to toggle eagle - if (GETMVAR(GVAR(zeusBird),true)) then { + if GVAR(zeusBird) then { //--- Create bird _birdType = _logic getvariable ["birdType","eagle_f"]; if (_birdType != "") then { @@ -218,7 +218,7 @@ if (_activated) then { _addons call bis_fnc_activateaddons; // Added by ACE_zeus to toggle eagle - if (GETMVAR(GVAR(zeusBird),true)) then { + if GVAR(zeusBird) then { //--- Locality changed _logic addeventhandler [ "local", @@ -330,4 +330,4 @@ if (_activated) then { player call bis_fnc_curatorRespawn; }; -}; \ No newline at end of file +}; diff --git a/addons/zeus/functions/fnc_bi_moduleMine.sqf b/addons/zeus/functions/fnc_bi_moduleMine.sqf index 73395f48c2..b5063c7fed 100644 --- a/addons/zeus/functions/fnc_bi_moduleMine.sqf +++ b/addons/zeus/functions/fnc_bi_moduleMine.sqf @@ -25,15 +25,14 @@ if (_activated) then { _explosive attachto [_logic]; // Added by ACE_zeus to control if mines are revealed - _revealMines = GETMVAR(GVAR(revealMines),2); - if (_revealMines > 0) then { + if (GVAR(revealMines) > 0) then { //--- Reveal the mine to curator's side { _side = (getassignedcuratorunit _x) call bis_fnc_objectSide; _side revealmine _explosive; } foreach (objectcurators _logic); - if (_revealMines > 1) then { + if (GVAR(revealMines) > 1) then { //--- Mark minefields in the map [] spawn bis_fnc_drawMinefields; }; @@ -46,4 +45,4 @@ if (_activated) then { if (isnull _logic) then {deletevehicle _explosive;} else {_explosive setdamage 1;}; deletevehicle _logic; }; -}; \ No newline at end of file +}; diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index 29a329ade5..c4d0277388 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -137,7 +137,7 @@ if (_activated) then { _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; // Added by ACE_zeus to toggle ordnance radio message - if (GETMVAR(GVAR(radioOrdnance),true)) then { + if GVAR(radioOrdnance) then { //--- Play radio warning [] call _fnc_playRadio; }; @@ -194,4 +194,4 @@ if (_activated) then { } else { ["Cannot create projectile, 'ammo' config attribute is missing in %1",typeof _logic] call bis_fnc_error; }; -}; \ No newline at end of file +}; diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf index 557d13f81f..3efbaa0775 100644 --- a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf +++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf @@ -48,7 +48,7 @@ if (_activated && local _logic && !isnull curatorcamera) then { _unit setvariable ["bis_fnc_moduleRemoteControl_owner",player,true]; // Added by ACE_zeus to toggle remote control wind sound - if (GETMVAR(GVAR(remoteWind),true)) then { + if GVAR(remoteWind) then { //--- Play wind cue to all players [format ["wind%1",ceil random 5],"bis_fnc_playsound"] call bis_fnc_mp; }; @@ -168,4 +168,4 @@ if (_activated && local _logic && !isnull curatorcamera) then { [objnull,_error] call bis_fnc_showCuratorFeedbackMessage; }; deletevehicle _logic; -}; \ No newline at end of file +}; diff --git a/addons/zeus/functions/fnc_moduleZeusSettings.sqf b/addons/zeus/functions/fnc_moduleZeusSettings.sqf index 5963d7216c..3a582f7196 100644 --- a/addons/zeus/functions/fnc_moduleZeusSettings.sqf +++ b/addons/zeus/functions/fnc_moduleZeusSettings.sqf @@ -26,4 +26,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(zeusBird), "zeusBird"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(radioOrdnance), "radioOrdnance"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(revealMines), "revealMines"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(remoteWind), "remoteWind"] call EFUNC(common,readSettingFromModule); \ No newline at end of file +[_logic, QGVAR(remoteWind), "remoteWind"] call EFUNC(common,readSettingFromModule); diff --git a/addons/zeus/script_component.hpp b/addons/zeus/script_component.hpp index d5a4ec1bcc..7211b28f7d 100644 --- a/addons/zeus/script_component.hpp +++ b/addons/zeus/script_component.hpp @@ -9,4 +9,4 @@ #define DEBUG_SETTINGS DEBUG_SETTINGS_ZEUS #endif -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file +#include "\z\ace\addons\main\script_macros.hpp" From 59d6e84fc0f254f768c10bda46f738c619c9594f Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Mon, 11 May 2015 10:43:05 -0700 Subject: [PATCH 0203/1101] Use abbreviated public key to minimize a BI bug. REFERENCE: http://feedback.arma3.com/view.php?id=22133 Always copy public key in case it is missing from the release folder. #1105 --- tools/make.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/tools/make.py b/tools/make.py index 1138f782b2..317e80db59 100644 --- a/tools/make.py +++ b/tools/make.py @@ -897,23 +897,27 @@ See the make.cfg file for additional build options. else: print_error("Failed to create key!") - try: - print("Copying public key to release directory.") - try: - os.makedirs(os.path.join(module_root, release_dir, project, "keys")) - except: - pass - - shutil.copyfile(os.path.join(private_key_path, key_name + ".bikey"), os.path.join(module_root, release_dir, project, "keys", key_name + ".bikey")) - - except: - print_error("Could not copy key to release directory.") - raise else: print_green("\nNOTE: Using key {}".format(os.path.join(private_key_path, key_name + ".biprivatekey"))) + try: + print("Copying public key to release directory.") + + try: + os.makedirs(os.path.join(module_root, release_dir, project, "keys")) + except: + pass + + # Use biKeyNameAbrev to attempt to minimize problems from this BI Bug REFERENCE: http://feedback.arma3.com/view.php?id=22133 + biKeyNameAbrev = key_name.split("-")[0] + shutil.copyfile(os.path.join(private_key_path, key_name + ".bikey"), os.path.join(module_root, release_dir, project, "keys", biKeyNameAbrev + ".bikey")) + + except: + print_error("Could not copy key to release directory.") + raise + key = os.path.join(private_key_path, key_name + ".biprivatekey") # Remove any obsolete files. From f6cdad62cad352491c9d5e4a6b6b53a5e75cc09e Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 11 May 2015 19:04:04 +0100 Subject: [PATCH 0204/1101] Added parenthesis --- addons/zeus/functions/fnc_bi_moduleCurator.sqf | 6 +++--- addons/zeus/functions/fnc_bi_moduleProjectile.sqf | 2 +- addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index a2ccf537bc..9ae35a4ce4 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -153,7 +153,7 @@ if (_activated) then { } foreach (_logic getvariable ["channels",[]]); // Added by ACE_zeus to toggle ascension messages - if GVAR(zeusAscension) then { + if (GVAR(zeusAscension)) then { //--- Sent notification to all assigned players { if (isplayer _x) then { @@ -193,7 +193,7 @@ if (_activated) then { }; // Added by ACE_zeus to toggle eagle - if GVAR(zeusBird) then { + if (GVAR(zeusBird)) then { //--- Create bird _birdType = _logic getvariable ["birdType","eagle_f"]; if (_birdType != "") then { @@ -218,7 +218,7 @@ if (_activated) then { _addons call bis_fnc_activateaddons; // Added by ACE_zeus to toggle eagle - if GVAR(zeusBird) then { + if (GVAR(zeusBird)) then { //--- Locality changed _logic addeventhandler [ "local", diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index c4d0277388..6e2ee35387 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -137,7 +137,7 @@ if (_activated) then { _soundSource = if (_soundSourceClass != "") then {createSoundSource [_soundSourceClass,_pos,[],0]} else {objnull}; // Added by ACE_zeus to toggle ordnance radio message - if GVAR(radioOrdnance) then { + if (GVAR(radioOrdnance)) then { //--- Play radio warning [] call _fnc_playRadio; }; diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf index 3efbaa0775..57b325b585 100644 --- a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf +++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf @@ -48,7 +48,7 @@ if (_activated && local _logic && !isnull curatorcamera) then { _unit setvariable ["bis_fnc_moduleRemoteControl_owner",player,true]; // Added by ACE_zeus to toggle remote control wind sound - if GVAR(remoteWind) then { + if (GVAR(remoteWind)) then { //--- Play wind cue to all players [format ["wind%1",ceil random 5],"bis_fnc_playsound"] call bis_fnc_mp; }; From 50abf643593f0f9bd4d91d91ab5bc03ff86f7e8a Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Mon, 11 May 2015 12:53:49 -0700 Subject: [PATCH 0205/1101] Do not execute CfgConvert if $NOBIN$ is found. #1107 --- tools/make.py | 85 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/tools/make.py b/tools/make.py index 317e80db59..ce92e72ea7 100644 --- a/tools/make.py +++ b/tools/make.py @@ -56,6 +56,7 @@ if sys.platform == "win32": ######## GLOBALS ######### ACE_VERSION = "3.0.0" +arma3tools_path = "" work_drive = "" module_root = "" make_root = "" @@ -470,6 +471,55 @@ def check_for_obsolete_pbos(addonspath, file): return False +def backup_config(module): + #PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up: + global work_drive + global prefix + + try: + configpath = os.path.join(work_drive, prefix, module, "$PBOPREFIX$") + if os.path.isfile(configpath): + shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) + else: + print_error("$PBOPREFIX$ Does not exist for module: {}.".format(module)) + + except: + print_error("Error creating backup of $PBOPREFIX$ for module {}.".format(module)) + + try: + shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup")) + os.chdir(work_drive) + except: + print_error("Error creating backup of config.cpp for module {}.".format(module)) + + return True + +def convert_config(module): + try: + global work_drive + global prefix + global arma3tools_path + + cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")] + ret = subprocess.call(cmd) + if ret != 0: + print_error("CfgConvert -bin return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) + os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) + shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + + cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")] + ret = subprocess.call(cmd) + if ret != 0: + print_error("CfgConvert -txt return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) + os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) + shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + except Exception as e: + print_error("Exception from convert_config=>CfgConvert: {}".format(e)) + return False + + return True + + def addon_restore(modulePath): #PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp #print_green("\Pabst! (restoring): {}".format(os.path.join(modulePath, "config.cpp"))) @@ -611,6 +661,7 @@ def main(argv): print_blue("\nmake.py for Arma, modified for Advanced Combat Environment v{}".format(__version__)) global ACE_VERSION + global arma3tools_path global work_drive global module_root global make_root @@ -1031,39 +1082,15 @@ See the make.cfg file for additional build options. build_successful = False if build_tool == "pboproject": try: - #PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up: - try: - configpath = os.path.join(work_drive, prefix, module, "$PBOPREFIX$") - if os.path.isfile(configpath): - shutil.copyfile(configpath, os.path.join(work_drive, prefix, module, "$PBOPREFIX$.backup")) - else: - print_error("$PBOPREFIX$ Does not exist for module: {}.".format(module)) - - except: - print_error("Error creating backup of $PBOPREFIX$ for module {}.") - - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup")) - - os.chdir("P:\\") - - cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")] - ret = subprocess.call(cmd) - if ret != 0: - print_error("CfgConvert -bin return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) - - cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")] - ret = subprocess.call(cmd) - if ret != 0: - print_error("CfgConvert -txt return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) + nobinFilePath = os.path.join(work_drive, prefix, module, "$NOBIN$") + if (not os.path.isfile(nobinFilePath)): + backup_config(module) + convert_config(module) version_stamp_pboprefix(module,commit_id) - if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")): + if os.path.isfile(nobinFilePath): print_green("$NOBIN$ Found. Proceeding with non-binarizing!") cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"addons")] From 991ecdfe010ffd366839c5d088e668c2a8ef30ae Mon Sep 17 00:00:00 2001 From: jaynus Date: Mon, 11 May 2015 13:37:50 -0700 Subject: [PATCH 0206/1101] Removed: Debug sidechat in laser seeker code. --- .../functions/fnc_seekerFindLaserSpot.sqf | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf index 77713eb591..346aec837e 100644 --- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf +++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf @@ -1,32 +1,32 @@ -/* - * Author: Nou - * Turn a laser designator on. - * - * Arguments: - * 0: Position of seeker (ASL) - * 1: Direction vector (will be normalized) - * 2: Seeker FOV in degrees - * 3: Seeker wavelength sensitivity range, [1550,1550] is common eye safe. - * 4: Seeker laser code. - * - * Return value: - * Array, [Strongest compatible laser spot ASL pos, owner object] Nil array values if nothing found. - */ - -#include "script_component.hpp" - -private ["_pos", "_seekerWavelengths", "_seekerCode", "_spots", "_buckets", "_excludes", "_bucketIndex", "_finalPos", "_owner", "_obj", "_x", "_method"]; -private ["_emitterWavelength", "_laserCode", "_divergence", "_laser", "_laserPos", "_laserDir", "_res", "_bucketPos", "_bucketList", "_c", "_forEachIndex", "_index"]; -private ["_testPos", "_finalBuckets", "_largest", "_largestIndex", "_finalBucket", "_owners", "_avgX", "_avgY", "_avgZ", "_count", "_maxOwner", "_maxOwnerIndex", "_finalOwner"]; -private["_dir", "_seekerCos", "_seekerFov", "_testDotProduct", "_testPoint", "_testPointVector"]; - -_pos = _this select 0; -_dir = vectorNormalized (_this select 1); +/* + * Author: Nou + * Turn a laser designator on. + * + * Arguments: + * 0: Position of seeker (ASL) + * 1: Direction vector (will be normalized) + * 2: Seeker FOV in degrees + * 3: Seeker wavelength sensitivity range, [1550,1550] is common eye safe. + * 4: Seeker laser code. + * + * Return value: + * Array, [Strongest compatible laser spot ASL pos, owner object] Nil array values if nothing found. + */ + +#include "script_component.hpp" + +private ["_pos", "_seekerWavelengths", "_seekerCode", "_spots", "_buckets", "_excludes", "_bucketIndex", "_finalPos", "_owner", "_obj", "_x", "_method"]; +private ["_emitterWavelength", "_laserCode", "_divergence", "_laser", "_laserPos", "_laserDir", "_res", "_bucketPos", "_bucketList", "_c", "_forEachIndex", "_index"]; +private ["_testPos", "_finalBuckets", "_largest", "_largestIndex", "_finalBucket", "_owners", "_avgX", "_avgY", "_avgZ", "_count", "_maxOwner", "_maxOwnerIndex", "_finalOwner"]; +private["_dir", "_seekerCos", "_seekerFov", "_testDotProduct", "_testPoint", "_testPointVector"]; + +_pos = _this select 0; +_dir = vectorNormalized (_this select 1); _seekerFov = _this select 2; _seekerWavelengths = _this select 3; -_seekerCode = _this select 4; - - +_seekerCode = _this select 4; + + _seekerCos = cos _seekerFov; _spots = []; @@ -47,9 +47,9 @@ _finalOwner = nil; _laser = []; if(IS_CODE(_method)) then { _laser = _x call _method; - } else { - if(IS_STRING(_method)) then { - _laser = _x call (missionNamespace getVariable [_method, {}]); + } else { + if(IS_STRING(_method)) then { + _laser = _x call (missionNamespace getVariable [_method, {}]); } else { if(IS_ARRAY(_method)) then { if(count _method == 2) then { @@ -59,18 +59,18 @@ _finalOwner = nil; _laser = [ATLtoASL (_obj modelToWorldVisual (_method select 0)), (ATLtoASL (_obj modelToWorldVisual (_method select 1))) vectorFromTo (ATLtoASL (_obj modelToWorldVisual (_method select 2)))]; }; }; - }; + }; }; }; _laserPos = _laser select 0; _laserDir = _laser select 1; _res = [_laserPos, _laserDir, _divergence] call FUNC(shootCone); - { - _testPoint = _x select 0; - _testPointVector = vectorNormalized (_testPoint vectorDiff _pos); - _testDotProduct = _dir vectorDotProduct _testPointVector; + { + _testPoint = _x select 0; + _testPointVector = vectorNormalized (_testPoint vectorDiff _pos); + _testDotProduct = _dir vectorDotProduct _testPointVector; if(_testDotProduct > _seekerCos) then { - _spots pushBack [_testPoint, _owner]; + _spots pushBack [_testPoint, _owner]; }; } forEach (_res select 2); }; @@ -128,7 +128,7 @@ if((count _spots) > 0) then { _avgY = 0; _avgZ = 0; { - player sideChat format["x: %1", _x]; + //player sideChat format["x: %1", _x]; _avgX = _avgX + ((_x select 0) select 0); _avgY = _avgY + ((_x select 0) select 1); _avgZ = _avgZ + ((_x select 0) select 2); From 8e7763af0820bf31fae7dd27d47c03f9399c1de7 Mon Sep 17 00:00:00 2001 From: jaynus Date: Mon, 11 May 2015 13:50:24 -0700 Subject: [PATCH 0207/1101] Removed: systemChat debug in captive --- addons/captives/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index f91f24025e..da2192d3d6 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -11,7 +11,7 @@ if (isServer) then { _escortedUnit = _disconnectedPlayer getVariable [QGVAR(escortedUnit), objNull]; if ((!isNull _escortedUnit) && {(attachedTo _escortedUnit) == _disconnectedPlayer}) then { detach _escortedUnit; - systemChat "debug: DC detach"; + //systemChat "debug: DC detach"; }; if (_disconnectedPlayer getVariable [QGVAR(isEscorting), false]) then { _disconnectedPlayer setVariable [QGVAR(isEscorting), false, true]; From ef836d119125b422b1951a22c2aba8c215cfceba Mon Sep 17 00:00:00 2001 From: VKing Date: Mon, 11 May 2015 23:17:17 +0200 Subject: [PATCH 0208/1101] Hacked order to fix order of comanche zoom levels --- addons/aircraft/Heli_Attack_01_base_F.hpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/addons/aircraft/Heli_Attack_01_base_F.hpp b/addons/aircraft/Heli_Attack_01_base_F.hpp index 14ca7ef7cd..3566336353 100644 --- a/addons/aircraft/Heli_Attack_01_base_F.hpp +++ b/addons/aircraft/Heli_Attack_01_base_F.hpp @@ -891,8 +891,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { class OpticsIn { - class WideUnstabalized - { + class Wide { // Wide Unstabilized opticsDisplayName = "WU"; initAngleX = 0; minAngleX = -35; @@ -910,8 +909,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F"; }; - class Wide - { + class Medium: Wide { // Wide Stabilized opticsDisplayName = "W"; initAngleX = 0; minAngleX = -35; @@ -929,8 +927,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F"; }; - class Medium: Wide - { + class Narrow: Wide { // Medium Stabilized opticsDisplayName = "M"; initFov = 0.093; minFov = 0.093; @@ -940,8 +937,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F"; }; - class Narrow: Wide - { + class Narrower: Wide { // Narrow Stabilized opticsDisplayName = "N"; initFov = 0.029; minFov = 0.029; @@ -952,8 +948,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F"; }; - class Narrower: Wide - { + class Narrowest: Wide { // Narrower Stabilized opticsDisplayName = "Z"; initFov = 0.01; minFov = 0.01; From e75c4594e61f8b5744cefed0f1020a26e6f3b641 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Mon, 11 May 2015 15:17:44 -0700 Subject: [PATCH 0209/1101] Added missing $PBOPREFIX$ for respawn --- addons/respawn/$PBOPREFIX$ | 1 + 1 file changed, 1 insertion(+) create mode 100644 addons/respawn/$PBOPREFIX$ diff --git a/addons/respawn/$PBOPREFIX$ b/addons/respawn/$PBOPREFIX$ new file mode 100644 index 0000000000..072ffe81e3 --- /dev/null +++ b/addons/respawn/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\respawn \ No newline at end of file From 7efe8ccba52551893ddb0028af8c463ed3cff232 Mon Sep 17 00:00:00 2001 From: jaynus Date: Mon, 11 May 2015 16:44:17 -0700 Subject: [PATCH 0210/1101] Added: waveHeightAt Function, refs #1024 for use. --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_waveHeightAt.sqf | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 addons/common/functions/fnc_waveHeightAt.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 5c2ad1e592..8230a4eb0b 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -183,6 +183,7 @@ PREP(unmuteUnit); PREP(useItem); PREP(useMagazine); PREP(waitAndExecute); +PREP(waveHeightAt); PREP(translateToWeaponSpace); PREP(translateToModelSpace); diff --git a/addons/common/functions/fnc_waveHeightAt.sqf b/addons/common/functions/fnc_waveHeightAt.sqf new file mode 100644 index 0000000000..fbfe5fb241 --- /dev/null +++ b/addons/common/functions/fnc_waveHeightAt.sqf @@ -0,0 +1,19 @@ +/* + * Author: jaynus + * + * Gets the wave height at a specific location. Uses a logic, so may be performance iffy + * + * Arguments: + * 0: Position ASL to get height at + * + * Return Value: + * Wave height in meters + * + */ + +if(isNil QGVAR(waveHeightLogic)) then { + GVAR(waveHeightLogic) = "Logic" createVehicleLocal [0,0,0]; +}; +GVAR(waveHeightLogic) setPosASL (_this select 0); + +(((getPosASLW GVAR(waveHeightLogic)) select 2) - ((getPosASL GVAR(waveHeightLogic)) select 2)) \ No newline at end of file From ffce1f6386b0f23cd89845d3843b7cd72fab0572 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 11 May 2015 21:49:13 -0500 Subject: [PATCH 0211/1101] Condense mDagr interactions - intergrate kestral --- .../functions/fnc_deviceKeyFindValidIndex.sqf | 31 +++++++++---- .../functions/fnc_deviceKeyRegisterNew.sqf | 2 +- addons/kestrel4500/initKeybinds.sqf | 25 +++++++--- addons/microdagr/CfgVehicles.hpp | 46 ++++++++++--------- 4 files changed, 66 insertions(+), 38 deletions(-) diff --git a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf index f9ac89a30b..a8418cd4cd 100644 --- a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf +++ b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf @@ -3,30 +3,43 @@ * Finds next valid index for the device array. * * Arguments: - * 0: Offset from currentIndex (use 1 to find next valid) + * 0: Offset from currentIndex (use 1 to find next valid after current) or a displayName string or * * Return Value: * The new index (-1 if no valid) * * Example: * [] call ace_common_fnc_deviceKeyFindValidIndex + * ["kestral4500"] call ace_common_fnc_deviceKeyFindValidIndex * * Public: No */ #include "script_component.hpp" -DEFAULT_PARAM(0,_offsetBy,0); +DEFAULT_PARAM(0,_searchOffsetOrName,0); + +private ["_validIndex", "_offsetBy", "_realIndex", "_offset"]; _validIndex = -1; -if ((count GVAR(deviceKeyHandlingArray)) > 0) then { - if (GVAR(deviceKeyCurrentIndex) == -1) then {GVAR(deviceKeyCurrentIndex) = 0;}; - for "_offset" from _offsetBy to ((count GVAR(deviceKeyHandlingArray)) - 1 + _offsetBy) do { - _realIndex = (GVAR(deviceKeyCurrentIndex) + _offset) % (count GVAR(deviceKeyHandlingArray)); - if ([] call ((GVAR(deviceKeyHandlingArray) select _realIndex) select 2)) exitWith { - _validIndex = _realIndex; + +if ((typeName _searchOffsetOrName) == "STRING") then { + { + if ((_x select 0) == _searchOffsetOrName) exitWith { + _validIndex = _forEachIndex; + }; + } forEach GVAR(deviceKeyHandlingArray); +} else { + if ((count GVAR(deviceKeyHandlingArray)) > 0) then { + _baseIndex = if (GVAR(deviceKeyCurrentIndex) == -1) then {0} else {GVAR(deviceKeyCurrentIndex) + _searchOffsetOrName}; + for "_offset" from _baseIndex to ((count GVAR(deviceKeyHandlingArray)) - 1 + _baseIndex) do { + _realIndex = _offset % (count GVAR(deviceKeyHandlingArray)); + if ([] call ((GVAR(deviceKeyHandlingArray) select _realIndex) select 2)) exitWith { + _validIndex = _realIndex; + }; }; }; }; GVAR(deviceKeyCurrentIndex) = _validIndex; -_validIndex + +GVAR(deviceKeyCurrentIndex) diff --git a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf index 6a15c3c340..88ffa84af7 100644 --- a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf +++ b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf @@ -13,7 +13,7 @@ * Nothing * * Example: - * [(localize "STR_ACE_microdagr_itemName"), QUOTE(PATHTOF(images\microDAGR_item.paa)), _conditonCode, _toggleCode, _closeCode] call ace_common_fnc_deviceKeyRegisterNew + * [(localize "STR_ACE_microdagr_itemName"), QUOTE(PATHTOF(images\microDAGR_item.paa)), _conditionCode, _toggleCode, _closeCode] call ace_common_fnc_deviceKeyRegisterNew * * Public: No */ diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index 9096b7c897..c9c8d1b69b 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -6,18 +6,31 @@ _conditonCode = { _toggleCode = { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; - if(GVAR(Kestrel4500)) exitWith { false }; // Statement - [] call FUNC(createKestrelDialog); - false + if (!GVAR(Overlay)) then { + //If no overlay, show it: + [] call FUNC(displayKestrel); + } else { + //If overlay is up, switch to dialog: + [] call FUNC(createKestrelDialog); + }; }; _closeCode = { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; - + // Statement - [] call FUNC(displayKestrel); + if (GVAR(Overlay)) then { + //If dispaly is open, close it: + GVAR(Overlay) = false; + }; + if (dialog && {!isNull (uiNamespace getVariable ["Kestrel4500_Display", displayNull])}) then { + //If dialog is open, close it: + GVAR(Kestrel4500) = false; + closeDialog 0; + }; false }; -[(localize "STR_ACE_Kestrel_Name"), QUOTE(PATHTOF(UI\Kestrel4500.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); \ No newline at end of file + +[(localize "STR_ACE_Kestrel_Name"), QUOTE(PATHTOF(UI\Kestrel4500.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index 833f7bd2f6..fe803a2ae4 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -3,34 +3,36 @@ class CfgVehicles { class CAManBase: Man { class ACE_SelfActions { class ACE_Equipment { - class GVAR(show) { - //Opens the mini map - displayName = "$STR_ACE_microdagr_show"; - condition = QUOTE(([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DISPLAY}); - statement = QUOTE([DISPLAY_MODE_DISPLAY] call FUNC(openDisplay)); - showDisabled = 0; - priority = 0.2; - icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; - }; class GVAR(configure) { - //Opens the dialog + //Opens the interactive dialog displayName = "$STR_ACE_microdagr_configure"; - condition = QUOTE(([DISPLAY_MODE_DIALOG] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DIALOG}); + condition = QUOTE([DISPLAY_MODE_DIALOG] call FUNC(canShow)); statement = QUOTE([DISPLAY_MODE_DIALOG] call FUNC(openDisplay)); showDisabled = 0; priority = 0.1; icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); exceptions[] = {"notOnMap", "isNotInside"}; - }; - class GVAR(close) { - displayName = "$STR_ACE_microdagr_closeUnit"; - condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED); - statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay)); - showDisabled = 0; - priority = 0.3; - icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; + + //Sub Actions: + class GVAR(show) { + //Opens the background display (minimap) + displayName = "$STR_ACE_microdagr_show"; + condition = QUOTE(([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DISPLAY}); + statement = QUOTE([DISPLAY_MODE_DISPLAY] call FUNC(openDisplay)); + showDisabled = 0; + priority = 0.2; + icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); + exceptions[] = {"notOnMap", "isNotInside"}; + }; + class GVAR(close) { + displayName = "$STR_ACE_microdagr_closeUnit"; + condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED); + statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay)); + showDisabled = 0; + priority = 0.3; + icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); + exceptions[] = {"notOnMap", "isNotInside"}; + }; }; }; }; @@ -66,7 +68,7 @@ class CfgVehicles { description = "Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.
Source: microDAGR.pbo"; }; }; - + class Box_NATO_Support_F; class ACE_Box_Misc: Box_NATO_Support_F { class TransportItems { From de2a89613ce69ce9ff160943ac47a1d1776f31a4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 11 May 2015 22:22:24 -0500 Subject: [PATCH 0212/1101] ATragMX --- addons/atragmx/initKeybinds.sqf | 19 +++++++++++----- addons/common/stringtable.xml | 6 ++--- addons/kestrel4500/CfgVehicles.hpp | 36 +++++++++++++++--------------- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf index 8bc37752f3..64802997d9 100644 --- a/addons/atragmx/initKeybinds.sqf +++ b/addons/atragmx/initKeybinds.sqf @@ -1,11 +1,20 @@ -["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize "STR_ACE_ATragMX_ATragMXDialogKey", -{ +//Add deviceKey entry: +private ["_conditonCode", "_toggleCode", "_closeCode"]; +_conditonCode = { + ("ACE_ATragMX" in (uniformItems ACE_player)) || {"ACE_ATragMX" in (vestItems ACE_player)} +}; +_toggleCode = { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; if (GVAR(active)) exitWith {false}; // Statement [] call FUNC(create_dialog); false -}, -{false}, -[0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) \ No newline at end of file +}; +_closeCode = { + if (dialog && {!isNull (uiNamespace getVariable ["ATragMX_Display", displayNull])}) then { + closeDialog 0; + }; +}; + +[(localize "STR_ACE_ATragMX_Name"), QUOTE(PATHTOF(UI\ATRAG_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 3b1e5dbc76..0f05274109 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -471,13 +471,13 @@ A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa. - Toggle Device + Toggle Handheld Device - Close Device + Close Handheld Device - Cycle Devices + Cycle Handheld Devices \ No newline at end of file diff --git a/addons/kestrel4500/CfgVehicles.hpp b/addons/kestrel4500/CfgVehicles.hpp index 20d8bf5b62..ab7fefa3a5 100644 --- a/addons/kestrel4500/CfgVehicles.hpp +++ b/addons/kestrel4500/CfgVehicles.hpp @@ -10,25 +10,25 @@ class CfgVehicles { showDisabled = 0; priority = 0.1; icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); - exceptions[] = {"notOnMap"}; - }; - class GVAR(show) { - displayName = "$STR_ACE_Kestrel4500_ShowKestrel"; - condition = QUOTE(call FUNC(canShow) && !GVAR(Overlay)); - statement = QUOTE(call FUNC(displayKestrel)); - showDisabled = 0; - priority = 0.2; - icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); - exceptions[] = {"notOnMap", "isNotInside"}; - }; - class GVAR(hide) { - displayName = "$STR_ACE_Kestrel4500_HideKestrel"; - condition = QUOTE(GVAR(Overlay)); - statement = QUOTE(call FUNC(displayKestrel)); - showDisabled = 0; - priority = 0.3; - icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); exceptions[] = {"notOnMap", "isNotInside"}; + class GVAR(show) { + displayName = "$STR_ACE_Kestrel4500_ShowKestrel"; + condition = QUOTE(call FUNC(canShow) && !GVAR(Overlay)); + statement = QUOTE(call FUNC(displayKestrel)); + showDisabled = 0; + priority = 0.2; + icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + exceptions[] = {"notOnMap", "isNotInside"}; + }; + class GVAR(hide) { + displayName = "$STR_ACE_Kestrel4500_HideKestrel"; + condition = QUOTE(GVAR(Overlay)); + statement = QUOTE(call FUNC(displayKestrel)); + showDisabled = 0; + priority = 0.3; + icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + exceptions[] = {"notOnMap", "isNotInside"}; + }; }; }; }; From 043fee03bdf7d7a3227bf9fa6e247a246636becb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 11 May 2015 22:48:03 -0500 Subject: [PATCH 0213/1101] Return Valid bool for keybind --- addons/common/XEH_postInit.sqf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ade35855ea..aa5e6ba5d8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -259,7 +259,7 @@ GVAR(deviceKeyCurrentIndex) = -1; [] call FUNC(deviceKeyFindValidIndex); if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; [] call ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 3); - true; + true }, {false}, [0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key @@ -269,6 +269,7 @@ GVAR(deviceKeyCurrentIndex) = -1; [] call FUNC(deviceKeyFindValidIndex); if (GVAR(deviceKeyCurrentIndex) == -1) exitWith {false}; [] call ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 4); + true }, {false}, [0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key @@ -280,6 +281,7 @@ GVAR(deviceKeyCurrentIndex) = -1; _displayName = ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 0); _iconImage = ((GVAR(deviceKeyHandlingArray) select GVAR(deviceKeyCurrentIndex)) select 1); [_displayName, _iconImage] call FUNC(displayTextPicture); + true }, {false}, [0xC7, [true, false, false]], false] call cba_fnc_addKeybind; //SHIFT + Home Key From ddbb6ab2bb0a846d4e998bc6db36045f59eab9fc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 11 May 2015 23:51:42 -0500 Subject: [PATCH 0214/1101] #1119 - Manually sync ammo globably on belt reload. --- addons/reload/XEH_postInit.sqf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 149317c136..4444fe1e34 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -18,6 +18,11 @@ if !(hasInterface) exitWith {}; {false}, [19, [false, true, false]], false] call cba_fnc_addKeybind; +["setAmmoSync", { + //To propagate the setAmmo change, do it on all clients + PARAMS_3(_unit,_weapon,_ammo); + _unit setAmmo [_weapon, _ammo]; +}] call EFUNC(common,addEventhandler); // Listen for attempts to link ammo ["linkedAmmo", { @@ -45,7 +50,7 @@ if !(hasInterface) exitWith {}; // Add the ammo _ammoAdded = _ammoMissing min (_magazine select 1); - _receiver setAmmo [currentWeapon _receiver, _ammoCount + _ammoAdded]; + ["setAmmoSync", [_receiver, (currentWeapon _receiver), (_ammoCount + _ammoAdded)]] call EFUNC(common,globalEvent); if ((_magazine select 1) - _ammoAdded > 0) then { ["returnedAmmo", [_giver], [_giver,_receiver,[_magazineType,(_magazine select 1) - _ammoAdded]]] call EFUNC(common,targetEvent); From 228786f3ad5758a63f96376e4d3a6f2c02146f13 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 12 May 2015 12:26:24 +0100 Subject: [PATCH 0215/1101] Putting the bird in its cage --- addons/zeus/CfgVehicles.hpp | 2 +- addons/zeus/XEH_preInit.sqf | 1 + .../zeus/functions/fnc_moduleCuratorDelay.sqf | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 addons/zeus/functions/fnc_moduleCuratorDelay.sqf diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index a7671232a7..a1f71f405a 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -66,7 +66,7 @@ class CfgVehicles { }; class ModuleCurator_F: Module_F { - function = QUOTE(DFUNC(bi_moduleCurator)); + function = QUOTE(DFUNC(moduleCuratorDelay)); }; class ModuleMine_F: ModuleEmpty_F { function = QUOTE(DFUNC(bi_moduleMine)); diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf index e7bb1b96a5..5841245e65 100644 --- a/addons/zeus/XEH_preInit.sqf +++ b/addons/zeus/XEH_preInit.sqf @@ -6,6 +6,7 @@ PREP(bi_moduleCurator); PREP(bi_moduleMine); PREP(bi_moduleProjectile); PREP(bi_moduleRemoteControl); +PREP(moduleCuratorDelay); PREP(moduleZeusSettings); ADDON = true; diff --git a/addons/zeus/functions/fnc_moduleCuratorDelay.sqf b/addons/zeus/functions/fnc_moduleCuratorDelay.sqf new file mode 100644 index 0000000000..734cf1a999 --- /dev/null +++ b/addons/zeus/functions/fnc_moduleCuratorDelay.sqf @@ -0,0 +1,19 @@ +/* + * Author: SilentSpike + * Function that delays the execution of the curator module function + * Allows ascension and bird settings to be set by module beforehand + * + * Arguments: + * 0: The module logic + * 1: units + * 2: activated + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +[{_this spawn DFUNC(bi_moduleCurator);},_this] call EFUNC(common,execNextFrame); From 3ddc8569bb581a644c144abc8ed4bf3bc6e34bf8 Mon Sep 17 00:00:00 2001 From: VKing Date: Tue, 12 May 2015 15:53:49 +0200 Subject: [PATCH 0216/1101] Made better with Pabstology (tm) --- addons/aircraft/Heli_Attack_01_base_F.hpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/aircraft/Heli_Attack_01_base_F.hpp b/addons/aircraft/Heli_Attack_01_base_F.hpp index 3566336353..26a4605910 100644 --- a/addons/aircraft/Heli_Attack_01_base_F.hpp +++ b/addons/aircraft/Heli_Attack_01_base_F.hpp @@ -891,8 +891,12 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { class OpticsIn { - class Wide { // Wide Unstabilized - opticsDisplayName = "WU"; + delete Narrow; + delete Medium; + delete Wide; + + class ACE_WideUnstabilized { + opticsDisplayName = "W NS"; initAngleX = 0; minAngleX = -35; maxAngleX = 10; @@ -909,7 +913,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F"; }; - class Medium: Wide { // Wide Stabilized + class ACE_Wide: ACE_WideUnstabilized { opticsDisplayName = "W"; initAngleX = 0; minAngleX = -35; @@ -927,7 +931,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F"; }; - class Narrow: Wide { // Medium Stabilized + class ACE_Medium: ACE_Wide { opticsDisplayName = "M"; initFov = 0.093; minFov = 0.093; @@ -937,7 +941,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F"; }; - class Narrower: Wide { // Narrow Stabilized + class ACE_Narrow: ACE_Wide { opticsDisplayName = "N"; initFov = 0.029; minFov = 0.029; @@ -948,7 +952,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F"; }; - class Narrowest: Wide { // Narrower Stabilized + class ACE_Narrower: ACE_Wide { opticsDisplayName = "Z"; initFov = 0.01; minFov = 0.01; From 66f5ed43c0cacfdc5c066eb33a2549f095a87751 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Tue, 12 May 2015 07:05:48 -0700 Subject: [PATCH 0217/1101] More help on certain errors in make.py --- tools/make.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/make.py b/tools/make.py index ce92e72ea7..b461d77946 100644 --- a/tools/make.py +++ b/tools/make.py @@ -1224,8 +1224,9 @@ See the make.cfg file for additional build options. if build_successful: cache[module] = new_sha - except: - print_yellow("Cancel or some error detected.") + except Exception as e: + print_yellow("Cancel or some error detected: {}".format(e)) + finally: copy_important_files(module_root_parent,os.path.join(release_dir, "@ace")) From ab580dd1c7bb0dba710a42f0193bb312eceac0c0 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Tue, 12 May 2015 07:08:45 -0700 Subject: [PATCH 0218/1101] Set version number to 3.0.0.3 --- addons/main/script_mod.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 5777d7223e..c4bd23f779 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -6,7 +6,7 @@ #define MAJOR 3 #define MINOR 0 #define PATCHLVL 0 -#define BUILD 2 +#define BUILD 3 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD From 6a821715a04b3f8f4f57c41859ec12adbcf66542 Mon Sep 17 00:00:00 2001 From: Grzegorz Sikora Date: Tue, 12 May 2015 00:24:12 +0200 Subject: [PATCH 0219/1101] Stringtable modules Conflicts: addons/missionmodules/CfgVehicles.hpp addons/respawn/CfgVehicles.hpp --- addons/advanced_ballistics/CfgVehicles.hpp | 43 +- addons/advanced_ballistics/stringtable.xml | 80 ++++ addons/ballistics/CfgVehicles.hpp | 2 +- addons/ballistics/stringtable.xml | 6 +- addons/captives/CfgVehicles.hpp | 6 +- addons/captives/stringtable.xml | 8 + addons/common/CfgVehicles.hpp | 40 +- addons/common/config.cpp | 4 +- addons/common/stringtable.xml | 60 +++ addons/explosives/CfgModule.hpp | 28 +- addons/explosives/stringtable.xml | 32 ++ addons/hearing/CfgVehicles.hpp | 13 +- addons/hearing/stringtable.xml | 24 ++ addons/interaction/CfgVehicles.hpp | 13 +- addons/interaction/stringtable.xml | 34 +- addons/map/CfgVehicles.hpp | 56 +-- addons/map/stringtable.xml | 77 +++- addons/medical/CfgFactionClasses.hpp | 2 +- addons/medical/CfgVehicles.hpp | 219 +++++----- addons/medical/config.cpp | 2 +- .../functions/fnc_actionCheckPulseLocal.sqf | 2 +- addons/medical/stringtable.xml | 378 +++++++++++++++++- addons/microdagr/CfgVehicles.hpp | 18 +- addons/microdagr/stringtable.xml | 28 ++ addons/missileguidance/ACE_Settings.hpp | 2 +- addons/missileguidance/stringtable.xml | 12 + addons/missionmodules/CfgFactionClasses.hpp | 2 +- addons/missionmodules/CfgVehicles.hpp | 34 +- addons/missionmodules/stringtable.xml | 73 ++++ addons/mk6mortar/CfgVehicles.hpp | 18 +- addons/mk6mortar/stringtable.xml | 32 ++ addons/nametags/CfgVehicles.hpp | 44 +- addons/nametags/config.cpp | 6 +- addons/nametags/stringtable.xml | 96 +++++ addons/optionsmenu/CfgVehicles.hpp | 10 +- addons/optionsmenu/stringtable.xml | 44 ++ addons/respawn/CfgVehicleClasses.hpp | 2 +- addons/respawn/CfgVehicles.hpp | 42 +- addons/respawn/stringtable.xml | 56 +++ addons/switchunits/CfgVehicles.hpp | 51 +-- addons/switchunits/stringtable.xml | 64 +++ addons/vehiclelock/CfgVehicles.hpp | 28 +- addons/vehiclelock/stringtable.xml | 52 +++ addons/weather/CfgVehicles.hpp | 31 +- addons/weather/stringtable.xml | 56 +++ addons/winddeflection/CfgVehicles.hpp | 23 +- addons/winddeflection/stringtable.xml | 40 ++ 47 files changed, 1656 insertions(+), 337 deletions(-) create mode 100644 addons/missionmodules/stringtable.xml diff --git a/addons/advanced_ballistics/CfgVehicles.hpp b/addons/advanced_ballistics/CfgVehicles.hpp index fda4b9a8ff..4e42f35f72 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 = "Advanced Ballistics"; + displayName = "$STR_ACE_AdvancedBallistics_DisplayName"; icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); @@ -12,26 +12,26 @@ class CfgVehicles { author = "Ruthberg"; class Arguments { class enabled { - displayName = "Advanced Ballistics"; - description = "Enables advanced ballistics"; + displayName = "$STR_ACE_AdvancedBallistics_enabled_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_enabled_Description"; typeName = "BOOL"; defaultValue = 0; }; class alwaysSimulateForSnipers { - displayName = "Always Enabled For Snipers"; - description = "Always enables advanced ballistics when high power optics are used"; + displayName = "$STR_ACE_AdvancedBallistics_alwaysSimulateForSnipers_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_alwaysSimulateForSnipers_Description"; typeName = "BOOL"; defaultValue = 1; }; class disabledInFullAutoMode { - displayName = "Disabled In FullAuto Mode"; - description = "Disables the advanced ballistics during full auto fire"; + displayName = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_Description"; typeName = "BOOL"; defaultValue = 0; }; class onlyActiveForLocalPlayers { - displayName = "Disabled For Non Local Players"; - description = "Disables the advanced ballistics for bullets coming from other players (enable this if you encounter frame drops during heavy firefights in multiplayer)"; + displayName = "$STR_ACE_AdvancedBallistics_onlyActiveForLocalPlayers_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_onlyActiveForLocalPlayers_Description"; typeName = "BOOL"; defaultValue = 1; }; @@ -44,35 +44,38 @@ class CfgVehicles { }; */ class ammoTemperatureEnabled { - displayName = "Enable Ammo Temperature Simulation"; - description = "Muzzle velocity varies with ammo temperature"; + displayName = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_Description"; typeName = "BOOL"; defaultValue = 1; }; class barrelLengthInfluenceEnabled { - displayName = "Enable Barrel Length Simulation"; - description = "Muzzle velocity varies with barrel length"; + displayName = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_Description"; typeName = "BOOL"; defaultValue = 1; }; class bulletTraceEnabled { - displayName = "Enable Bullet Trace Effect"; - description = "Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)"; + displayName = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_Description"; typeName = "BOOL"; defaultValue = 1; }; class simulationInterval { - displayName = "Simulation Interval"; - description = "Defines the interval between every calculation step"; + displayName = "$STR_ACE_AdvancedBallistics_simulationInterval_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_simulationInterval_Description"; typeName = "NUMBER"; defaultValue = 0.0; }; class simulationRadius { - displayName = "Simulation Radius"; - description = "Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles"; + displayName = "$STR_ACE_AdvancedBallistics_simulationRadius_DisplayName"; + description = "$STR_ACE_AdvancedBallistics_simulationRadius_Description"; typeName = "NUMBER"; defaultValue = 3000; }; }; + class ModuleDescription { + description = "$STR_ACE_AdvancedBallistics_Description"; + }; }; -}; +}; \ No newline at end of file diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 0de8071754..565e4bd801 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -25,5 +25,85 @@ Zobrazit úhloměr Mostrar Transferidor + + Advanced Ballistics + Zaawansowana balistyka + + + Advanced Ballistics + Zaawansowana balistyka + + + Enables advanced ballistics + Aktywuje zaawansowaną balistykę + + + Always Enabled For Snipers + Zawsze akt. dla snajp. + + + Always enables advanced ballistics when high power optics are used + Aktywuje zaawansowaną balistykę zawsze, kiedy używana jest optyka + + + Disabled In FullAuto Mode + Wył. podczas ognia auto. + + + Disables the advanced ballistics during full auto fire + Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego + + + Disabled For Non Local Players + Wyłącz dla nielok. graczy + + + Disables the advanced ballistics for bullets coming from other players (enable this if you encounter frame drops during heavy firefights in multiplayer) + Dezaktywuje zaawansowaną balistykę dla pocisków pochodzących od innych graczy(aktywuj tą opcję jeżeli odczuwasz spadki FPS podczas sporych strzelanin w MP) + + + 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/ballistics/CfgVehicles.hpp b/addons/ballistics/CfgVehicles.hpp index 82e7fef5e3..0ad697d91e 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 = "[ACE] Ammo Supply Crate"; + displayName = "$STR_ACE_AmmoSupplyCrate_DisplayName"; model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F"; author = "$STR_ACE_Common_ACETeam"; class TransportMagazines { diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 7c6d9c85ad..85ac44b4de 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1592,5 +1592,9 @@ Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5 Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5 + + [ACE] Ammo Supply Crate + [ACE] Skrzynka z amunicją + - \ No newline at end of file + diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 1e2eb3f201..91c47824fd 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -161,7 +161,7 @@ class CfgVehicles { class GVAR(ModuleSurrender): Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Make Unit Surrender"; + displayName = "$STR_ACE_Captives_ModuleSurrender_DisplayName"; //Make Unit Surrender function = QUOTE(DFUNC(moduleSurrender)); scope = 2; //show in editor scopeCurator = 2; //show in zeus @@ -172,8 +172,8 @@ class CfgVehicles { functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { - description = "Sync a unit to make them surrender.
Source: ace_captives"; + description = "$STR_ACE_Captives_ModuleSurrender_Description"; //Sync a unit to make them surrender.
Source: ace_captives sync[] = {"AnyAI"}; }; }; -}; +}; \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index def173c55b..07cf780e19 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -193,5 +193,13 @@ Semmi sincs az egér alatt Nessuna selezione + + Make Unit Surrender + Poddaj się! + + + 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 + diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 5a00c038e7..70d84b376c 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -25,72 +25,82 @@ class CfgVehicles { // += needs a non inherited entry in that class, otherwise it simply overwrites //#include - class Module_F; - class ACE_ModuleCheckPBOs: Module_F { + class Logic; + class Module_F: Logic { + class ModuleDescription {}; + }; + class ACE_ModuleCheckPBOs: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Check PBOs"; + displayName = "$STR_ACE_Common_CheckPBO_DisplayName"; function = QFUNC(moduleCheckPBOs); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa)); class Arguments { class Action { - displayName = "Action"; - description = "What to do with people who do not have the right PBOs?"; + displayName = "$STR_ACE_Common_CheckPBO_Action_DisplayName"; + description = "$STR_ACE_Common_CheckPBO_Action_Description"; class values { class WarnOnce { default = 1; - name = "Warn once"; + name = "$STR_ACE_Common_CheckPBO_Action_WarnOnce"; value = 0; }; class Warn { - name = "Warn (permanent)"; + name = "$STR_ACE_Common_CheckPBO_Action_WarnPerm"; value = 1; }; class Kick { - name = "Kick"; + name = "$STR_ACE_Common_CheckPBO_Action_Kick"; value = 2; }; }; }; class CheckAll { - displayName = "Check all addons"; - description = "Check all addons instead of only those of ACE?"; + displayName = "$STR_ACE_Common_CheckPBO_CheckAll_DisplayName"; + description = "$STR_ACE_Common_CheckPBO_CheckAll_Description"; typeName = "BOOL"; class values { class WarnOnce { default = 1; - name = "No"; + name = "$STR_ACE_Common_CheckPBO_CheckAll_No"; value = 0; }; class Warn { - name = "Yes"; + name = "$STR_ACE_Common_CheckPBO_CheckAll_Yes"; value = 1; }; }; }; class Whitelist { - displayName = "Whitelist"; - description = "What addons are allowed regardless?"; + displayName = "$STR_ACE_Common_CheckPBO_Whitelist_DisplayName"; + description = "$STR_ACE_Common_CheckPBO_Whitelist_Description"; typeName = "STRING"; class values { default = "[]"; }; }; }; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_Common_CheckPBO_Description"; + }; }; class ACE_ModuleLSDVehicles: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "LSD Vehicles"; + displayName = "$STR_ACE_Common_LSDVehicles_DisplayName"; function = "ACE_Common_fnc_moduleLSDVehicles"; scope = 2; icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa)); isGlobal = 1; class Arguments { }; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_Common_LSDVehicles_Description"; + sync[] = {"AnyVehicle"}; + }; }; class Box_NATO_Support_F; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 27647f8d00..3f1e5a6308 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -101,7 +101,7 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_Common_SettingFeedbackIconsName"; description = "$STR_ACE_Common_SettingFeedbackIconsDesc"; - values[] = {"Hide", "Top right, downwards", "Top right, to the left", "Top left, downwards", "Top left, to the right"}; + 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; @@ -110,7 +110,7 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_Common_SettingProgressbarLocationName"; description = "$STR_ACE_Common_SettingProgressbarLocationDesc"; - values[] = {"Top", "Bottom"}; + values[] = {"$STR_ACE_Common_Top", "$STR_ACE_Common_Bottom"}; }; class GVAR(displayTextColor) { value[] = {0,0,0,0.1}; diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 8d28704362..4ddc0112d8 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -470,5 +470,65 @@ Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa. A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa. + + Check PBOs + Sprawdzaj PBO + + + + Sprawdzaj spójność addonów z serwerem + + + Action + Akcja + + + What to do with people who do not have the right PBOs? + Co zrobić z graczami, którzy nie mają właściwych PBO? + + + Warn once + Ostrzeż raz + + + Warn (permanent) + Ostrzeżenie (permanentne) + + + Kick + Kick + + + Check all addons + Sprawdź wsz. addony + + + Check all addons instead of only those of ACE? + Sprawdzaj wszystkie addony czy tylko te z ACE? + + + No + Tylko ACE + + + Yes + Wszystkie + + + Whitelist + Biała lista + + + What addons are allowed regardless? + Jakie addony są dozwolone? + + + LSD Vehicles + Pojazdy LSD + + + Adds LSD effect to synchronized vehicle + Dodaje efekt LSD pod zsynchronizowany pojazd + diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index b4f7b65a83..50b59fc55d 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -1,44 +1,50 @@ -class Module_F; +class Logic; +class Module_F: Logic { + class ModuleDescription {}; +}; class ACE_ModuleExplosive: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Explosive System"; + displayName = "$STR_ACE_Explosive_Module_DisplayName"; function = QUOTE(FUNC(module)); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa); class Arguments { class RequireSpecialist { - displayName = "Require specialists?"; - description = "Require explosive specialists to disable explosives? Default: No"; + displayName = "$STR_ACE_Explosive_RequireSpecialist_DisplayName"; + description = "$STR_ACE_Explosive_RequireSpecialist_Description"; typeName = "BOOL"; class values { class Yes { - name = "Yes"; + name = "$STR_ACE_Explosive_Yes"; value = 1; }; class No { default = 1; - name = "No"; + name = "$STR_ACE_Explosive_No"; value = 0; }; }; }; class PunishNonSpecialists { - displayName = "Punish non-specialists?"; - description = "Increase the time it takes to complete actions for non-specialists? Default: Yes"; + displayName = "$STR_ACE_Explosive_PunishNonSpecialists_DisplayName"; + description = "$STR_ACE_Explosive_PunishNonSpecialists_Description"; typeName = "BOOL"; class values { class Yes { default = 1; - name = "Yes"; + name = "$STR_ACE_Explosive_Yes"; value = 1; }; class No { - name = "No"; + name = "$STR_ACE_Explosive_No"; value = 0; }; }; }; }; -}; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_Explosive_Module_Description"; + }; +}; \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 9d885c236c..5eb5d28512 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -505,5 +505,37 @@ Raccogli Pegar + + Explosive System + System ładunków wybuchowych + + + Require specialists? + Wymagaj specjalistów? + + + Require explosive specialists to disable explosives? Default: No + Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie + + + Yes + Tak + + + No + Nie + + + Punish non-specialists? + Karaj nie-specjalistów? + + + 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 + + + + Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. + diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 6c77255384..d20d067981 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -98,21 +98,24 @@ class CfgVehicles { class ACE_ModuleHearing: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Hearing"; + displayName = "$STR_ACE_Hearing_Module_DisplayName"; //Hearing function = QFUNC(moduleHearing); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Hearing_ca.paa); class Arguments { class EnableCombatDeafness { - displayName = "Enable combat deafness?"; - description = "Enable combat deafness?"; + displayName = "$STR_ACE_Hearing_CombatDeafness_DisplayName"; //Enable combat deafness? + description = "$STR_ACE_Hearing_CombatDeafness_Description"; //Enable combat deafness? typeName = "BOOL"; class values { - class Yes { name = "Yes"; value = 1; default = 1; }; - class No { name = "No"; value = 0; }; + class Yes { name = "$STR_ACE_Hearing_CombatDeafness_Yes"; value = 1; default = 1; }; //yes + class No { name = "$STR_ACE_Hearing_CombatDeafness_No"; value = 0; }; //no }; }; + }; + class ModuleDescription { + description = "$STR_ACE_Hearing_Module_Description"; }; }; }; diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index e6f59604a3..e532768fd9 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -109,5 +109,29 @@ Disabilita i fischi nelle orecchie Desabilitar zumbido de ouvidos + + Hearing + Słuch + + + Enable combat deafness? + Wł. głuchotę bojową + + + Enable combat deafness? + Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów + + + Yes + Tak + + + No + Nie + + + + 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. + diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 5548311718..9968c490e1 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -4,21 +4,24 @@ class CfgVehicles { class ACE_ModuleInteraction: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Interaction System"; + displayName = "$STR_ACE_InteractionSystem_Module_DisplayName"; function = "ACE_Interaction_fnc_moduleInteraction"; scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); class Arguments { class EnableTeamManagement { - displayName = "Enable Team Management"; - description = "Should players be allowed to use the Team Management Menu? Default: Yes"; + displayName = "$STR_ACE_InteractionSystem_EnableTeamManagement_DisplayName"; + description = "$STR_ACE_InteractionSystem_EnableTeamManagement_Description"; typeName = "BOOL"; class values { - class Yes { default = 1; name = "Yes"; value = 1;}; - class No { name = "No"; value = 0; }; + class Yes { default = 1; name = "$STR_ACE_InteractionSystem_EnableTeamManagement_Yes"; value = 1;}; + class No { name = "$STR_ACE_InteractionSystem_EnableTeamManagement_No"; value = 0; }; }; }; + }; + class ModuleDescription { + description = "$STR_ACE_InteractionSystem_Module_Description"; }; }; diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 32a901507b..153b94a1d9 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -522,7 +522,7 @@ Rot Rojo Rouge - Czerwony + Czerwonych Červený Красный Vermelha @@ -534,7 +534,7 @@ Grün Verde Vert - Zielony + Zielonych Zelený Зеленый Verde @@ -546,7 +546,7 @@ Blau Azul Bleu - Niebieski + Niebieskich Modrý Синий Azul @@ -558,7 +558,7 @@ Gelb Amarillo Jaune - Żółty + Żółtych Žlutý Жёлтый Amarela @@ -666,7 +666,7 @@ Du bist Gruppe %1 beigetreten Te has unido al equipo %1 Tu as rejoint l'équipe %1 - Dołączyłeś do drużyny %1 + Dołączyłeś do %1 Připojil ses do %1 týmu Вы присоединились к группе %1 Você uniu-se à Equipe %1 @@ -793,5 +793,29 @@ Passeggeri Passageiros + + Interaction System + System interakcji + + + Enable Team Management + Wł. zarządzanie drużyną + + + 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 + + + Yes + Tak + + + No + Nie + + + + 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/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 612cadb006..150ac23930 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -3,74 +3,80 @@ class CfgVehicles { class ACE_ModuleMap: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Map"; + displayName = "$STR_ACE_Map_Module_DisplayName"; function = QFUNC(moduleMap); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_Map_ca.paa); class Arguments { class MapIllumination { - displayName = "Map illumination?"; - description = "Calculate dynamic map illumination based on light conditions?"; + displayName = "$STR_ACE_Map_MapIllumination_DisplayName"; + description = "$STR_ACE_Map_MapIllumination_Description"; typeName = "BOOL"; class values { - class Yes { name = "Yes"; value = 1; default = 1; }; - class No { name = "No"; value = 0; }; + class Yes { name = "$STR_ACE_Map_Yes"; value = 1; default = 1; }; + class No { name = "$STR_ACE_Map_No"; value = 0; }; }; }; class MapShake { - displayName = "Map shake?"; - description = "Make map shake when walking?"; + displayName = "$STR_ACE_Map_MapShake_DisplayName"; + description = "$STR_ACE_Map_MapShake_Description"; typeName = "BOOL"; class values { - class Yes { name = "Yes"; value = 1; default = 1;}; - class No { name = "No"; value = 0; }; + class Yes { name = "$STR_ACE_Map_Yes"; value = 1; default = 1;}; + class No { name = "$STR_ACE_Map_No"; value = 0; }; }; }; class MapLimitZoom { - displayName = "Limit map zoom?"; - description = "Limit the amount of zoom available for the map?"; + displayName = "$STR_ACE_Map_MapLimitZoom_DisplayName"; + description = "$STR_ACE_Map_MapLimitZoom_Description"; typeName = "BOOL"; class values { - class Yes { name = "Yes"; value = 1; }; - class No { name = "No"; value = 0; default = 1;}; + class Yes { name = "$STR_ACE_Map_Yes"; value = 1; }; + class No { name = "$STR_ACE_Map_No"; value = 0; default = 1;}; }; }; class MapShowCursorCoordinates { - displayName = "Show cursor coordinates?"; - description = "Show the grid coordinates on the mouse pointer?"; + displayName = "$STR_ACE_Map_MapShowCursorCoordinates_DisplayName"; + description = "$STR_ACE_Map_MapShowCursorCoordinates_Description"; typeName = "BOOL"; class values { - class Yes { name = "Yes"; value = 1; }; - class No { name = "No"; value = 0; default = 1;}; + class Yes { name = "$STR_ACE_Map_Yes"; value = 1; }; + class No { name = "$STR_ACE_Map_No"; value = 0; default = 1;}; }; }; + }; + class ModuleDescription { + description = "$STR_ACE_Map_Module_Description"; }; }; class ACE_ModuleBlueForceTracking: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Blue Force Tracking"; + displayName = "$STR_ACE_Map_BFT_Module_DisplayName"; function = QFUNC(blueForceTrackingModule); scope = 2; isGlobal = 1; icon = PATHTOF(UI\Icon_Module_BFTracking_ca.paa); class Arguments { class Interval { - displayName = "Interval"; - description = "How often the markers should be refreshed (in seconds)"; + displayName = "$STR_ACE_Map_BFT_Interval_DisplayName"; + description = "$STR_ACE_Map_BFT_Interval_Description"; defaultValue = 1; }; class HideAiGroups { - displayName = "Hide AI groups?"; - description = "Hide markers for 'AI only' groups?"; + displayName = "$STR_ACE_Map_BFT_HideAiGroups_DisplayName"; + description = "$STR_ACE_Map_BFT_HideAiGroups_Description"; typeName = "BOOL"; class values { - class Yes { name = "Yes"; value = 1; }; - class No { name = "No"; value = 0; default = 1; }; + class Yes { name = "$STR_ACE_Map_Yes"; value = 1; }; + class No { name = "$STR_ACE_Map_No"; value = 0; default = 1; }; }; }; + }; + class ModuleDescription { + description = "$STR_ACE_Map_BFT_Module_Description"; }; }; -}; +}; \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 4423bbcfb4..0c25016653 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -1,6 +1,77 @@  - - - + + + Map + Mapa + + + Map illumination? + Oświetlenie mapy + + + Calculate dynamic map illumination based on light conditions? + Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych + + + Yes + Tak + + + No + Nie + + + Map shake? + Drżenie mapy + + + Make map shake when walking? + Ekran mapy drży podczas ruchu + + + Limit map zoom? + Ograniczony zoom + + + Limit the amount of zoom available for the map? + Ogranicza maksymalny stopień przybliżenia mapy + + + Show cursor coordinates? + Koordynaty pod kursorem + + + Show the grid coordinates on the mouse pointer? + Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy + + + + Moduł ten pozwala dostosować opcje widoku ekranu mapy. + + + Blue Force Tracking + Blue Force Tracking + + + Interval + Interwał + + + How often the markers should be refreshed (in seconds) + Jak często markery powinny być odświeżane (w sekundach) + + + Hide AI groups? + Ukryj grupy AI + + + Hide markers for 'AI only' groups? + Ukrywa markery dla grup złożonych tylko z AI + + + + Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT. + + \ No newline at end of file diff --git a/addons/medical/CfgFactionClasses.hpp b/addons/medical/CfgFactionClasses.hpp index e98b1f84ec..67e3404e91 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 = "ACE Medical"; + displayName = "$STR_ACE_Medical_Category_DisplayName"; }; }; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 4054a2ee1e..aac43de0ed 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -12,7 +12,7 @@ class CfgVehicles { // TODO localization for all the modules class ACE_moduleMedicalSettings: ACE_Module { scope = 2; - displayName = "Medical Settings [ACE]"; + displayName = "$STR_ACE_MedicalSettings_Module_DisplayName"; icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(DFUNC(moduleMedicalSettings)); @@ -22,78 +22,78 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class level { - displayName = "Medical Level"; - description = "What is the medical simulation level?"; + displayName = "$STR_ACE_MedicalSettings_level_DisplayName"; + description = "$STR_ACE_MedicalSettings_level_Description"; typeName = "NUMBER"; class values { class normal { - name = "Basic"; + name = "$STR_ACE_MedicalSettings_basic"; value = 1; default = 1; }; class full { - name = "Advanced"; + name = "$STR_ACE_MedicalSettings_advanced"; value = 2; }; }; }; class medicSetting { - displayName = "Medics setting"; - description = "What is the level of detail prefered for medics?"; + displayName = "$STR_ACE_MedicalSettings_medicSetting_DisplayName"; + description = "$STR_ACE_MedicalSettings_medicSetting_Description"; typeName = "NUMBER"; class values { class disable { - name = "Disable medics"; + name = "$STR_ACE_MedicalSettings_medicSetting_disable"; value = 0; }; class normal { - name = "Normal"; + name = "$STR_ACE_MedicalSettings_basic"; value = 1; default = 1; }; class full { - name = "Advanced"; + name = "$STR_ACE_MedicalSettings_advanced"; value = 2; }; }; }; class allowLitterCreation { - displayName = "Enable Litter"; - description = "Enable litter being created upon treatment"; + displayName = "$STR_ACE_MedicalSettings_allowLitterCreation_DisplayName"; + description = "$STR_ACE_MedicalSettings_allowLitterCreation_Description"; typeName = "BOOL"; defaultValue = 1; }; class litterCleanUpDelay { - displayName = "Life time of litter objects"; - description = "How long should litter objects stay? In seconds. -1 is forever."; + displayName = "$STR_ACE_MedicalSettings_litterCleanUpDelay_DisplayName"; + description = "$STR_ACE_MedicalSettings_litterCleanUpDelay_Description"; typeName = "NUMBER"; defaultValue = 1800; }; class enableScreams { - displayName = "Enable Screams"; - description = "Enable screaming by injuried units"; + displayName = "$STR_ACE_MedicalSettings_enableScreams_DisplayName"; + description = "$STR_ACE_MedicalSettings_enableScreams_Description"; typeName = "BOOL"; defaultValue = 1; }; class playerDamageThreshold { - displayName = "Player Damage"; - description = "What is the damage a player can take before being killed?"; + displayName = "$STR_ACE_MedicalSettings_playerDamageThreshold_DisplayName"; + description = "$STR_ACE_MedicalSettings_playerDamageThreshold_Description"; typeName = "NUMBER"; defaultValue = 1; }; class AIDamageThreshold { - displayName = "AI Damage"; - description = "What is the damage an AI can take before being killed?"; + displayName = "$STR_ACE_MedicalSettings_AIDamageThreshold_DisplayName"; + description = "$STR_ACE_MedicalSettings_AIDamageThreshold_Description"; typeName = "NUMBER"; defaultValue = 1; }; class enableUnconsciousnessAI { - displayName = "AI Unconsciousness"; - description = "Allow AI to go unconscious"; + displayName = "$STR_ACE_MedicalSettings_enableUnconsciousnessAI_DisplayName"; + description = "$STR_ACE_MedicalSettings_enableUnconsciousnessAI_Description"; typeName = "NUMBER"; class values { class disable { - name = "Disabled"; + name = "$STR_ACE_Medical_disabled"; value = 0; }; class normal { @@ -102,45 +102,45 @@ class CfgVehicles { default = 1; }; class full { - name = "Enabled"; + name = "$STR_ACE_Medical_enabled"; value = 2; }; }; }; class preventInstaDeath { - displayName = "Prevent instant death"; - description = "Have a unit move to unconscious instead of death"; + displayName = "$STR_ACE_MedicalSettings_preventInstaDeath_DisplayName"; + description = "$STR_ACE_MedicalSettings_preventInstaDeath_Description"; typeName = "BOOL"; defaultValue = 0; }; class bleedingCoefficient { - displayName = "Bleeding coefficient"; - description = "Coefficient to modify the bleeding speed"; + displayName = "$STR_ACE_MedicalSettings_bleedingCoefficient_DisplayName"; + description = "$STR_ACE_MedicalSettings_bleedingCoefficient_Description"; typeName = "NUMBER"; defaultValue = 1; }; class painCoefficient { - displayName = "Pain coefficient"; - description = "Coefficient to modify the pain intensity"; + displayName = "$STR_ACE_MedicalSettings_painCoefficient_DisplayName"; + description = "$STR_ACE_MedicalSettings_painCoefficient_Description"; typeName = "NUMBER"; defaultValue = 1; }; class keepLocalSettingsSynced { - displayName = "Sync status"; - description = "Keep unit status synced. Recommended on."; + displayName = "$STR_ACE_MedicalSettings_keepLocalSettingsSynced_DisplayName"; + description = "$STR_ACE_MedicalSettings_keepLocalSettingsSynced_Description"; typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = "Provides a medical system for both players and AI."; + description = "$STR_ACE_MedicalSettings_Module_Description"; sync[] = {}; }; }; class ACE_moduleAdvancedMedicalSettings: ACE_Module { scope = 2; - displayName = "Advanced Medical Settings [ACE]"; + displayName = "$STR_ACE_AdvancedMedicalSettings_Module_DisplayName"; icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAdvancedMedicalSettings)); @@ -151,80 +151,80 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enableFor { - displayName = "Enabled for"; - description = "Select what units the advanced medical system will be enabled for"; + displayName = "$STR_ACE_AdvancedMedicalSettings_enableFor_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_enableFor_Description"; typeName = "NUMBER"; class values { class playableUnits { - name = "Players only."; + name = "$STR_ACE_Medical_playeronly"; value = 0; default = 1; }; class playableUnitsAndAI { - name = "Players and AI"; + name = "$STR_ACE_Medical_playersandai"; value = 1; }; }; }; class enableAdvancedWounds { - displayName = "Enable Advanced wounds"; - description = "Allow reopening of bandaged wounds?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_Description"; typeName = "BOOL"; defaultValue = 0; }; class enableVehicleCrashes { - displayName = "Vehicle Crashes"; - description = "Do units take damage from a vehicle crash?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_Description"; typeName = "BOOL"; defaultValue = 1; }; class medicSetting_PAK { - displayName = "Allow PAK"; - description = "Who can use the PAK for full heal?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_Description"; typeName = "NUMBER"; class values { - class anyone { name = "Anyone"; value = 0; }; - class Medic { name = "Medics only"; value = 1; default = 1; }; - class Special { name = "Doctors only"; value = 2; }; + 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 consumeItem_PAK { - displayName = "Remove PAK on use"; - description = "Should PAK be removed on usage?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_Description"; typeName = "NUMBER"; class values { - class keep { name = "No"; value = 0; }; - class remove { name = "Yes"; value = 1; default = 1; }; + class keep { name = "$STR_ACE_Medical_No"; value = 0; }; + class remove { name = "$STR_ACE_Medical_Yes"; value = 1; default = 1; }; }; }; class useLocation_PAK { - displayName = "Locations PAK"; - description = "Where can the personal aid kit be used?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_Description"; typeName = "NUMBER"; class values { - class anywhere { name = "Anywhere"; value = 0; }; - class vehicle { name = "Medical Vehicles"; value = 1; }; - class facility { name = "Medical facility"; value = 2; }; - class vehicleAndFacility { name = "Vehicles & facility"; value = 3; default = 1; }; - class disabled { name = "Disabled"; value = 4;}; + 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 medicSetting_SurgicalKit: medicSetting_PAK { - displayName = "Allow Surgical kit (Adv)"; - description = "Who can use the surgical kit?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description"; }; class consumeItem_SurgicalKit: consumeItem_PAK { - displayName = "Remove Surgical kit (Adv)"; - description = "Should Surgical kit be removed on usage?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description"; }; class useLocation_SurgicalKit: useLocation_PAK { - displayName = "Locations Surgical kit (Adv)"; - description = "Where can the Surgical kit be used?"; + displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName"; + description = "$STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_Description"; }; }; class ModuleDescription { - description = "Configure the treatment settings from ACE Medical"; + description = "$STR_ACE_AdvancedMedicalSettings_Module_Description"; sync[] = {}; }; }; @@ -232,7 +232,7 @@ class CfgVehicles { class ACE_moduleReviveSettings: ACE_Module { scope = 2; - displayName = "Revive Settings [ACE]"; + displayName = "$STR_ACE_ReviveSettings_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 = "Enable Revive"; - description = "Enable a basic revive system"; + displayName = "$STR_ACE_ReviveSettings_enableRevive_DisplayName"; + description = "$STR_ACE_ReviveSettings_enableRevive_Description"; typeName = "NUMBER"; defaultValue = 0; class values { - class disable { name = "Disabled"; value = 0; default = 1;}; - class playerOnly { name = "Player only"; value = 1; }; - class playerAndAI { name = "Player & AI"; value = 2; }; + 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 maxReviveTime { - displayName = "Max Revive time"; - description = "Max amount of seconds a unit can spend in revive state"; + displayName = "$STR_ACE_ReviveSettings_maxReviveTime_DisplayName"; + description = "$STR_ACE_ReviveSettings_maxReviveTime_Description"; typeName = "NUMBER"; defaultValue = 120; }; class amountOfReviveLives { - displayName = "Max Revive lives"; - description = "Max amount of lives a unit. 0 or -1 is disabled."; + displayName = "$STR_ACE_ReviveSettings_amountOfReviveLives_DisplayName"; + description = "$STR_ACE_ReviveSettings_amountOfReviveLives_Description"; typeName = "NUMBER"; defaultValue = -1; }; }; class ModuleDescription { - description = "Provides a medical system for both players and AI."; + description = "$STR_ACE_ReviveSettings_Module_Description"; sync[] = {}; }; }; class ACE_moduleAssignMedicRoles: Module_F { scope = 2; - displayName = "Set Medic Class [ACE]"; + displayName = "$STR_ACE_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 = "List"; - description = "List of unit names that will be classified as medic, separated by commas."; + displayName = "$STR_ACE_AssignMedicRoles_EnableList_DisplayName"; + description = "$STR_ACE_AssignMedicRoles_EnableList_Description"; defaultValue = ""; typeName = "STRING"; }; class role { - displayName = "Is Medic"; - description = "Medics allow for more advanced treatment in case of Advanced Medic roles enabled"; + displayName = "$STR_ACE_AssignMedicRoles_role_DisplayName"; + description = "$STR_ACE_AssignMedicRoles_role_Description"; typeName = "NUMBER"; class values { class none { - name = "None"; + name = "$STR_ACE_AssignMedicRoles_role_none"; value = 0; }; class medic { - name = "Regular medic"; + name = "$STR_ACE_AssignMedicRoles_role_medic"; value = 1; default = 1; }; class doctor { - name = "Doctor (Only Advanced Medics)"; + name = "$STR_ACE_AssignMedicRoles_role_doctor"; value = 2; }; }; }; }; class ModuleDescription { - description = "Assigns the ACE medic class to a unit"; + description = "$STR_ACE_AssignMedicRoles_Module_Description"; sync[] = {}; }; }; class ACE_moduleAssignMedicVehicle: Module_F { scope = 2; - displayName = "Set Medical Vehicle [ACE]"; + displayName = "$STR_ACE_AssignMedicVehicle_Module_DisplayName"; icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalVehicle)); @@ -328,22 +328,22 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class EnableList { - displayName = "List"; - description = "List of vehicles that will be classified as medical vehicle, separated by commas."; + displayName = "$STR_ACE_AssignMedicVehicle_EnableList_DisplayName"; + description = "$STR_ACE_AssignMedicVehicle_EnableList_Description"; defaultValue = ""; typeName = "STRING"; }; class enabled { - displayName = "Is Medical Vehicle"; - description = "Whatever or not the objects in the list will be a medical vehicle."; + displayName = "$STR_ACE_AssignMedicVehicle_enabled_DisplayName"; + description = "$STR_ACE_AssignMedicVehicle_enabled_Description"; typeName = "NUMBER"; class values { class none { - name = "No"; + name = "$STR_ACE_Medical_No"; value = 0; }; class medic { - name = "Yes"; + name = "$STR_ACE_Medical_Yes"; value = 1; default = 1; }; @@ -351,13 +351,13 @@ class CfgVehicles { }; }; class ModuleDescription { - description = "Assigns the ACE medic class to a unit"; + description = "$STR_ACE_AssignMedicVehicle_Module_Description"; sync[] = {}; }; }; class ACE_moduleAssignMedicalFacility: Module_F { scope = 2; - displayName = "Set Medical Facility [ACE]"; + displayName = "$STR_ACE_AssignMedicalFacility_Module_DisplayName"; icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalFacility)); @@ -368,13 +368,13 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enabled { - displayName = "Is Medical Facility"; - description = "Registers an object as a medical facility for CMS"; + displayName = "$STR_ACE_AssignMedicalFacility_enabled_DisplayName"; + description = "$STR_ACE_AssignMedicalFacility_enabled_Description"; typeName = "BOOL"; }; }; class ModuleDescription { - description = "Defines an object as a medical facility for CMS. This allows for more advanced treatments. Can be used on buildings and vehicles. "; + description = "$STR_ACE_AssignMedicalFacility_Module_Description"; sync[] = {}; }; }; @@ -897,7 +897,7 @@ class CfgVehicles { class ACE_medicalSupplyCrate: NATO_Box_Base { scope = 2; accuracy = 1000; - displayName = "[ACE] Medical Supply Crate (Basic)"; + displayName = "$STR_ACE_medicalSupplyCrate"; model = PATHTOF(data\ace_medcrate.p3d); author = "$STR_ACE_Common_ACETeam"; class TransportItems { @@ -932,7 +932,7 @@ class CfgVehicles { }; }; class ACE_medicalSupplyCrate_advanced: ACE_medicalSupplyCrate { - displayName = "[ACE] Medical Supply Crate (Advanced)"; + displayName = "$STR_ACE_medicalSupplyCrate_advanced"; class TransportItems { class ACE_fieldDressing { name = "ACE_fieldDressing"; @@ -1017,3 +1017,24 @@ class CfgVehicles { }; }; }; + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 566de29f91..cd0fe0e66c 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { 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"}; - author[] = {"Glowbal", "KoffienFlummi"}; + author[] = {"Glowbal", "KoffeinFlummi"}; authorUrl = ""; VERSION_CONFIG; }; diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index 85e9bee828..b283068ec7 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -24,7 +24,7 @@ if (!alive _unit) then { _heartRate = 0; }; _heartRateOutput = "STR_ACE_Medical_Check_Pulse_Output_5"; -_logOutPut = "No heart rate"; +_logOutPut = localize "STR_ACE_Medical_Check_Pulse_None"; if (_heartRate > 1.0) then { if ([_caller] call FUNC(isMedic)) then { diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 215d9ae766..50f3d67110 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1290,7 +1290,7 @@ Trousse chirurgicale Хирургический набор Kit quirúrgico - Zestaw do szycia ran + Zestaw chirurgiczny Operationsset Sebészeti készlet Kit chirurgico @@ -1585,6 +1585,10 @@ %1 zkontroloval srdeční tep: %2 %1 verificou a frequência cardíaca: %2 + + None + Brak + Weak Schwach @@ -2701,5 +2705,377 @@ Снятие жгута ... Togliendo il laccio emostatico ... + + ACE Medical + ACE Opcje medyczne + + + Medical Settings [ACE] + Ustawienia medyczne [ACE] + + + Medical Level + Poziom medyczny + + + What is the medical simulation level? + Jaki jest poziom symulacji medycznej? + + + Basic + Podstawowy + + + Advanced + Zaawansowany + + + Medics setting + Poziom medyków + + + What is the level of detail prefered for medics? + Jaki jest poziom detali medycznych wyświetlanych dla medyków? + + + Disable medics + Wyłącz medyków + + + Enable Litter + Aktywuj odpadki + + + Enable litter being created upon treatment + Twórz odpadki medyczne podczas leczenia + + + Life time of litter objects + Długość życia odpadków + + + 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. + + + Enable Screams + Aktywuj wrzaski + + + Enable screaming by injuried units + Aktywuj wrzeszczenie z bólu przez ranne jednostki + + + Player Damage + Próg obrażeń graczy + + + 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? + + + AI Damage + Próg obrażeń AI + + + 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? + + + AI Unconsciousness + Nieprzytomność AI + + + Allow AI to go unconscious + Czy AI może być nieprzytomne od odniesionych obrażeń? + + + Disabled + Wyłączone + + + Enabled + Włączone + + + Prevent instant death + Wył. natychmiast. śmierć + + + 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ń + + + Bleeding coefficient + Mnożnik krwawienia + + + Coefficient to modify the bleeding speed + Mnożnik modyfikujący prędkość wykrwawiania się + + + Pain coefficient + Mnożnik bólu + + + Coefficient to modify the pain intensity + Mnożnik modyfikujący intensywność bólu + + + Sync status + Synchronizuj status + + + Keep unit status synced. Recommended on. + Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. + + + Provides a medical system for both players and AI. + Moduł ten dostarcza system medyczny dla graczy oraz AI. + + + Advanced Medical Settings [ACE] + Zaawansowane ustawienia medyczne [ACE] + + + Enabled for + Aktywne dla + + + Select what units the advanced medical system will be enabled for + Wybierz dla kogo zaawansowany system medyczny będzie aktywny + + + Players only + Tylko dla graczy + + + Players and AI + Gracze oraz AI + + + Enable Advanced wounds + Akt. zaawansowane rany + + + Allow reopening of bandaged wounds? + Pozwól na otwieranie się zabandażowanych ran? + + + Vehicle Crashes + Obrażenia od kolizji + + + Do units take damage from a vehicle crash? + Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? + + + Allow PAK + Ust. apteczek osobistych + + + Who can use the PAK for full heal? + Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? + + + Anyone + Wszyscy + + + Medics only + Tylko medycy + + + Doctors only + Tylko doktorzy + + + Remove PAK on use + Usuń apteczkę po użyciu + + + Should PAK be removed on usage? + Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? + + + No + Nie + + + Yes + Tak + + + Locations PAK + Ogr. apteczek osobistych + + + Where can the personal aid kit be used? + Gdzie można korzystać z apteczek osobistych? + + + Anywhere + Wszędzie + + + Medical vehicles + Pojazdy medyczne + + + Medical facility + Budynki medyczne + + + Vehicles & facility + Pojazdy i budynki medyczne + + + Disabled + Wyłączone + + + Allow Surgical kit (Adv) + Ust. zestawu chirurg. + + + Who can use the surgical kit? + Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? + + + Remove Surgical kit (Adv) + Usuń zest. chir. po użyciu + + + Should Surgical kit be removed on usage? + Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? + + + Locations Surgical kit (Adv) + Ogr. zestawu chirurg. + + + Where can the Surgical kit be used? + Gdzie można korzystać z zestawu chirurgicznego? + + + Configure the treatment settings from ACE Medical + Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE + + + Revive Settings [ACE] + Ustawienia wskrzeszania [ACE] + + + Enable Revive + Aktywuj wskrzeszanie + + + Enable a basic revive system + Aktywuj podstawowy system wskrzeszania + + + Max Revive time + Maks. czas agonii + + + Max amount of seconds a unit can spend in revive state + Maksymalna długość agonii w sekundach (czas na wskrzeszenie) + + + Max Revive lives + Maks. ilość wskrzeszeń + + + Max amount of lives a unit. 0 or -1 is disabled. + Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. + + + 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. + + + Set Medic Class [ACE] + Ustaw klasę medyka [ACE] + + + List + 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. + + + Is Medic + Klasa medyczna + + + + + + + None + Żadna + + + Regular medic + Zwykły medyk + + + Doctor (Only Advanced Medics) + Doktor (tylko zaawansowani medycy) + + + Assigns the ACE medic class to a unit + Moduł ten przypisuje klasę medyka ACE do jednostek. + + + Set Medical Vehicle [ACE] + Ustaw pojazd medyczny [ACE] + + + List + 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. + + + Is Medical Vehicle + Jest pojazdem med. + + + Whatever or not the objects in the list will be a medical vehicle. + Czy pojazdy z tej listy są pojazdami medycznymi. + + + 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. + + + Set Medical Facility [ACE] + Ustaw budynek medyczny [ACE] + + + Is Medical Facility + Jest budynkiem med. + + + Registers an object as a medical facility + Przypisuje danemu obiektowi status budynku medycznego + + + 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. + + + [ACE] Medical Supply Crate (Basic) + [ACE] Skrzynka z zapasami medycznymi (podstawowa) + + + [ACE] Medical Supply Crate (Advanced) + [ACE] Skrzynka z zapasami medycznymi (zaawansowana) + diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index 833f7bd2f6..dc4ae7d237 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -44,7 +44,7 @@ class CfgVehicles { class GVAR(dagrModule): Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "MicroDAGR Map Fill"; + displayName = "$STR_ACE_Dagr_Module_DisplayName"; function = QFUNC(moduleMapFill); scope = 2; isGlobal = 1; @@ -52,18 +52,18 @@ class CfgVehicles { functionPriority = 0; class Arguments { class MapDataAvailable { - displayName = "MicroDAGR Map Fill"; // Argument label - description = "How much map data is filled on MicroDAGR's "; // Tooltip description - typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL" + displayName = "$STR_ACE_Dagr_MapDataAvailable_DisplayName"; + description = "$STR_ACE_Dagr_MapDataAvailable_Description"; + typeName = "NUMBER"; class values { - class None {name = "Full Satellite + Buildings"; value = MAP_DETAIL_SAT; default = 1;}; - class Side {name = "Topographical + Roads"; value = MAP_DETAIL_TOPOROADS;}; - class Unique {name = "None (Cannot use map view)"; value = MAP_DETAIL_NONE;}; + 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 ModuleDescription: ModuleDescription { - description = "Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.
Source: microDAGR.pbo"; + description = "$STR_ACE_Dagr_Module_Description"; }; }; @@ -73,4 +73,4 @@ class CfgVehicles { MACRO_ADDITEM(ACE_microDAGR,10); }; }; -}; +}; \ No newline at end of file diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index af2b303f2b..c8fa993b46 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -301,5 +301,33 @@ Chiudi MicroDAGR Fechar MicroDAGR + + MicroDAGR Map Fill + Wypełnienie mapy MicroDAGR + + + MicroDAGR Map Fill + Wypełnienie mapy MicroDAGR + + + How much map data is filled on MicroDAGR's + Jak duża część informacji mapy jest załadowana do MicroDAGR? + + + Full Satellite + Buildings + Pełna satelitarna + budynki + + + Topographical + Roads + Topograficzna + drogi + + + None (Cannot use map view) + Żadna (wyłącza ekran mapy) + + + 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 + diff --git a/addons/missileguidance/ACE_Settings.hpp b/addons/missileguidance/ACE_Settings.hpp index d489ef15f3..c04e6c080c 100644 --- a/addons/missileguidance/ACE_Settings.hpp +++ b/addons/missileguidance/ACE_Settings.hpp @@ -5,6 +5,6 @@ class ACE_Settings { isClientSettable = 1; displayName = "$STR_ACE_MissileGuidance"; description = "$STR_ACE_MissileGuidance_Desc"; - values[] = {"Off", "Player Only", "Player and AI"}; + values[] = {"$STR_ACE_MissileGuidance_Off", "$STR_ACE_MissileGuidance_PlayerOnly", "$STR_ACE_MissileGuidance_PlayerAndAi"}; }; }; \ No newline at end of file diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index dcb2be486c..3c551493a5 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -97,5 +97,17 @@ Hellfire II AGM-114K lézer-irányított rakéta Управляемая ракета лазерного наведения Hellfire II AGM-114K + + Off + Wyłącz + + + Player Only + Tylko gracz + + + Player and AI + Gracz oraz AI + diff --git a/addons/missionmodules/CfgFactionClasses.hpp b/addons/missionmodules/CfgFactionClasses.hpp index 792f4d31e3..6f320805fb 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 = "ACE Mission Modules"; + displayName = "$STR_ACE_MissionModules_Category_DisplayName"; }; }; \ No newline at end of file diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index 35a937c660..a08e78f17b 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 = "Ambiance Sounds [ACE]"; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_DisplayName"; icon = QUOTE(PATHTOF(UI\Icon_Module_Ambient_Sounds_ca.paa)); category = "ACE_missionModules"; function = QUOTE(FUNC(moduleAmbianceSound)); @@ -18,51 +18,51 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class soundFiles { - displayName = "Sounds"; - description = "Class names of the ambiance sounds to be played. Seperated by ','"; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_soundFiles_DisplayName"; + description = "$STR_ACE_MissionModules_AmbianceSounds_soundFiles_Description"; typeName = "STRING"; defaultValue = ""; }; class minimalDistance { - displayName = "Minimal Distance"; - description = "Used for calculating a random position and sets the minimal distance between the players and the played sound file(s)"; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_minimalDistance_DisplayName"; + description = "$STR_ACE_MissionModules_AmbianceSounds_minimalDistance_Description"; typeName = "NUMBER"; defaultValue = 400; }; class maximalDistance { - displayName = "Maximum Distance"; - description = "Used for calculating a random position and sets the maximum distance between the players and the played sound file(s)"; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_maximalDistance_DisplayName"; + description = "$STR_ACE_MissionModules_AmbianceSounds_maximalDistance_Description"; typeName = "NUMBER"; defaultValue = 900; }; class minimalDelay { - displayName = "Minimal Delay"; - description = "Minimal delay between sounds played"; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_minimalDelay_DisplayName"; + description = "$STR_ACE_MissionModules_AmbianceSounds_minimalDelay_Description"; typeName = "NUMBER"; defaultValue = 10; }; class maximalDelay { - displayName = "Maximum Delay"; - description = "Maximum delay between sounds played"; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_maximalDelay_DisplayName"; + description = "$STR_ACE_MissionModules_AmbianceSounds_maximalDelay_Description"; typeName = "NUMBER"; defaultValue = 170; }; class followPlayers { - displayName = "Follow Players"; - description = "Follow players. If set to false, loop will play sounds only nearby logic position."; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_followPlayers_DisplayName"; + description = "$STR_ACE_MissionModules_AmbianceSounds_followPlayers_Description"; typeName = "BOOL"; defaultValue = 0; }; class soundVolume { - displayName = "Volume"; - description = "The volume of the sounds played"; + displayName = "$STR_ACE_MissionModules_AmbianceSounds_soundVolume_DisplayName"; + description = "$STR_ACE_MissionModules_AmbianceSounds_soundVolume_Description"; typeName = "NUMBER"; defaultValue = 1; }; }; class ModuleDescription { - description = "Ambiance sounds loop (synced across MP)"; + description = "$STR_ACE_MissionModules_AmbianceSounds_Description"; sync[] = {}; }; }; -}; +}; \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml new file mode 100644 index 0000000000..12d70602c2 --- /dev/null +++ b/addons/missionmodules/stringtable.xml @@ -0,0 +1,73 @@ + + + + + ACE Mission Modules + ACE Moduły misji + + + Ambiance Sounds [ACE] + Dźwięki [ACE] + + + Sounds + Dźwięki + + + Classnames of the ambiance sounds played. Seperated by ','. + Classname-y dźwięków do odtwarzania. Oddzielone przy użyciu ','. + + + Minimal Distance + Minimalny dystans + + + Minimal Distance + Minimalny dystans + + + Maximal Distance + Maksymalny dystans + + + Maximal Distance + Maksymalny dystans + + + Minimal Delay + Minimalne opóźnienie + + + Minimal Delay between sounds played + Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami + + + Maximal Delay + Maksymalne opóźnienie + + + Maximal Delay between sounds played + Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami + + + Follow Players + Podążaj za graczami + + + 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. + + + Volume + Głośność + + + The volume of the sounds played + Głośność odtwarzanych dźwięków + + + Ambiance sounds loop (synced across MP) + Pętla odtwarzania dzwięków (synchronizowana na MP) + + + \ No newline at end of file diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index baf74fa2c4..e4a9d0f2a5 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -50,7 +50,7 @@ class CfgVehicles { class GVAR(module): Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "MK6 Settings"; + displayName = "$STR_ACE_mk6mortar_Module_DisplayName"; function = QFUNC(moduleInit); scope = 2; isGlobal = 0; @@ -58,26 +58,26 @@ class CfgVehicles { functionPriority = 0; class Arguments { class airResistanceEnabled { - displayName = "Air Resistance"; - description = "For Player Shots, Model Air Resistance and Wind Effects"; + displayName = "$STR_ACE_mk6mortar_airResistanceEnabled_DisplayName"; + description = "$STR_ACE_mk6mortar_airResistanceEnabled_Description"; typeName = "BOOL"; defaultValue = 1; }; class allowComputerRangefinder { - displayName = "Allow MK6 Computer"; - description = "Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance)"; + displayName = "$STR_ACE_mk6mortar_allowComputerRangefinder_DisplayName"; + description = "$STR_ACE_mk6mortar_allowComputerRangefinder_Description"; typeName = "BOOL"; defaultValue = 0; }; class allowCompass { - displayName = "Allow MK6 Compass"; - description = "Show the MK6 Digital Compass"; + displayName = "$STR_ACE_mk6mortar_allowCompass_DisplayName"; + description = "$STR_ACE_mk6mortar_allowCompass_Description"; typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription: ModuleDescription { - description = ""; + description = "$STR_ACE_mk6mortar_Module_Description"; }; }; -}; +}; \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index fd2fe4aa4c..37c7d322ad 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -49,5 +49,37 @@ Nabít Carica + + MK6 Settings + Moździerz MK6 - Ustawienia + + + Air Resistance + Opór powietrza + + + 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 + + + Allow MK6 Computer + Komputer 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) + + + Allow MK6 Compass + Kompas MK6 + + + Show the MK6 Digital Compass + Pokaż kompas MK6 + + + + Moduł ten pozwala dostosować ustawienia moździerza MK6. + diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index ec005c8218..3619df195f 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -1,69 +1,75 @@ class CfgVehicles { - class Module_F; + class Logic; + class Module_F: Logic { + class ModuleDescription {}; + }; class ACE_ModuleNameTags : Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Name Tags"; + displayName = "$STR_ACE_NameTags_Module_DisplayName"; function = QFUNC(moduleNameTags); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_NameTags_ca.paa)); class Arguments { class PlayerNamesViewDistance { - displayName = "Player Names View Dist."; - description = "Distance in meters at which player names are shown. Default: 5"; + displayName = "$STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName"; + description = "$STR_ACE_NameTags_PlayerNamesViewDistance_Description"; typeName = "NUMBER"; defaultValue = 5; }; class showNamesForAI { - displayName = "Show name tags for AI?"; - description = "Show the name and rank tags for friendly AI units? Default: Do not force"; + displayName = "$STR_ACE_NameTags_showNamesForAI_DisplayName"; + description = "$STR_ACE_NameTags_showNamesForAI_Description"; typeName = "NUMBER"; class values { class DoNotForce { default = 1; - name = "Do Not Force"; + name = "$STR_ACE_NameTags_DoNotForce"; value = -1; }; class ForceHide { - name = "Force Hide"; + name = "$STR_ACE_NameTags_ForceHide"; value = 0; }; class ForceShow { - name = "Force show"; + name = "$STR_ACE_NameTags_ForceShow"; value = 1; }; }; }; class showVehicleCrewInfo { - displayName = "Show crew info?"; - description = "Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force"; + displayName = "$STR_ACE_NameTags_showVehicleCrewInfo_DisplayName"; + description = "$STR_ACE_NameTags_showVehicleCrewInfo_Description"; typeName = "NUMBER"; class values { class DoNotForce { default = 1; - name = "Do Not Force"; + name = "$STR_ACE_NameTags_DoNotForce"; value = -1; }; class ForceHide { - name = "Force Hide"; + name = "$STR_ACE_NameTags_ForceHide"; value = 0; }; class ForceShow { - name = "Force Show"; + name = "$STR_ACE_NameTags_ForceShow"; value = 1; }; }; }; class showCursorTagForVehicles { - displayName = "Show for Vehicles"; - description = "Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No"; + displayName = "$STR_ACE_NameTags_showCursorTagForVehicles_DisplayName"; + description = "$STR_ACE_NameTags_showCursorTagForVehicles_Description"; typeName = "BOOL"; class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; + class Yes {name = "$STR_ACE_NameTags_Yes"; value = 1;}; + class No {default = 1; name = "$STR_ACE_NameTags_No"; value = 0;}; }; }; + }; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_NameTags_Module_Description"; }; }; -}; +}; \ No newline at end of file diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index dce054a9ec..7a0086bfb6 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -27,7 +27,8 @@ class ACE_Settings { typeName = "SCALAR"; isClientSettable = 1; displayName = "$STR_ACE_NameTags_ShowPlayerNames"; - values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; + 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; @@ -57,7 +58,8 @@ class ACE_Settings { typeName = "SCALAR"; isClientSettable = 1; displayName = "$STR_ACE_NameTags_ShowSoundWaves"; - values[] = {"Disabled", "Use Nametag settings", "Always Show All"}; + description = "$STR_ACE_NameTags_ShowSoundWaves_Desc"; + values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"}; }; class GVAR(PlayerNamesViewDistance) { value = 5; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 8daae5cd5d..251e8eba9a 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -109,5 +109,101 @@ Colore dei nomi non appartenenti al gruppo Cor padrão do nome (unidades fora do grupo) + + Name Tags + Ustawienia imion + + + Player Names View Dist. + Zasięg imion graczy + + + 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 + + + Show name tags for AI? + Imiona AI + + + 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 + + + Do Not Force + Nie wymuszaj + + + Force Hide + Wymuś ukrycie + + + Force show + Wymuś wyświetlanie + + + Show crew info? + Pokaż załogę + + + 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 + + + Show for Vehicles + Pokaż dla pojazdów + + + 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 + + + Yes + Tak + + + No + Nie + + + + 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 + Tylko pod kursorem i po wciśnięciu klawisza + + + Use Nametag settings + Użyj ustawień imion + + + Always Show All + Zawsze pokazuj wszystkie + + + + 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. + diff --git a/addons/optionsmenu/CfgVehicles.hpp b/addons/optionsmenu/CfgVehicles.hpp index 2a19aa2966..52895acb66 100644 --- a/addons/optionsmenu/CfgVehicles.hpp +++ b/addons/optionsmenu/CfgVehicles.hpp @@ -1,9 +1,8 @@ class CfgVehicles { class ACE_Module; - // TODO localization for all the modules class ACE_moduleAllowConfigExport: ACE_Module { scope = 2; - displayName = "Allow Config Export [ACE]"; + displayName = "$STR_AllowConfigExport_Module_DisplayName"; //icon = ""; category = "ACE"; function = QUOTE(DFUNC(moduleAllowConfigExport)); @@ -13,16 +12,15 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class allowconfigurationExport { - displayName = "Allow"; - description = "Allow export of all settings to a server config formatted."; + displayName = "$STR_AllowConfigExport_allowconfigurationExport_DisplayName"; + description = "$STR_AllowConfigExport_allowconfigurationExport_Description"; typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = "When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard."; + description = "$STR_AllowConfigExport_Module_Description"; sync[] = {}; }; }; - }; \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index d5de0c1426..3b649aa6c7 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -241,5 +241,49 @@ Escalar o menu de opções Proporzioni della interfaccia utente + + Allow Config Export [ACE] + Pozwól na eksport ustawień [ACE] + + + Allow + Zezwól + + + Allow export of all settings to a server config formatted. + Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + + + 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. + + + Hide + Ukryj + + + Top right, downwards + Po prawej u góry, w dół + + + Top right, to the left + Po prawej u góry, do lewej + + + Top left, downwards + Po lewej u góry, w dół + + + Top left, to the right + Po lewej u góry, do prawej + + + Top + Góra + + + Bottom + Dół + diff --git a/addons/respawn/CfgVehicleClasses.hpp b/addons/respawn/CfgVehicleClasses.hpp index 8d4eeb139c..19ed9fede8 100644 --- a/addons/respawn/CfgVehicleClasses.hpp +++ b/addons/respawn/CfgVehicleClasses.hpp @@ -1,5 +1,5 @@ class CfgVehicleClasses { class GVAR(Rallypoints) { - displayName = "ACE Respawn"; + displayName = "$STR_ACE_Respawn_EditorCategory"; }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index 2f963a12d3..07ef054b0d 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -1,9 +1,12 @@ class CfgVehicles { - class Module_F; + class Logic; + class Module_F: Logic { + class ModuleDescription {}; + }; class ACE_ModuleRespawn: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Respawn System"; + displayName = "$STR_ACE_Respawn_Module_DisplayName"; function = QFUNC(module); scope = 2; isGlobal = 1; @@ -11,43 +14,60 @@ class CfgVehicles { class Arguments { class SavePreDeathGear { - displayName = "Save Gear?"; - description = "Respawn with the gear a soldier had just before his death?"; + displayName = "$STR_ACE_Respawn_SavePreDeathGear_DisplayName"; + description = "$STR_ACE_Respawn_SavePreDeathGear_Description"; typeName = "BOOL"; - defaultValue = 0; + + class values { + class Yes { name = "$STR_ACE_Respawn_Yes"; value = 1; }; + class No { default = 1; name = "$STR_ACE_Respawn_No"; value = 0; }; + }; }; class RemoveDeadBodiesDisconnected { - displayName = "Remove bodies?"; - description = "Remove player bodies after disconnect?"; + displayName = "$STR_ACE_Respawn_RemoveDeadBodiesDisconnected_DisplayName"; + description = "$STR_ACE_Respawn_RemoveDeadBodiesDisconnected_Description"; typeName = "BOOL"; - defaultValue = 1; + + class values { + class Yes { default = 1; name = "$STR_ACE_Respawn_Yes"; value = 1; }; + class No { name = "$STR_ACE_Respawn_No"; value = 0; }; + }; }; + }; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_Respawn_Module_Description"; }; }; class ACE_ModuleFriendlyFire: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Friendly Fire Messages"; + displayName = "$STR_ACE_FriendlyFire_Module_DisplayName"; function = QFUNC(moduleFriendlyFire); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa)); class Arguments {}; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_FriendlyFire_Module_Description"; + }; }; class ACE_ModuleRallypoint: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Rallypoint System"; + displayName = "$STR_ACE_Rallypoint_Module_DisplayName"; function = QFUNC(moduleRallypoint); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa)); class Arguments {}; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_Rallypoint_Module_Description"; + }; }; // team leader @@ -55,7 +75,7 @@ class CfgVehicles { class CAManBase : Man { class ACE_SelfActions { class ACE_MoveRallypoint { - displayName = "Move Rallypoint"; + displayName = "$STR_ACE_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 539bb4b530..a9965dd2a4 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -145,5 +145,61 @@ Rallypoint Nezávislý Ponto de encontro Independente + + Respawn System + System odrodzenia + + + Save Gear? + Zapisać ekwipunek? + + + Respawn with the gear a soldier had just before his death? + Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? + + + Yes + Tak + + + No + Nie + + + Remove bodies? + Usuwać ciała? + + + Remove player bodies after disconnect? + Usuwaj ciała graczy po rozłączeniu z serwera? + + + + Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). + + + Friendly Fire Messages + Wiadomości Friendly Fire + + + + 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 + + + + 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 + + + ACE Respawn + ACE Odrodzenie + diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 429970b1a0..1e041a3f4f 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -3,63 +3,66 @@ class CfgVehicles { class ACE_ModuleSwitchUnits: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "SwitchUnits System"; + displayName = "$STR_ACE_SwitchUnits_Module_DisplayName"; function = FUNC(module); scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_SwitchUnits_ca.paa)); class Arguments { class SwitchToWest { - displayName = "Switch to West?"; - description = "Allow switching to west units?"; + displayName = "$STR_ACE_SwitchUnits_SwitchToWest_DisplayName"; + description = "$STR_ACE_SwitchUnits_SwitchToWest_Description"; typeName = "BOOL"; class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; + class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; + class No {default = 1; name = "$STR_ACE_SwitchUnits_Yes"; value = 0;}; }; }; class SwitchToEast { - displayName = "Switch to East?"; - description = "Allow switching to east units?"; + displayName = "$STR_ACE_SwitchUnits_SwitchToEast_DisplayName"; + description = "$STR_ACE_SwitchUnits_SwitchToEast_Description"; typeName = "BOOL"; class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; + class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; + class No {default = 1; name = "$STR_ACE_SwitchUnits_No"; value = 0;}; }; }; class SwitchToIndependent { - displayName = "Switch to Independent?"; - description = "Allow switching to independent units?"; + displayName = "$STR_ACE_SwitchUnits_SwitchToIndependent_DisplayName"; + description = "$STR_ACE_SwitchUnits_SwitchToIndependent_Description"; typeName = "BOOL"; class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; + class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; + class No {default = 1; name = "$STR_ACE_SwitchUnits_No"; value = 0;}; }; }; class SwitchToCivilian { - displayName = "Switch to Civilian?"; - description = "Allow switching to civilian units?"; + displayName = "$STR_ACE_SwitchUnits_SwitchToCivilian_DisplayName"; + description = "$STR_ACE_SwitchUnits_SwitchToCivilian_Description"; typeName = "BOOL"; class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; + class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; + class No {default = 1; name = "$STR_ACE_SwitchUnits_No"; value = 0;}; }; }; class EnableSafeZone { - displayName = "Enable Safe Zone?"; - description = "Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone."; + displayName = "$STR_ACE_SwitchUnits_EnableSafeZone_DisplayName"; + description = "$STR_ACE_SwitchUnits_EnableSafeZone_Description"; typeName = "BOOL"; class values { - class Yes {default = 1; name = "Yes"; value = 1;}; - class No {name = "No"; value = 0;}; + class Yes {default = 1; name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; + class No {name = "$STR_ACE_SwitchUnits_No"; value = 0;}; }; }; class SafeZoneRadius { - displayName = "Safe Zone Radius"; - description = "The safe zone around players from a different team. Default: 200"; + displayName = "$STR_ACE_SwitchUnits_SafeZoneRadius_DisplayName"; + description = "$STR_ACE_SwitchUnits_SafeZoneRadius_Description"; typeName = "NUMBER"; defaultValue = 100; }; + }; + class ModuleDescription { + description = "$STR_ACE_SwitchUnits_Module_Description"; }; }; -}; +}; \ No newline at end of file diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index 8121e3e61e..c1e7fc2d57 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -25,5 +25,69 @@ Questa unità è troppo vicina al nemico. Essa unidade está muito perta do inimigo. + + Yes + Tak + + + No + Nie + + + SwitchUnits System + System zmiany stron + + + Switch to West? + Zmiana na Zachód? + + + Allow switching to west units? + Pozwolić zmieniać graczom stronę na Zachód? + + + Switch to East? + Zmiana na Wschód? + + + Allow switching to east units? + Pozwolić zmieniać graczom stronę na Wschód? + + + Switch to Independent? + Zmiana na Ruch Oporu? + + + Allow switching to independent units? + Pozwolić zmieniać stronę na Ruch Oporu? + + + Switch to Civilian? + Zmiana na Cywili? + + + Allow switching to civilian units? + Pozwolić zmieniać stronę na Cywili? + + + Enable Safe Zone? + Aktywuj bezp. strefę? + + + 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. + + + Safe Zone Radius + Promień bezp. strefy + + + The safe zone around players from a different team. Default: 200 + Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200 + + + + + diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 94bcf34317..8436657676 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -69,7 +69,7 @@ class CfgVehicles { class ACE_VehicleLock_ModuleSetup: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Vehicle Lock Setup"; + displayName = "$STR_ACE_VehicleLock_Module_DisplayName"; function = QFUNC(moduleInit); scope = 2; isGlobal = 0; @@ -77,37 +77,37 @@ class CfgVehicles { functionPriority = 0; class Arguments { class LockVehicleInventory { - displayName = "Lock Vehicle Inventory"; - description = "Locks the inventory of locked vehicles"; + displayName = "$STR_ACE_VehicleLock_LockVehicleInventory_DisplayName"; + description = "$STR_ACE_VehicleLock_LockVehicleInventory_Description"; typeName = "BOOL"; defaultValue = 0; }; class VehicleStartingLockState { - displayName = "Vehicle Starting Lock State"; // Argument label - description = "Set lock state for all vehicles (removes ambiguous lock states)"; // Tooltip description + displayName = "$STR_ACE_VehicleLock_VehicleStartingLockState_DisplayName"; // Argument label + description = "$STR_ACE_VehicleLock_VehicleStartingLockState_Description"; // Tooltip description typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL" class values { - class None {name = "As Is"; value = 0; default = 1;}; - class Side {name = "Locked"; value = 1;}; - class Unique {name = "Unlocked"; value = 2;}; + 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 DefaultLockpickStrength { - displayName = "Default Lockpick Strength"; - description = "Default Time to lockpick (in seconds). Default: 10"; + displayName = "$STR_ACE_VehicleLock_DefaultLockpickStrength_DisplayName"; + description = "$STR_ACE_VehicleLock_DefaultLockpickStrength_Description"; typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL" defaultValue = "10"; // Default text filled in the input box }; }; class ModuleDescription: ModuleDescription { - description = "Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.
Source: vehiclelock.pbo"; + description = "$STR_ACE_VehicleLock_Module_Description"; }; }; class ACE_VehicleLock_ModuleSyncedAssign: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "Vehicle Key Assign"; + displayName = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName"; function = QFUNC(moduleSync); scope = 2; isGlobal = 0; @@ -115,8 +115,8 @@ class CfgVehicles { functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { - description = "Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.
Source: vehiclelock.pbo"; + description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description"; sync[] = {"AnyPlayer", "AnyVehicle"}; }; }; -}; +}; \ No newline at end of file diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 6ccfc8347b..4738d045df 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -133,5 +133,57 @@ Una chaive che apr ela maggior parte dei veicoli civili Uma chave que abre a maioria dos veículos civis. + + Vehicle Lock Setup + Ustawienie blokady pojazdów + + + Lock Vehicle Inventory + Zablokuj ekwipunek pojazdu + + + Locks the inventory of locked vehicles + Blokuje dostęp do ekwipunku pojazdu + + + Vehicle Starting Lock State + Początkowy stan blok. poj. + + + Set lock state for all vehicles (removes ambiguous lock states) + Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady) + + + As Is + Jak jest + + + Locked + Zablokowany + + + Unlocked + Odblokowany + + + Default Lockpick Strength + Czas włamywania + + + Default Time to lockpick (in seconds). Default: 10 + Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 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 + + + Vehicle Key Assign + Przydział kluczyka do pojazdu + + + 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 + diff --git a/addons/weather/CfgVehicles.hpp b/addons/weather/CfgVehicles.hpp index 3de925e446..d2b5bddcba 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 = "Weather"; + displayName = "$STR_ACE_Weather_Module_DisplayName"; icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); @@ -12,41 +12,44 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enableServerController { - displayName = "Weather propagation"; - description = "Enables sever side weather propagation"; + displayName = "$STR_ACE_Weather_enableServerController_DisplayName"; + description = "$STR_ACE_Weather_enableServerController_Description"; typeName = "BOOL"; defaultValue = 1; }; class useACEWeather { - displayName = "ACE Weather"; - description = "Overrides the default weather (editor, mission settings) with ACE weather (map based)"; + displayName = "$STR_ACE_Weather_useACEWeather_DisplayName"; + description = "$STR_ACE_Weather_useACEWeather_Description"; typeName = "BOOL"; defaultValue = 1; }; class syncRain { - displayName = "Sync Rain"; - description = "Synchronizes rain"; + displayName = "$STR_ACE_Weather_syncRain_DisplayName"; + description = "$STR_ACE_Weather_syncRain_Description"; typeName = "BOOL"; defaultValue = 1; }; class syncWind { - displayName = "Sync Wind"; - description = "Synchronizes wind"; + displayName = "$STR_ACE_Weather_syncWind_DisplayName"; + description = "$STR_ACE_Weather_syncWind_Description"; typeName = "BOOL"; defaultValue = 1; }; class syncMisc { - displayName = "Sync Misc"; - description = "Synchronizes lightnings, rainbow, fog, ..."; + displayName = "$STR_ACE_Weather_syncMisc_DisplayName"; + description = "$STR_ACE_Weather_syncMisc_Description"; typeName = "BOOL"; defaultValue = 1; }; class serverUpdateInterval { - displayName = "Update Interval"; - description = "Defines the interval (seconds) between weather updates"; + displayName = "$STR_ACE_Weather_serverUpdateInterval_DisplayName"; + description = "$STR_ACE_Weather_serverUpdateInterval_Description"; typeName = "NUMBER"; defaultValue = 60; }; }; + class ModuleDescription { + description = "$STR_ACE_Weather_Module_Description"; + }; }; -}; +}; \ No newline at end of file diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 2008fc7bc1..02c0964e03 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -13,5 +13,61 @@ Zobrazit informace o větru Mostrar informação do vento + + Weather + Pogoda + + + Multiplayer synchronized ACE weather module + Synchronizowana pogoda ACE + + + Weather propagation + Zmiany pogody + + + Enables server side weather propagation + Aktywuje zmiany pogody po stronie serwera + + + ACE Weather + Pogoda ACE + + + 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) + + + Sync Rain + Synchronizuj deszcz + + + Synchronizes rain + Synchronizuje deszcz + + + Sync Wind + Synchronizuj wiatr + + + Synchronizes wind + Synchronizuje wiatr + + + Sync Misc + Synchronizuj różne + + + Synchronizes lightnings, rainbow, fog, ... + Synchronizuje pioruny, tęcze, mgłę, ... + + + Update Interval + Interwał aktualizacji + + + Defines the interval (seconds) between weather updates + Określa interwał (sekundy) pomiędzy aktualizacjami pogody + \ No newline at end of file diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp index 1c24c0a386..2ce9421071 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 = "Wind Deflection"; + displayName = "$STR_ACE_WEATHER_WINDDEFLECTION_DISPLAYNAME"; //WIND DEFLECTION icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); @@ -12,29 +12,32 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; class Arguments { class enabled { - displayName = "Wind Deflection"; - description = "Enables wind deflection"; + displayName = "$STR_ACE_WEATHER_DEFLECTIONMODULE_DISPLAYNAME"; + description = "$STR_ACE_WEATHER_DEFLECTIONMODULE_DESCRIPTION"; typeName = "BOOL"; defaultValue = 1; }; class vehicleEnabled { - displayName = "Vehicle Enabled"; - description = "Enables wind deflection for static/vehicle gunners"; + displayName = "$STR_ACE_WEATHER_VEHICLEENABLED_DISPLAYNAME"; + description = "$STR_ACE_WEATHER_VEHICLEENABLED_DESCRIPTION"; typeName = "BOOL"; defaultValue = 1; }; class simulationInterval { - displayName = "Simulation Interval"; - description = "Defines the interval between every calculation step"; + displayName = "$STR_ACE_WEATHER_SIMULATIONINTERVAL_DISPLAYNAME"; + description = "$STR_ACE_WEATHER_SIMULATIONINTERVAL_DESCRIPTION"; typeName = "NUMBER"; defaultValue = 0.05; }; class simulationRadius { - displayName = "Simulation Radius"; - description = "Defines the radius around the player (in meters) at which projectiles are wind deflected"; + displayName = "$STR_ACE_WEATHER_SIMULATIONRADIUS_DISPLAYNAME"; + description = "$STR_ACE_WEATHER_SIMULATIONRADIUS_DESCRIPTION"; typeName = "NUMBER"; defaultValue = 3000; }; }; + class ModuleDescription { + description = "$STR_ACE_WEATHER_WINDDEFLECTION_DESCRIPTION"; + }; }; -}; +}; \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 4ebcc81bee..515591bd32 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -62,6 +62,46 @@ Umidità: %1% Humidade: %1% + + Wind Deflection + Wpływ wiatru + + + Wind Deflection + Wpływ wiatru + + + Enables wind deflection + Aktywuje wpływ wiatru na trajektorię lotu pocisków + + + Vehicle Enabled + Włączone dla pojazdów + + + Enables wind deflection for static/vehicle gunners + Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach + + + 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 projectiles are wind deflected + Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr + + + Wind influence on projectiles trajectory + Wpływ wiatru na trajektorię lotu pocisków + From 156bba33213e09f8a6a9368d86ae6fdad151ed2f Mon Sep 17 00:00:00 2001 From: Grzegorz Sikora Date: Sat, 9 May 2015 20:37:57 +0200 Subject: [PATCH 0220/1101] Yes/No to BOOL Conflicts: addons/common/CfgVehicles.hpp addons/common/stringtable.xml addons/explosives/stringtable.xml addons/hearing/CfgVehicles.hpp addons/hearing/stringtable.xml addons/interaction/stringtable.xml addons/map/CfgVehicles.hpp addons/map/stringtable.xml addons/medical/CfgVehicles.hpp addons/medical/stringtable.xml addons/nametags/stringtable.xml addons/respawn/stringtable.xml addons/switchunits/CfgVehicles.hpp addons/switchunits/stringtable.xml Conflicts: addons/common/CfgVehicles.hpp addons/common/stringtable.xml addons/explosives/stringtable.xml addons/hearing/stringtable.xml addons/interaction/stringtable.xml addons/map/CfgVehicles.hpp addons/map/stringtable.xml addons/medical/CfgVehicles.hpp addons/medical/stringtable.xml addons/nametags/stringtable.xml addons/respawn/stringtable.xml addons/switchunits/CfgVehicles.hpp addons/switchunits/stringtable.xml --- addons/common/CfgVehicles.hpp | 14 ++------- addons/common/stringtable.xml | 22 +++++--------- addons/explosives/CfgModule.hpp | 24 ++------------- addons/explosives/stringtable.xml | 24 +++++---------- addons/hearing/CfgVehicles.hpp | 11 +++---- addons/hearing/stringtable.xml | 12 ++------ addons/interaction/CfgVehicles.hpp | 5 +--- addons/interaction/stringtable.xml | 38 +++++++---------------- addons/map/CfgVehicles.hpp | 26 ++++------------ addons/map/stringtable.xml | 8 ----- addons/medical/CfgVehicles.hpp | 44 ++++----------------------- addons/medical/stringtable.xml | 48 ++++++++++-------------------- addons/nametags/CfgVehicles.hpp | 5 +--- addons/nametags/stringtable.xml | 34 ++++++++------------- addons/respawn/CfgVehicles.hpp | 12 ++------ addons/respawn/stringtable.xml | 10 ------- addons/switchunits/CfgVehicles.hpp | 25 ++++------------ addons/switchunits/stringtable.xml | 8 ----- 18 files changed, 85 insertions(+), 285 deletions(-) diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 70d84b376c..65bf2d7058 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -61,17 +61,7 @@ class CfgVehicles { displayName = "$STR_ACE_Common_CheckPBO_CheckAll_DisplayName"; description = "$STR_ACE_Common_CheckPBO_CheckAll_Description"; typeName = "BOOL"; - class values { - class WarnOnce { - default = 1; - name = "$STR_ACE_Common_CheckPBO_CheckAll_No"; - value = 0; - }; - class Warn { - name = "$STR_ACE_Common_CheckPBO_CheckAll_Yes"; - value = 1; - }; - }; + defaultValue = 0; }; class Whitelist { displayName = "$STR_ACE_Common_CheckPBO_Whitelist_DisplayName"; @@ -134,4 +124,4 @@ class CfgVehicles { }; }; }; -}; +}; \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 4ddc0112d8..5b908a9133 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -275,7 +275,7 @@ Désactiver menu commande Выключить командное меню Parancsnoki menü kikapcsolása - Disabilita menù di comando + Disabilita Menù di comando Desabilitar menu de comando @@ -308,11 +308,11 @@ Aceptar peticiones Akceptuj prośby Přijmout žádost + Accetta Richieste Accepter requête Принять запросы Kérések elfogadása Aceitar Pedido - Accetta la richiesta Decline Requests @@ -320,11 +320,11 @@ Rechazar peticiones Ignoruj prośby Zamítnout žádost + Rifiuta Richieste Отклонить запросы Rejeter requête Kérések elutasítása Rejeitar pedido - Rifiuta la richiesta Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. @@ -402,7 +402,7 @@ Hint Background color Hintergrundfarbe der Hinweise Color de fondo de las notificaciones - Colore di sfondo dei suggerimenti + Colore di sfondo dei Suggerimenti Цвет фона всплывающих подсказок Kolor tła powiadomień Notification: couleur de l'arrière plan @@ -414,7 +414,7 @@ The color of the background from the ACE hints. Die Hintergrundfarbe der ACE-Hinweise. El color de fondo de las notificaciones del ACE - Il colore di sfondo dei suggerimenti di ACE. + Il colore di sfondo dei suggerimenti dell'ACE. Цвет фона всплывающих подсказок АСЕ. Kolor tła dla powiadomień ACE Notification ACE: couleur de l'arrière plan @@ -426,7 +426,7 @@ Hint text font color Textfarbe der Hinweise Color del texto de las notificaciones - Il colore del testo dei suggerimenti + Il colore del Testo dei Suggerimenti Цвет шрифта всплывающих подсказок Kolor tekstu powiadomień Notification: couleur du texte @@ -438,7 +438,7 @@ The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. Wähle die Textfarbe für ACE-Hinweise. Die gewählte Farbe wird als Standartfarbe der Hinweise angezeigt, wenn der Hinweis selbst keine spezifische Farbe hat. El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado. - Il colore del testo dei suggerimenti di ACE. Questo è il colore predefinito per tutto il testo mostrato dal sistema di suggerimenti di ACE quando il colore del testo non ha altro colore specificato. + Il colore del testo dei suggerimenti dell'ACE. Questo è il colore standard per tutti i caratteri mostrati dal sistema di suggerimenti dell'ACE, se il colore del testo non è specificato. Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок. Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru. Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications @@ -506,14 +506,6 @@ Check all addons instead of only those of ACE? Sprawdzaj wszystkie addony czy tylko te z ACE? - - No - Tylko ACE - - - Yes - Wszystkie - Whitelist Biała lista diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 50b59fc55d..9159babc2d 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -15,33 +15,13 @@ class ACE_ModuleExplosive: Module_F { displayName = "$STR_ACE_Explosive_RequireSpecialist_DisplayName"; description = "$STR_ACE_Explosive_RequireSpecialist_Description"; typeName = "BOOL"; - class values { - class Yes { - name = "$STR_ACE_Explosive_Yes"; - value = 1; - }; - class No { - default = 1; - name = "$STR_ACE_Explosive_No"; - value = 0; - }; - }; + defaultValue = 0; }; class PunishNonSpecialists { displayName = "$STR_ACE_Explosive_PunishNonSpecialists_DisplayName"; description = "$STR_ACE_Explosive_PunishNonSpecialists_Description"; typeName = "BOOL"; - class values { - class Yes { - default = 1; - name = "$STR_ACE_Explosive_Yes"; - value = 1; - }; - class No { - name = "$STR_ACE_Explosive_No"; - value = 0; - }; - }; + defaultValue = 1; }; }; class ModuleDescription: ModuleDescription { diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 5eb5d28512..42b5160030 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -368,7 +368,7 @@ Wybierz zapalnik Sélectionner une mise à feu Zvolit Detonátor - Seleziona un attivatore + Seleziona un Attivatore Gyújtóeszköz kiválasztása Selecionar um Gatilho Выберите детонатор @@ -392,7 +392,7 @@ Druckplatte Plaque de pression Nášlapná nástraha - Piastra a pressione + Piastra a Pressione Nyomólap Placa de pressão Нажимная плита @@ -404,7 +404,7 @@ Stolperdraht Fil de détente Nástražný drát - Filo a inciampo + Filo a Inciampo Botlódrót Linha de tração Растяжка @@ -440,7 +440,7 @@ Infrarotsensor (Seitenangriff) Capteur IR (de flanc) IR Značkovač (Výbuch stranou) - Sensore IR (attacco laterale) + Sensore IR (Attacco laterale) Infravörös szenzor (Side Attack) Sensor infravermelho (ataque lateral) ИК сенсор (детонация вбок) @@ -452,7 +452,7 @@ Magnetfeldsensor (Bodenangriff) Capteur magnétique (par le bas) Magnetický Senzor (Výbuch ze spoda) - Sensore Magnetico di Prossimità (attacco inferiore) + Sensore Magnetico di Prossimità (Attacco inferiore) Mágneses mező érzékelő (Bottom Attack) Influência magnética (ataque inferior) Магнитный сенсор (детонация вверх) @@ -462,7 +462,7 @@ Keine Sprengladungen auf diesem Auslöser. Ningún explosivo en el detonador. Pas d'explosif à mettre à feu. - Nessun esplosivo + Nessun esplosivo sul sensore. Žádná výbušnina k odpálení. Nincs robbanóanyag a gyújtóeszközhöz kötve. Brak ładunków na zapalnik. @@ -491,7 +491,7 @@ Robbanóanyagok távoli robbantásához Usado para detonar remotamente o explosivo quando solto. Используется для дистанционного подрыва, после смерти оператора. - Usato per attivare a distanza esplosivi al momento del rilascio + Usato per attivare esplosivi al momento del rilascio Pick up @@ -517,14 +517,6 @@ Require explosive specialists to disable explosives? Default: No Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie - - Yes - Tak - - - No - Nie - Punish non-specialists? Karaj nie-specjalistów? diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index d20d067981..6cec04a242 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -98,20 +98,17 @@ class CfgVehicles { class ACE_ModuleHearing: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; - displayName = "$STR_ACE_Hearing_Module_DisplayName"; //Hearing + displayName = "$STR_ACE_Hearing_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"; //Enable combat deafness? - description = "$STR_ACE_Hearing_CombatDeafness_Description"; //Enable combat deafness? + displayName = "$STR_ACE_Hearing_CombatDeafness_DisplayName"; + description = "$STR_ACE_Hearing_CombatDeafness_Description"; typeName = "BOOL"; - class values { - class Yes { name = "$STR_ACE_Hearing_CombatDeafness_Yes"; value = 1; default = 1; }; //yes - class No { name = "$STR_ACE_Hearing_CombatDeafness_No"; value = 0; }; //no - }; + defaultValue = 1; }; }; class ModuleDescription { diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index e532768fd9..ae7bea38a2 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -106,7 +106,7 @@ Vypnout pískání v uších Wyłącz dzwonienie w uszach Fülcsengés letiltása - Disabilita i fischi nelle orecchie + Disabilita il ronzio Desabilitar zumbido de ouvidos @@ -121,17 +121,9 @@ Enable combat deafness? Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów - - Yes - Tak - - - No - Nie - 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. - + \ No newline at end of file diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 9968c490e1..03466c1986 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -14,10 +14,7 @@ class CfgVehicles { displayName = "$STR_ACE_InteractionSystem_EnableTeamManagement_DisplayName"; description = "$STR_ACE_InteractionSystem_EnableTeamManagement_Description"; typeName = "BOOL"; - class values { - class Yes { default = 1; name = "$STR_ACE_InteractionSystem_EnableTeamManagement_Yes"; value = 1;}; - class No { name = "$STR_ACE_InteractionSystem_EnableTeamManagement_No"; value = 0; }; - }; + defaultValue = 1; }; }; class ModuleDescription { diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 153b94a1d9..0e6e89b74c 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -119,7 +119,7 @@ Меню взаимодействия (с собой) Cselekvő menü (saját) Menu de Interação (Individual) - Menù interazione (individuale) + Menù interazione (Individuale) Open / Close Door @@ -263,7 +263,7 @@ Жесты Kézjelek Gestos - Gesti + Segnali gestuali Attack @@ -443,7 +443,7 @@ Někdo tě poklepal na PRAVÉ rameno Вас похлопали по ПРАВОМУ плечу Você foi tocado no ombro - Ti è stato dato un colpetto sulla spalla destra + Ti è stato dato un colpetto sulla spalla You were tapped on the LEFT shoulder. @@ -455,7 +455,7 @@ Někdo tě poklepal na LEVÉ rameno Вас похлопали по ЛЕВОМУ плечу Você foi tocado no ombro. - Ti è stato dato un colpetto sulla spalla sinistra + Ti è stato dato un colpetto sulla spalla Cancel @@ -503,7 +503,7 @@ A földre! Ложись! Abaixe-se! - A terra! + A Terra! Team Management @@ -575,7 +575,6 @@ Přiřadit k červeným Назначить в Красную группу Assigner à rouge - Assegna al team rosso Assign Green @@ -587,7 +586,6 @@ Přiřadit k zeleným Назначить в Зеленую группу Assigner à vert - Assegna al team verde Assign Blue @@ -599,7 +597,6 @@ Přiřadit k modrým Назначить в Синюю группу Assigner à bleu - Assegna al team blu Assign Yellow @@ -611,7 +608,6 @@ Přiřadit ke žlutým Назначить в Желтую группу Assigner à jaune - Assegna al team giallo Join Red @@ -623,7 +619,6 @@ Připojit k červeným Присоединиться к Красной группе Rejoindre rouge - Unirsi al team rosso Join Green @@ -635,7 +630,6 @@ Připojit k zeleným Присоединиться к Зеленой группе Rejoindre vert - Unirsi al team verde Join Blue @@ -647,7 +641,6 @@ Připojit k modrým Присоединиться к Синей группе Rejoindre bleu - Unirsi al team blu Join Yellow @@ -659,7 +652,6 @@ Připojit ke žlutým Присоединиться к Жёлтой группе Rejoindre jaune - Unirsi al team giallo You joined Team %1 @@ -729,7 +721,7 @@ Tecla modificadora Клавиша-модификатор Tecla Modificadora - Tasto modifica + Modifica tasto Módosító billentyű Modifikátor @@ -743,7 +735,7 @@ Hatótávolságon kívül Poza zasięgiem Mimo dosah - Fuori limite + Non in raggio Equipment @@ -766,8 +758,8 @@ Odstrčit Tolás Толкать + Spingi Empurrar - Spingere Interact @@ -778,7 +770,7 @@ Interakcja Interactuar Cselekvés - Interagire + Interagisci Interagir @@ -805,17 +797,9 @@ 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 - - Yes - Tak - - - No - Nie - Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. - + \ No newline at end of file diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 150ac23930..849549e3d1 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -13,37 +13,25 @@ class CfgVehicles { displayName = "$STR_ACE_Map_MapIllumination_DisplayName"; description = "$STR_ACE_Map_MapIllumination_Description"; typeName = "BOOL"; - class values { - class Yes { name = "$STR_ACE_Map_Yes"; value = 1; default = 1; }; - class No { name = "$STR_ACE_Map_No"; value = 0; }; - }; + defaultValue = 1; }; class MapShake { displayName = "$STR_ACE_Map_MapShake_DisplayName"; description = "$STR_ACE_Map_MapShake_Description"; typeName = "BOOL"; - class values { - class Yes { name = "$STR_ACE_Map_Yes"; value = 1; default = 1;}; - class No { name = "$STR_ACE_Map_No"; value = 0; }; - }; + defaultValue = 1; }; class MapLimitZoom { displayName = "$STR_ACE_Map_MapLimitZoom_DisplayName"; description = "$STR_ACE_Map_MapLimitZoom_Description"; typeName = "BOOL"; - class values { - class Yes { name = "$STR_ACE_Map_Yes"; value = 1; }; - class No { name = "$STR_ACE_Map_No"; value = 0; default = 1;}; - }; + defaultValue = 0; }; class MapShowCursorCoordinates { displayName = "$STR_ACE_Map_MapShowCursorCoordinates_DisplayName"; description = "$STR_ACE_Map_MapShowCursorCoordinates_Description"; typeName = "BOOL"; - class values { - class Yes { name = "$STR_ACE_Map_Yes"; value = 1; }; - class No { name = "$STR_ACE_Map_No"; value = 0; default = 1;}; - }; + defaultValue = 0; }; }; class ModuleDescription { @@ -63,16 +51,14 @@ class CfgVehicles { class Interval { displayName = "$STR_ACE_Map_BFT_Interval_DisplayName"; description = "$STR_ACE_Map_BFT_Interval_Description"; + typeName = "NUMBER"; defaultValue = 1; }; class HideAiGroups { displayName = "$STR_ACE_Map_BFT_HideAiGroups_DisplayName"; description = "$STR_ACE_Map_BFT_HideAiGroups_Description"; typeName = "BOOL"; - class values { - class Yes { name = "$STR_ACE_Map_Yes"; value = 1; }; - class No { name = "$STR_ACE_Map_No"; value = 0; default = 1; }; - }; + defaultValue = 0; }; }; class ModuleDescription { diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 0c25016653..c93ff4c286 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -13,14 +13,6 @@ Calculate dynamic map illumination based on light conditions? Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych - - Yes - Tak - - - No - Nie - Map shake? Drżenie mapy diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index aac43de0ed..6c37c5cfd9 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -191,11 +191,8 @@ class CfgVehicles { class consumeItem_PAK { displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_DisplayName"; description = "$STR_ACE_AdvancedMedicalSettings_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; }; - }; + typeName = "BOOL"; + defaultValue = 1; }; class useLocation_PAK { displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_DisplayName"; @@ -336,18 +333,8 @@ class CfgVehicles { class enabled { displayName = "$STR_ACE_AssignMedicVehicle_enabled_DisplayName"; description = "$STR_ACE_AssignMedicVehicle_enabled_Description"; - typeName = "NUMBER"; - class values { - class none { - name = "$STR_ACE_Medical_No"; - value = 0; - }; - class medic { - name = "$STR_ACE_Medical_Yes"; - value = 1; - default = 1; - }; - }; + typeName = "BOOL"; + defaultValue = 1; }; }; class ModuleDescription { @@ -1016,25 +1003,4 @@ class CfgVehicles { }; }; }; -}; - - - - - - - - - - - - - - - - - - - - - +}; \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 50f3d67110..0eb23d57d4 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -83,7 +83,7 @@ Injecter de la morphine Morfium beadása Injetar Morfina - Inietta morfina + Inietta Morfina Transfuse Blood @@ -95,7 +95,7 @@ Transfusion Infúzió (vér) Transfundir Sangue - Trasfusione di sangue + Effettua trasfusione di sangue Transfuse Plasma @@ -106,7 +106,7 @@ Transfuser du Plasma Перелить плазму Infúzió (vérplazma) - Trasfusione di Plasma + Effettua trasfusione di plasma Transfundir Plasma @@ -118,7 +118,7 @@ Transfuser de la solution saline Перелить физраствор Infúzió (sós víz) - Trasfusione di soluzione salina + Effettua trasfusione di soluzione salina Transfundir Soro @@ -274,7 +274,7 @@ Transfusion de saline ... Переливание физраствора ... Infúzió sós vizzel ... - Effettuo la rasfusione di soluzione salina + Effettuo la rasfusione di salina Transfundindo Soro... @@ -370,7 +370,7 @@ QuikClot Hémostatique QuikClot - QuikClot (polvere emostatica) + QuikClot(polvere emostatica) QuikClot @@ -632,7 +632,7 @@ Natychmiastowy Urgence Immédiate Sofort - Okamžitý + Okamžiý Azonnali Immediata Imediato @@ -801,7 +801,7 @@ Bandage fait d'un matériel spécial utilisé pour couvrir une blessure, qui peut etre appliqué dès que le saignement a été stoppé. Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. Egy különleges anyagú kötszer sebek betakarására, amelyet a vérzés elállítása után helyeznek fel. - Una benda apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. + Una benda apposita, utilizzata per coprire una ferita, la quale è applicata sopra di essa una volta fermata l'emorragia. Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. @@ -825,7 +825,7 @@ Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer - Usato su ferite medie o larghe per fermare emorragie. + Usato su medie o larghe ferite per fermare emorragie. Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. Používá se k zastavení středních až silnějších krvácení @@ -850,7 +850,7 @@ Bandaż (elastyczny) Obvaz (elastický) Rögzító kötszer - Benda (elastica) + Benda (Elastica) Bandagem (Elástica) @@ -861,7 +861,7 @@ Bandage compressif élastique Zestaw bandaży elastycznych. Rugalmas kötszercsomag, "rögzítő" - Kit di bendaggio, elastico + Kit bendaggio, elastico Kit de Bandagem, Elástica Sada obvazů, Elastická @@ -873,7 +873,7 @@ Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada Egyenletes nyomást és támogatást biztosít a sebesült felületnek. - Permette di comprimere e aiutare la zone ferita. + Permette di comprimevere e aiutare la zone ferita. Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. Hodí se k fixačním účelům a to i v oblastech kloubů. @@ -958,7 +958,7 @@ Atropin Autoinjektor Autoinjektor atropin Atropin autoinjektor - Autoiniettore di atropina + Autoiniettore di Atropina Auto-injetor de Atropina @@ -994,7 +994,7 @@ Epiniphrin Autoinjektor Autoinjektor adrenalin Epinefrin autoinjektor - Autoiniettore di epinefrina + Autoiniettore di Epinefrina Auto-injetor de epinefrina @@ -1271,7 +1271,6 @@ Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz Kit de primeiros socorros para sutura ou tratamentos avançados Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli - Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. Use Personal Aid Kit @@ -1283,7 +1282,6 @@ Elsősegélycsomag használata Usar o kit de primeiros socorros Použít osobní lékárničku - Usa il pronto soccorso personale Surgical Kit @@ -1783,7 +1781,7 @@ He's lost some blood - Ha perso sangue + Ha perso molto sangue Ha perdido un poco de sangre Есть кровопотеря Er hat etwas Blut verloren @@ -1803,7 +1801,6 @@ Il a perdu beaucoup de sang Ztratil hodně krve Ele perdeu muito sangue - Ha perso molto sangue He hasn't lost blood @@ -2247,7 +2244,6 @@ Styl menu (Zdravotní) Estilo do menu (Médico) Menü stílusa (Orvosi) - Stile del menù (medico) Select the type of menu you prefer; default 3d selections or radial. @@ -2259,7 +2255,6 @@ Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. Zvolte typ menu: základní 3D výběr nebo kruhový - Seleziona il tipo di menù che preferisci: selezione 3d predefinita o radiale. Selections (3d) @@ -2271,7 +2266,6 @@ Seleção (3d) Választékok (3D) 3D výběr - Selezione (3D) Radial @@ -2283,7 +2277,6 @@ Radial Kerek Kruhový - Radiale Scrape @@ -2691,7 +2684,6 @@ Tratando ... Tratando... Ošetřuji ... - Curando ... Removing Tourniquet ... @@ -2703,7 +2695,6 @@ Érszorító eltávolítása ... Sundavám škrtidlo ... Снятие жгута ... - Togliendo il laccio emostatico ... ACE Medical @@ -2897,14 +2888,6 @@ Should PAK be removed on usage? Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? - - No - Nie - - - Yes - Tak - Locations PAK Ogr. apteczek osobistych @@ -3079,3 +3062,4 @@ + \ No newline at end of file diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 3619df195f..a4ef577ecf 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -62,10 +62,7 @@ class CfgVehicles { displayName = "$STR_ACE_NameTags_showCursorTagForVehicles_DisplayName"; description = "$STR_ACE_NameTags_showCursorTagForVehicles_Description"; typeName = "BOOL"; - class values { - class Yes {name = "$STR_ACE_NameTags_Yes"; value = 1;}; - class No {default = 1; name = "$STR_ACE_NameTags_No"; value = 0;}; - }; + defaultValue = 0; }; }; class ModuleDescription: ModuleDescription { diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 251e8eba9a..070257e807 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -70,8 +70,8 @@ Zobrazit info o posádce vozidla Показывать информацию об экипаже Jármű-legénység adatainak mutatása + Mostra le informazioni sull'equipaggio del veicolo Mostrar tripulantes - Mostra l'elenco del personale a bordo Show name tags for AI units @@ -82,7 +82,7 @@ Wyświetl imiona jednostek AI Afficher les noms des IA Névcímkék mutatása MI-egységeknél - Mostra i nomi delle le unità AI + Mostra le tag nomi per le unità AI Mostrar nomes para unidades de IA @@ -94,7 +94,7 @@ Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) Afficher "qui parle" (si noms affichés) "Hanghullámok" mutatása (a nevek mutatása szükséges) - Mostra movimento audio (richiede mostra nomi abilitato) + Mostra barra movimento audio (richiede mostra nomi abilitato) Mostrar onda sonora (requer nome de jogadores) @@ -106,7 +106,7 @@ Couleur d'affichage par défaut (si dans aucun groupe) Standardní barva jmenovek (pro nečleny jednotky) Alap névcímke-szín (csoporton kívüli személyek) - Colore dei nomi non appartenenti al gruppo + Colore nametag di default (membri non del gruppo) Cor padrão do nome (unidades fora do grupo) @@ -157,51 +157,43 @@ 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 - - Yes - Tak - - - No - Nie - 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 Tylko pod kursorem i po wciśnięciu klawisza - + Use Nametag settings Użyj ustawień imion - + Always Show All Zawsze pokazuj wszystkie - + 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. diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index 07ef054b0d..00f0bd4493 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -17,22 +17,14 @@ class CfgVehicles { displayName = "$STR_ACE_Respawn_SavePreDeathGear_DisplayName"; description = "$STR_ACE_Respawn_SavePreDeathGear_Description"; typeName = "BOOL"; - - class values { - class Yes { name = "$STR_ACE_Respawn_Yes"; value = 1; }; - class No { default = 1; name = "$STR_ACE_Respawn_No"; value = 0; }; - }; + defaultValue = 0; }; class RemoveDeadBodiesDisconnected { displayName = "$STR_ACE_Respawn_RemoveDeadBodiesDisconnected_DisplayName"; description = "$STR_ACE_Respawn_RemoveDeadBodiesDisconnected_Description"; typeName = "BOOL"; - - class values { - class Yes { default = 1; name = "$STR_ACE_Respawn_Yes"; value = 1; }; - class No { name = "$STR_ACE_Respawn_No"; value = 0; }; - }; + defaultValue = 1; }; }; class ModuleDescription: ModuleDescription { diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index a9965dd2a4..5351d0f3bc 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -35,7 +35,6 @@ Téléportation à la base Teletransportar para a Base Bázisra teleportálás - Teleporta alla base Teleport to Rallypoint @@ -47,7 +46,6 @@ Téléporation au point de ralliement Teletransportar para o ponto de encontro Gyülekezőpontra teleportálás - Teleporta al rallypoint Teleported to Base @@ -157,14 +155,6 @@ Respawn with the gear a soldier had just before his death? Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? - - Yes - Tak - - - No - Nie - Remove bodies? Usuwać ciała? diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 1e041a3f4f..48271c6428 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -13,46 +13,31 @@ class CfgVehicles { displayName = "$STR_ACE_SwitchUnits_SwitchToWest_DisplayName"; description = "$STR_ACE_SwitchUnits_SwitchToWest_Description"; typeName = "BOOL"; - class values { - class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; - class No {default = 1; name = "$STR_ACE_SwitchUnits_Yes"; value = 0;}; - }; + defaultValue = 0; }; class SwitchToEast { displayName = "$STR_ACE_SwitchUnits_SwitchToEast_DisplayName"; description = "$STR_ACE_SwitchUnits_SwitchToEast_Description"; typeName = "BOOL"; - class values { - class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; - class No {default = 1; name = "$STR_ACE_SwitchUnits_No"; value = 0;}; - }; + defaultValue = 0; }; class SwitchToIndependent { displayName = "$STR_ACE_SwitchUnits_SwitchToIndependent_DisplayName"; description = "$STR_ACE_SwitchUnits_SwitchToIndependent_Description"; typeName = "BOOL"; - class values { - class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; - class No {default = 1; name = "$STR_ACE_SwitchUnits_No"; value = 0;}; - }; + defaultValue = 0; }; class SwitchToCivilian { displayName = "$STR_ACE_SwitchUnits_SwitchToCivilian_DisplayName"; description = "$STR_ACE_SwitchUnits_SwitchToCivilian_Description"; typeName = "BOOL"; - class values { - class Yes {name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; - class No {default = 1; name = "$STR_ACE_SwitchUnits_No"; value = 0;}; - }; + defaultValue = 0; }; class EnableSafeZone { displayName = "$STR_ACE_SwitchUnits_EnableSafeZone_DisplayName"; description = "$STR_ACE_SwitchUnits_EnableSafeZone_Description"; typeName = "BOOL"; - class values { - class Yes {default = 1; name = "$STR_ACE_SwitchUnits_Yes"; value = 1;}; - class No {name = "$STR_ACE_SwitchUnits_No"; value = 0;}; - }; + defaultValue = 1; }; class SafeZoneRadius { displayName = "$STR_ACE_SwitchUnits_SafeZoneRadius_DisplayName"; diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index c1e7fc2d57..cdde0f8ff1 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -25,14 +25,6 @@ Questa unità è troppo vicina al nemico. Essa unidade está muito perta do inimigo. - - Yes - Tak - - - No - Nie - SwitchUnits System System zmiany stron From 63c5308cd95a5396626f0986c71c6b9e060ed131 Mon Sep 17 00:00:00 2001 From: Grzegorz Sikora Date: Sat, 9 May 2015 20:43:55 +0200 Subject: [PATCH 0221/1101] Missed one Yes/no to BOOL --- addons/vehiclelock/CfgVehicles.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 8436657676..60cb67d4c4 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -83,9 +83,9 @@ class CfgVehicles { defaultValue = 0; }; class VehicleStartingLockState { - displayName = "$STR_ACE_VehicleLock_VehicleStartingLockState_DisplayName"; // Argument label - description = "$STR_ACE_VehicleLock_VehicleStartingLockState_Description"; // Tooltip description - typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL" + displayName = "$STR_ACE_VehicleLock_VehicleStartingLockState_DisplayName"; + description = "$STR_ACE_VehicleLock_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;}; @@ -95,8 +95,8 @@ class CfgVehicles { class DefaultLockpickStrength { displayName = "$STR_ACE_VehicleLock_DefaultLockpickStrength_DisplayName"; description = "$STR_ACE_VehicleLock_DefaultLockpickStrength_Description"; - typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL" - defaultValue = "10"; // Default text filled in the input box + typeName = "NUMBER"; + defaultValue = "10"; }; }; class ModuleDescription: ModuleDescription { From 5bbf875ef28a6afa912936f14e17eac51efc9f5f Mon Sep 17 00:00:00 2001 From: GieNkoV Date: Tue, 12 May 2015 04:54:23 +0200 Subject: [PATCH 0222/1101] Tabs removed Conflicts: addons/missileguidance/stringtable.xml addons/optionsmenu/stringtable.xml --- addons/missileguidance/stringtable.xml | 226 +++++----- addons/optionsmenu/stringtable.xml | 577 ++++++++++++------------- 2 files changed, 401 insertions(+), 402 deletions(-) diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 3c551493a5..ef9bdeea26 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,113 +1,113 @@ - - - - - Advanced Missile Guidance - Guiado Avanzado de Misiles - Guidage avancé de missile - Zaawansowane naprowadzanie rakiet - Erweitertes Raketenlenksystem - Pokročilé řízení střel - Guida missili avanzata - Avançado Missile Guidance - Fejlett rakétairányító - Продвинутое наведение ракет - - - Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. - Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. - Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. - Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. - 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. - 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. - 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 - Hydra-70 DAGR - Hydra-70 DAGR Rackete - Hydra-70 DAGR - Missile Hydra-70 DAGR - Míssil Hydra-70 DAGR - Hydra-70 DAGR rakéta - Hydra-70 DAGR - - - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - - - Hydra-70 DAGR Laser Guided Missile - Misil guiado por láser Hydra-70 DAGR - Missile à guidage laser Hydra-70 DAGR - Laserowo naprowadzana rakieta Hydra-70 DAGR - Hydra-70 DAGR lasergelenkte Rakete - Hydra-70 DAGR laserem naváděná střela - Hydra-70 DAGR missile guida laser - Míssil guiado a laser Hydra-70 DAGR - 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 - Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Missile Hellfire II AGM-114K - Míssil Hellfire II AGM-114K - Hellfire II AGM-114K rakéta - Hellfire II AGM-114K - - - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - 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 - Laserowo naprowadzana rakieta Hellfire II AGM-114K - Hellfire II AGM-114K Lasergelenkte Rakete - Hellfire II AGM-114K laserem naváděná střela - Missile guida laser Hellfire II AGM-114K - Míssil guiado a laser Hellfire II AGM-114K - Hellfire II AGM-114K lézer-irányított rakéta - Управляемая ракета лазерного наведения Hellfire II AGM-114K - - - Off - Wyłącz - - - Player Only - Tylko gracz - - - Player and AI - Gracz oraz AI - - - + + + + + Advanced Missile Guidance + Guiado Avanzado de Misiles + Guidage avancé de missile + Zaawansowane naprowadzanie rakiet + Erweitertes Raketenlenksystem + Pokročilé řízení střel + Guida missili avanzata + Avançado Missile Guidance + Fejlett rakétairányító + Продвинутое наведение ракет + + + Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. + Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. + Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. + Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. + 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. + 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. + 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 + Hydra-70 DAGR + Hydra-70 DAGR Rackete + Hydra-70 DAGR + Missile Hydra-70 DAGR + Míssil Hydra-70 DAGR + Hydra-70 DAGR rakéta + Hydra-70 DAGR + + + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + + + Hydra-70 DAGR Laser Guided Missile + Misil guiado por láser Hydra-70 DAGR + Missile à guidage laser Hydra-70 DAGR + Laserowo naprowadzana rakieta Hydra-70 DAGR + Hydra-70 DAGR lasergelenkte Rakete + Hydra-70 DAGR laserem naváděná střela + Hydra-70 DAGR missile guida laser + Míssil guiado a laser Hydra-70 DAGR + 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 + Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Missile Hellfire II AGM-114K + Míssil Hellfire II AGM-114K + Hellfire II AGM-114K rakéta + Hellfire II AGM-114K + + + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + 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 + Laserowo naprowadzana rakieta Hellfire II AGM-114K + Hellfire II AGM-114K Lasergelenkte Rakete + Hellfire II AGM-114K laserem naváděná střela + Missile guida laser Hellfire II AGM-114K + Míssil guiado a laser Hellfire II AGM-114K + Hellfire II AGM-114K lézer-irányított rakéta + Управляемая ракета лазерного наведения Hellfire II AGM-114K + + + Off + Wyłącz + + + Player Only + Tylko gracz + + + Player and AI + Gracz oraz AI + + + diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 3b649aa6c7..f14a97b460 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,289 +1,288 @@ - - - - - ACE Options - ACE Optionen - Opciones ACE - Ustawienia ACE - ACE Nastavení - Options ACE - ACE Настройки - Opções do ACE - ACE Beállítások - Opzioni ACE - - - Fix Animation - Behebe Animation - Arreglar animación - Фикс анимации - Opravit animace - Napraw animację - Corriger animation - Animációk kijavítása - Fixa l'animazione - Arrumar Animação - - - Reset All - Alles zurücksetzen - Reiniciar todo - Полный сброс - Vyresetovat vše - Resetuj wszystko - Défaut - Minden visszaállítása - Resetta tutto - Resetar Tudo - - - Colors - Couleurs - Farben - Colores - Цвета - Barvy - Kolory - Színek - Colori - Cores - - - Options - Optionen - Opciones - Opcje - Nastavení - Options - Настройки - Opções - Beállítások - Opzioni - - - Values - Valores - Значения - Hodnoty - Wartości - Valeurs - Werte - Értékek - Valori - Valores - - - Yes - Ja - Si - Tak - Ano - Oui - Да - Igen - Sim - Si - - - No - Nein - No - Nie - Ne - Non - Нет - Nem - Não - No - - - Setting: - Nastavení: - Einstellung: - Установки: - Ajuste: - Ustaw: - Paramètres - Opció: - Parametri: - Opção: - - - Export - Exportieren - Exportar - Экспорт - Exportovat - Eksport - Exporter - Exportálás - Esporta - Exportar - - - Open Export Menu - Öffne Exportmenü - Abrir menú de exportación - Открыть меню экспорта - Otevřít exportovací menu - Otwórz menu eksportowania - Ouvrir le menu d'exportation - Exportálási menü megnyitása - Apri menù esportazione - Abrir menu de exportação - - - String input. - Zeichenketteneingabe - Introducir cadena de texto. - Строчный ввод. - Wpisywanie tekstu. - Vkládání textu. - Entrée - String bevitel. - Stringa di unput. - Input de String - - - Array. Seperate elements by using ,. - Array. Teile unterschiedliche Elemente mit ,. - Matriz. Separa elementos usando ,. - Массив. Разделяйте элемены, используя запятую. - Tablica. Oddziel elementy używając ,. - Tableau. Séparation par ,. - Tabulka. Odděl elementy použitím ,. - Array. Válasszad el az elemeket vesszővel. - Array. Separa gli elementi usando ,. - Vetor. Separe elementos usando *,*. - - - Number - Zahl - Número - Число - Číslo - Cyfra - Nombre - Szám - Numero - Número - - - Uknown input type - Unbekannter Eingabetyp - Tipo de entrada desconocida - Неизвестный тип ввода - Neznámý vstup - Nieznany rodzaj danych - Type d'entrée inconnue - Ismeretlen beviteli típus - Input inserito sconosciuto - Tipo desonhecido de input - - - Save input - Speichere Eingabe - Guardar entrada - Сохранить ввод - Uložit vstup - Zapisz dane - Sauvegarder - Bevitel elmentése - Salva input - Salvar input - - - Include Client Settings - Schließe Client-Einstellungen ein - Incluir configuración de cliente - Включить настройки клиента - Zahrnout nastavení klienta - Zawrzyj ustawienia klienta - Inclure paramètres client - Kliens-beállítások melléklése - Includi i parametri del client - Incluir opções do cliente - - - Exclude Client Settings - Schließe Client-Einstellungen aus - Excluir configuración de cliente - Исключить настройки клиента - Nezahrnout nastavení klienta - Wyklucz ustawienia klienta - Exclure paramètres client - Kliens-beállítások elhagyása - Escludi i parametri del client - Excluir opções do cliente - - - Settings exported to clipboard - Einstellungen in die Zwischenablage exportiert - Configuración exportada al portapapeles - Настройки экспортированы в буфер обмена - Nastevení exportována do schránky - Ustawienia wyeksportowano do schowka - Paramètres exportés dans le presse papier - Beállítások exportálva a vágólapba - Parametri esportati alla clipboard - Opções exportadas para o clipboard. - - - Option Menu UI Scaling - Menu option: taille de l'UI - Skalowanie UI menu ustawień - Měřítko UI v menu nastavení - Размер интерфейса меню настройки - Opción de escalado del menú IU - UI Skalierung - Beállításmenü kezelőfelületének skálázása - Escalar o menu de opções - Proporzioni della interfaccia utente - - - Allow Config Export [ACE] - Pozwól na eksport ustawień [ACE] - - - Allow - Zezwól - - - Allow export of all settings to a server config formatted. - Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. - - - 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. - - - Hide - Ukryj - - - Top right, downwards - Po prawej u góry, w dół - - - Top right, to the left - Po prawej u góry, do lewej - - - Top left, downwards - Po lewej u góry, w dół - - - Top left, to the right - Po lewej u góry, do prawej - - - Top - Góra - - - Bottom - Dół - - - + + + + + ACE Options + ACE Optionen + Opciones ACE + Ustawienia ACE + ACE Nastavení + Options ACE + ACE Настройки + Opções do ACE + ACE Beállítások + Opzioni ACE + + + Fix Animation + Behebe Animation + Arreglar animación + Фикс анимации + Opravit animace + Napraw animację + Corriger animation + Animációk kijavítása + Fixa l'animazione + Arrumar Animação + + + Reset All + Alles zurücksetzen + Reiniciar todo + Полный сброс + Vyresetovat vše + Resetuj wszystko + Défaut + Minden visszaállítása + Resetta tutto + Resetar Tudo + + + Colors + Couleurs + Farben + Colores + Цвета + Barvy + Kolory + Színek + Colori + Cores + + + Options + Optionen + Opciones + Opcje + Nastavení + Options + Настройки + Opções + Beállítások + Opzioni + + + Values + Valores + Значения + Hodnoty + Wartości + Valeurs + Werte + Értékek + Valori + Valores + + + Yes + Ja + Si + Tak + Ano + Oui + Да + Igen + Sim + Si + + + No + Nein + No + Nie + Ne + Non + Нет + Nem + Não + No + + + Setting: + Nastavení: + Einstellung: + Установки: + Ajuste: + Ustaw: + Paramètres + Opció: + Parametri: + Opção: + + + Export + Exportieren + Exportar + Экспорт + Exportovat + Eksport + Exporter + Exportálás + Esporta + Exportar + + + Open Export Menu + Öffne Exportmenü + Abrir menú de exportación + Открыть меню экспорта + Otevřít exportovací menu + Otwórz menu eksportowania + Ouvrir le menu d'exportation + Exportálási menü megnyitása + Apri menù esportazione + Abrir menu de exportação + + + String input. + Zeichenketteneingabe + Introducir cadena de texto. + Строчный ввод. + Wpisywanie tekstu. + Vkládání textu. + Entrée + String bevitel. + Stringa di unput. + Input de String + + + Array. Seperate elements by using ,. + Array. Teile unterschiedliche Elemente mit ,. + Matriz. Separa elementos usando ,. + Массив. Разделяйте элемены, используя запятую. + Tablica. Oddziel elementy używając ,. + Tableau. Séparation par ,. + Tabulka. Odděl elementy použitím ,. + Array. Válasszad el az elemeket vesszővel. + Array. Separa gli elementi usando ,. + Vetor. Separe elementos usando *,*. + + + Number + Zahl + Número + Число + Číslo + Cyfra + Nombre + Szám + Numero + Número + + + Uknown input type + Unbekannter Eingabetyp + Tipo de entrada desconocida + Неизвестный тип ввода + Neznámý vstup + Nieznany rodzaj danych + Type d'entrée inconnue + Ismeretlen beviteli típus + Input inserito sconosciuto + Tipo desonhecido de input + + + Save input + Speichere Eingabe + Guardar entrada + Сохранить ввод + Uložit vstup + Zapisz dane + Sauvegarder + Bevitel elmentése + Salva input + Salvar input + + + Include Client Settings + Schließe Client-Einstellungen ein + Incluir configuración de cliente + Включить настройки клиента + Zahrnout nastavení klienta + Zawrzyj ustawienia klienta + Inclure paramètres client + Kliens-beállítások melléklése + Includi i parametri del client + Incluir opções do cliente + + + Exclude Client Settings + Schließe Client-Einstellungen aus + Excluir configuración de cliente + Исключить настройки клиента + Nezahrnout nastavení klienta + Wyklucz ustawienia klienta + Exclure paramètres client + Kliens-beállítások elhagyása + Escludi i parametri del client + Excluir opções do cliente + + + Settings exported to clipboard + Einstellungen in die Zwischenablage exportiert + Configuración exportada al portapapeles + Настройки экспортированы в буфер обмена + Nastevení exportována do schránky + Ustawienia wyeksportowano do schowka + Paramètres exportés dans le presse papier + Beállítások exportálva a vágólapba + Parametri esportati alla clipboard + Opções exportadas para o clipboard. + + + Option Menu UI Scaling + Menu option: taille de l'UI + Skalowanie UI menu ustawień + Měřítko UI v menu nastavení + Размер интерфейса меню настройки + Opción de escalado del menú IU + UI Skalierung + Beállításmenü kezelőfelületének skálázása + Escalar o menu de opções + + + Allow Config Export [ACE] + Pozwól na eksport ustawień [ACE] + + + Allow + Zezwól + + + Allow export of all settings to a server config formatted. + Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + + + 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. + + + Hide + Ukryj + + + Top right, downwards + Po prawej u góry, w dół + + + Top right, to the left + Po prawej u góry, do lewej + + + Top left, downwards + Po lewej u góry, w dół + + + Top left, to the right + Po lewej u góry, do prawej + + + Top + Góra + + + Bottom + Dół + + + From 44466e8be8c201ba880ee7f806ae9df9842a6122 Mon Sep 17 00:00:00 2001 From: Grzegorz Sikora Date: Tue, 12 May 2015 02:29:32 +0200 Subject: [PATCH 0223/1101] Remove tabs and repair errors @Glowbal found Conflicts: addons/map/CfgVehicles.hpp addons/medical/CfgVehicles.hpp Conflicts: addons/map/CfgVehicles.hpp addons/medical/CfgVehicles.hpp addons/optionsmenu/stringtable.xml --- addons/captives/stringtable.xml | 8 + addons/common/CfgVehicles.hpp | 8 +- addons/explosives/CfgModule.hpp | 4 +- addons/hearing/CfgVehicles.hpp | 2 +- addons/interaction/CfgVehicles.hpp | 2 +- addons/javelin/CfgVehicles.hpp | 10 +- addons/javelin/CfgWeapons.hpp | 6 +- addons/map/CfgVehicles.hpp | 6 +- addons/medical/CfgVehicles.hpp | 26 +- addons/medical/stringtable.xml | 374 +++++++++++++++- addons/missionmodules/stringtable.xml | 20 +- addons/mk6mortar/script_component.hpp | 4 +- addons/mk6mortar/stringtable.xml | 32 ++ addons/nametags/CfgVehicles.hpp | 2 +- addons/optionsmenu/stringtable.xml | 620 ++++++++++++++------------ addons/respawn/CfgVehicles.hpp | 6 +- addons/switchunits/CfgVehicles.hpp | 4 +- addons/winddeflection/CfgVehicles.hpp | 24 +- addons/winddeflection/stringtable.xml | 20 +- 19 files changed, 824 insertions(+), 354 deletions(-) diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 07cf780e19..0d01cbafc6 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -201,5 +201,13 @@ 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 + + Make Unit Surrender + Poddaj się! + + + 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 + diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 65bf2d7058..1adf622494 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -74,7 +74,7 @@ class CfgVehicles { }; class ModuleDescription: ModuleDescription { description = "$STR_ACE_Common_CheckPBO_Description"; - }; + }; }; class ACE_ModuleLSDVehicles: Module_F { @@ -89,8 +89,8 @@ class CfgVehicles { }; class ModuleDescription: ModuleDescription { description = "$STR_ACE_Common_LSDVehicles_Description"; - sync[] = {"AnyVehicle"}; - }; + sync[] = {"AnyVehicle"}; + }; }; class Box_NATO_Support_F; @@ -124,4 +124,4 @@ class CfgVehicles { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 9159babc2d..52f70ea3af 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -24,7 +24,7 @@ class ACE_ModuleExplosive: Module_F { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { - description = "$STR_ACE_Explosive_Module_Description"; + class ModuleDescription: ModuleDescription { + description = "$STR_ACE_Explosive_Module_Description"; }; }; \ No newline at end of file diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 6cec04a242..16bb47014a 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -111,7 +111,7 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Hearing_Module_Description"; }; }; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 03466c1986..deb8a4d800 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -17,7 +17,7 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription { + class ModuleDescription { description = "$STR_ACE_InteractionSystem_Module_Description"; }; }; diff --git a/addons/javelin/CfgVehicles.hpp b/addons/javelin/CfgVehicles.hpp index 48781036ad..1cd527089d 100644 --- a/addons/javelin/CfgVehicles.hpp +++ b/addons/javelin/CfgVehicles.hpp @@ -16,7 +16,7 @@ class CfgVehicles { class MainTurret : MainTurret { weapons[] = { QGVAR(Titan_Static) }; magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; - + turretInfoType = "ACE_RscOptics_javelin"; gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; @@ -29,12 +29,12 @@ class CfgVehicles { }; }; }; - class O_static_AT_F: AT_01_base_F { + class O_static_AT_F: AT_01_base_F { class Turrets : Turrets { class MainTurret : MainTurret { weapons[] = { QGVAR(Titan_Static) }; magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; - + turretInfoType = "ACE_RscOptics_javelin"; gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; @@ -47,12 +47,12 @@ class CfgVehicles { }; }; }; - class I_static_AT_F: AT_01_base_F { + class I_static_AT_F: AT_01_base_F { class Turrets : Turrets { class MainTurret : MainTurret { weapons[] = { QGVAR(Titan_Static) }; magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; - + turretInfoType = "ACE_RscOptics_javelin"; gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp index 1bbf713b3b..75aaf7c332 100644 --- a/addons/javelin/CfgWeapons.hpp +++ b/addons/javelin/CfgWeapons.hpp @@ -38,7 +38,7 @@ class CfgWeapons { lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; }; - class launch_I_Titan_short_F: launch_Titan_short_base { + class launch_I_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); @@ -48,7 +48,7 @@ class CfgWeapons { lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; }; - class launch_O_Titan_short_F: launch_Titan_short_base { + class launch_O_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); @@ -59,7 +59,7 @@ class CfgWeapons { lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; }; - class launch_Titan_short_F: launch_Titan_short_base { + class launch_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 849549e3d1..a5194e015e 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -34,7 +34,7 @@ class CfgVehicles { defaultValue = 0; }; }; - class ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Map_Module_Description"; }; }; @@ -51,7 +51,7 @@ class CfgVehicles { class Interval { displayName = "$STR_ACE_Map_BFT_Interval_DisplayName"; description = "$STR_ACE_Map_BFT_Interval_Description"; - typeName = "NUMBER"; + typeName = "NUMBER"; defaultValue = 1; }; class HideAiGroups { @@ -61,7 +61,7 @@ class CfgVehicles { defaultValue = 0; }; }; - class ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Map_BFT_Module_Description"; }; }; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 6c37c5cfd9..e0a6fbcfa0 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -9,7 +9,6 @@ class CfgVehicles { }; }; class ACE_Module; - // TODO localization for all the modules class ACE_moduleMedicalSettings: ACE_Module { scope = 2; displayName = "$STR_ACE_MedicalSettings_Module_DisplayName"; @@ -191,8 +190,12 @@ class CfgVehicles { class consumeItem_PAK { displayName = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_DisplayName"; description = "$STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_Description"; - typeName = "BOOL"; - defaultValue = 1; + + 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 useLocation_PAK { displayName = "$STR_ACE_AdvancedMedicalSettings_useLocation_PAK_DisplayName"; @@ -333,8 +336,19 @@ class CfgVehicles { class enabled { displayName = "$STR_ACE_AssignMedicVehicle_enabled_DisplayName"; description = "$STR_ACE_AssignMedicVehicle_enabled_Description"; - typeName = "BOOL"; - defaultValue = 1; + + typeName = "NUMBER"; + class values { + class none { + name = "$STR_ACE_Medical_No"; + value = 0; + }; + class medic { + name = "$STR_ACE_Medical_Yes"; + value = 1; + default = 1; + }; + }; }; }; class ModuleDescription { @@ -1003,4 +1017,4 @@ class CfgVehicles { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 0eb23d57d4..e522e215ef 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3060,6 +3060,378 @@ [ACE] Medical Supply Crate (Advanced) [ACE] Skrzynka z zapasami medycznymi (zaawansowana) + + ACE Medical + ACE Opcje medyczne + + + Medical Settings [ACE] + Ustawienia medyczne [ACE] + + + Medical Level + Poziom medyczny + + + What is the medical simulation level? + Jaki jest poziom symulacji medycznej? + + + Basic + Podstawowy + + + Advanced + Zaawansowany + + + Medics setting + Poziom medyków + + + What is the level of detail prefered for medics? + Jaki jest poziom detali medycznych wyświetlanych dla medyków? + + + Disable medics + Wyłącz medyków + + + Enable Litter + Aktywuj odpadki + + + Enable litter being created upon treatment + Twórz odpadki medyczne podczas leczenia + + + Life time of litter objects + Długość życia odpadków + + + 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. + + + Enable Screams + Aktywuj wrzaski + + + Enable screaming by injuried units + Aktywuj wrzeszczenie z bólu przez ranne jednostki + + + Player Damage + Próg obrażeń graczy + + + 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? + + + AI Damage + Próg obrażeń AI + + + 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? + + + AI Unconsciousness + Nieprzytomność AI + + + Allow AI to go unconscious + Czy AI może być nieprzytomne od odniesionych obrażeń? + + + Disabled + Wyłączone + + + Enabled + Włączone + + + Prevent instant death + Wył. natychmiast. śmierć + + + 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ń + + + Bleeding coefficient + Mnożnik krwawienia + + + Coefficient to modify the bleeding speed + Mnożnik modyfikujący prędkość wykrwawiania się + + + Pain coefficient + Mnożnik bólu + + + Coefficient to modify the pain intensity + Mnożnik modyfikujący intensywność bólu + + + Sync status + Synchronizuj status + + + Keep unit status synced. Recommended on. + Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. + + + Provides a medical system for both players and AI. + Moduł ten dostarcza system medyczny dla graczy oraz AI. + + + Advanced Medical Settings [ACE] + Zaawansowane ustawienia medyczne [ACE] + + + Enabled for + Aktywne dla + + + Select what units the advanced medical system will be enabled for + Wybierz dla kogo zaawansowany system medyczny będzie aktywny + + + Players only + Tylko dla graczy + + + Players and AI + Gracze oraz AI + + + Enable Advanced wounds + Akt. zaawansowane rany + + + Allow reopening of bandaged wounds? + Pozwól na otwieranie się zabandażowanych ran? + + + Vehicle Crashes + Obrażenia od kolizji + + + Do units take damage from a vehicle crash? + Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? + + + Allow PAK + Ust. apteczek osobistych + + + Who can use the PAK for full heal? + Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? + + + Anyone + Wszyscy + + + Medics only + Tylko medycy + + + Doctors only + Tylko doktorzy + + + Remove PAK on use + Usuń apteczkę po użyciu + + + Should PAK be removed on usage? + Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? + + + No + Nie + + + Yes + Tak + + + Locations PAK + Ogr. apteczek osobistych + + + Where can the personal aid kit be used? + Gdzie można korzystać z apteczek osobistych? + + + Anywhere + Wszędzie + + + Medical vehicles + Pojazdy medyczne + + + Medical facility + Budynki medyczne + + + Vehicles & facility + Pojazdy i budynki medyczne + + + Disabled + Wyłączone + + + Allow Surgical kit (Adv) + Ust. zestawu chirurg. + + + Who can use the surgical kit? + Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? + + + Remove Surgical kit (Adv) + Usuń zest. chir. po użyciu + + + Should Surgical kit be removed on usage? + Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? + + + Locations Surgical kit (Adv) + Ogr. zestawu chirurg. + + + Where can the Surgical kit be used? + Gdzie można korzystać z zestawu chirurgicznego? + + + Configure the treatment settings from ACE Medical + Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE + + + Revive Settings [ACE] + Ustawienia wskrzeszania [ACE] + + + Enable Revive + Aktywuj wskrzeszanie + + + Enable a basic revive system + Aktywuj podstawowy system wskrzeszania + + + Max Revive time + Maks. czas agonii + + + Max amount of seconds a unit can spend in revive state + Maksymalna długość agonii w sekundach (czas na wskrzeszenie) + + + Max Revive lives + Maks. ilość wskrzeszeń + + + Max amount of lives a unit. 0 or -1 is disabled. + Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. + + + 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. + + + Set Medic Class [ACE] + Ustaw klasę medyka [ACE] + + + List + 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. + + + Is Medic + Klasa medyczna + + + + + + + None + Żadna + + + Regular medic + Zwykły medyk + + + Doctor (Only Advanced Medics) + Doktor (tylko zaawansowani medycy) + + + Assigns the ACE medic class to a unit + Moduł ten przypisuje klasę medyka ACE do jednostek. + + + Set Medical Vehicle [ACE] + Ustaw pojazd medyczny [ACE] + + + List + 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. + + + Is Medical Vehicle + Jest pojazdem med. + + + Whatever or not the objects in the list will be a medical vehicle. + Czy pojazdy z tej listy są pojazdami medycznymi. + + + 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. + + + Set Medical Facility [ACE] + Ustaw budynek medyczny [ACE] + + + Is Medical Facility + Jest budynkiem med. + + + Registers an object as a medical facility + Przypisuje danemu obiektowi status budynku medycznego + + + 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. + + + [ACE] Medical Supply Crate (Basic) + [ACE] Skrzynka z zapasami medycznymi (podstawowa) + + + [ACE] Medical Supply Crate (Advanced) + [ACE] Skrzynka z zapasami medycznymi (zaawansowana) + - \ No newline at end of file + diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index 12d70602c2..1532827378 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -14,39 +14,39 @@ Dźwięki - Classnames of the ambiance sounds played. Seperated by ','. - Classname-y dźwięków do odtwarzania. Oddzielone przy użyciu ','. + Class names of the ambiance sounds to be played. Seperated by ',' + Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ',' Minimal Distance Minimalny dystans - Minimal Distance - Minimalny dystans + 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 - Maximal Distance + Maximum Distance Maksymalny dystans - Maximal Distance - Maksymalny dystans + 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 Minimal Delay Minimalne opóźnienie - Minimal Delay between sounds played + Minimal delay between sounds played Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami - Maximal Delay + Maximum Delay Maksymalne opóźnienie - Maximal Delay between sounds played + Maximum delay between sounds played Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami diff --git a/addons/mk6mortar/script_component.hpp b/addons/mk6mortar/script_component.hpp index cb74d552de..e1d56d087e 100644 --- a/addons/mk6mortar/script_component.hpp +++ b/addons/mk6mortar/script_component.hpp @@ -2,11 +2,11 @@ #include "\z\ace\Addons\main\script_mod.hpp" #ifdef DEBUG_ENABLED_MK6MORTAR - #define DEBUG_MODE_FULL + #define DEBUG_MODE_FULL #endif #ifdef DEBUG_SETTINGS_MK6MORTAR - #define DEBUG_SETTINGS DEBUG_SETTINGS_MK6MORTAR + #define DEBUG_SETTINGS DEBUG_SETTINGS_MK6MORTAR #endif #include "\z\ace\Addons\main\script_macros.hpp" diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 37c7d322ad..cb4a7c5376 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -81,5 +81,37 @@ Moduł ten pozwala dostosować ustawienia moździerza MK6. + + MK6 Settings + Moździerz MK6 - Ustawienia + + + Air Resistance + Opór powietrza + + + 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 + + + Allow MK6 Computer + Komputer 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) + + + Allow MK6 Compass + Kompas MK6 + + + Show the MK6 Digital Compass + Pokaż kompas MK6 + + + + Moduł ten pozwala dostosować ustawienia moździerza MK6. + diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index a4ef577ecf..fabd3b09cb 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -65,7 +65,7 @@ class CfgVehicles { defaultValue = 0; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_NameTags_Module_Description"; }; }; diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index f14a97b460..495db21df7 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,288 +1,332 @@ - - - - - ACE Options - ACE Optionen - Opciones ACE - Ustawienia ACE - ACE Nastavení - Options ACE - ACE Настройки - Opções do ACE - ACE Beállítások - Opzioni ACE - - - Fix Animation - Behebe Animation - Arreglar animación - Фикс анимации - Opravit animace - Napraw animację - Corriger animation - Animációk kijavítása - Fixa l'animazione - Arrumar Animação - - - Reset All - Alles zurücksetzen - Reiniciar todo - Полный сброс - Vyresetovat vše - Resetuj wszystko - Défaut - Minden visszaállítása - Resetta tutto - Resetar Tudo - - - Colors - Couleurs - Farben - Colores - Цвета - Barvy - Kolory - Színek - Colori - Cores - - - Options - Optionen - Opciones - Opcje - Nastavení - Options - Настройки - Opções - Beállítások - Opzioni - - - Values - Valores - Значения - Hodnoty - Wartości - Valeurs - Werte - Értékek - Valori - Valores - - - Yes - Ja - Si - Tak - Ano - Oui - Да - Igen - Sim - Si - - - No - Nein - No - Nie - Ne - Non - Нет - Nem - Não - No - - - Setting: - Nastavení: - Einstellung: - Установки: - Ajuste: - Ustaw: - Paramètres - Opció: - Parametri: - Opção: - - - Export - Exportieren - Exportar - Экспорт - Exportovat - Eksport - Exporter - Exportálás - Esporta - Exportar - - - Open Export Menu - Öffne Exportmenü - Abrir menú de exportación - Открыть меню экспорта - Otevřít exportovací menu - Otwórz menu eksportowania - Ouvrir le menu d'exportation - Exportálási menü megnyitása - Apri menù esportazione - Abrir menu de exportação - - - String input. - Zeichenketteneingabe - Introducir cadena de texto. - Строчный ввод. - Wpisywanie tekstu. - Vkládání textu. - Entrée - String bevitel. - Stringa di unput. - Input de String - - - Array. Seperate elements by using ,. - Array. Teile unterschiedliche Elemente mit ,. - Matriz. Separa elementos usando ,. - Массив. Разделяйте элемены, используя запятую. - Tablica. Oddziel elementy używając ,. - Tableau. Séparation par ,. - Tabulka. Odděl elementy použitím ,. - Array. Válasszad el az elemeket vesszővel. - Array. Separa gli elementi usando ,. - Vetor. Separe elementos usando *,*. - - - Number - Zahl - Número - Число - Číslo - Cyfra - Nombre - Szám - Numero - Número - - - Uknown input type - Unbekannter Eingabetyp - Tipo de entrada desconocida - Неизвестный тип ввода - Neznámý vstup - Nieznany rodzaj danych - Type d'entrée inconnue - Ismeretlen beviteli típus - Input inserito sconosciuto - Tipo desonhecido de input - - - Save input - Speichere Eingabe - Guardar entrada - Сохранить ввод - Uložit vstup - Zapisz dane - Sauvegarder - Bevitel elmentése - Salva input - Salvar input - - - Include Client Settings - Schließe Client-Einstellungen ein - Incluir configuración de cliente - Включить настройки клиента - Zahrnout nastavení klienta - Zawrzyj ustawienia klienta - Inclure paramètres client - Kliens-beállítások melléklése - Includi i parametri del client - Incluir opções do cliente - - - Exclude Client Settings - Schließe Client-Einstellungen aus - Excluir configuración de cliente - Исключить настройки клиента - Nezahrnout nastavení klienta - Wyklucz ustawienia klienta - Exclure paramètres client - Kliens-beállítások elhagyása - Escludi i parametri del client - Excluir opções do cliente - - - Settings exported to clipboard - Einstellungen in die Zwischenablage exportiert - Configuración exportada al portapapeles - Настройки экспортированы в буфер обмена - Nastevení exportována do schránky - Ustawienia wyeksportowano do schowka - Paramètres exportés dans le presse papier - Beállítások exportálva a vágólapba - Parametri esportati alla clipboard - Opções exportadas para o clipboard. - - - Option Menu UI Scaling - Menu option: taille de l'UI - Skalowanie UI menu ustawień - Měřítko UI v menu nastavení - Размер интерфейса меню настройки - Opción de escalado del menú IU - UI Skalierung - Beállításmenü kezelőfelületének skálázása - Escalar o menu de opções - - - Allow Config Export [ACE] - Pozwól na eksport ustawień [ACE] - - - Allow - Zezwól - - - Allow export of all settings to a server config formatted. - Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. - - - 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. - - - Hide - Ukryj - - - Top right, downwards - Po prawej u góry, w dół - - - Top right, to the left - Po prawej u góry, do lewej - - - Top left, downwards - Po lewej u góry, w dół - - - Top left, to the right - Po lewej u góry, do prawej - - - Top - Góra - - - Bottom - Dół - - - + + + + + ACE Options + ACE Optionen + Opciones ACE + Ustawienia ACE + ACE Nastavení + Options ACE + ACE Настройки + Opções do ACE + ACE Beállítások + Opzioni ACE + + + Fix Animation + Behebe Animation + Arreglar animación + Фикс анимации + Opravit animace + Napraw animację + Corriger animation + Animációk kijavítása + Fixa l'animazione + Arrumar Animação + + + Reset All + Alles zurücksetzen + Reiniciar todo + Полный сброс + Vyresetovat vše + Resetuj wszystko + Défaut + Minden visszaállítása + Resetta tutto + Resetar Tudo + + + Colors + Couleurs + Farben + Colores + Цвета + Barvy + Kolory + Színek + Colori + Cores + + + Options + Optionen + Opciones + Opcje + Nastavení + Options + Настройки + Opções + Beállítások + Opzioni + + + Values + Valores + Значения + Hodnoty + Wartości + Valeurs + Werte + Értékek + Valori + Valores + + + Yes + Ja + Si + Tak + Ano + Oui + Да + Igen + Sim + Si + + + No + Nein + No + Nie + Ne + Non + Нет + Nem + Não + No + + + Setting: + Nastavení: + Einstellung: + Установки: + Ajuste: + Ustaw: + Paramètres + Opció: + Parametri: + Opção: + + + Export + Exportieren + Exportar + Экспорт + Exportovat + Eksport + Exporter + Exportálás + Esporta + Exportar + + + Open Export Menu + Öffne Exportmenü + Abrir menú de exportación + Открыть меню экспорта + Otevřít exportovací menu + Otwórz menu eksportowania + Ouvrir le menu d'exportation + Exportálási menü megnyitása + Apri menù esportazione + Abrir menu de exportação + + + String input. + Zeichenketteneingabe + Introducir cadena de texto. + Строчный ввод. + Wpisywanie tekstu. + Vkládání textu. + Entrée + String bevitel. + Stringa di unput. + Input de String + + + Array. Seperate elements by using ,. + Array. Teile unterschiedliche Elemente mit ,. + Matriz. Separa elementos usando ,. + Массив. Разделяйте элемены, используя запятую. + Tablica. Oddziel elementy używając ,. + Tableau. Séparation par ,. + Tabulka. Odděl elementy použitím ,. + Array. Válasszad el az elemeket vesszővel. + Array. Separa gli elementi usando ,. + Vetor. Separe elementos usando *,*. + + + Number + Zahl + Número + Число + Číslo + Cyfra + Nombre + Szám + Numero + Número + + + Uknown input type + Unbekannter Eingabetyp + Tipo de entrada desconocida + Неизвестный тип ввода + Neznámý vstup + Nieznany rodzaj danych + Type d'entrée inconnue + Ismeretlen beviteli típus + Input inserito sconosciuto + Tipo desonhecido de input + + + Save input + Speichere Eingabe + Guardar entrada + Сохранить ввод + Uložit vstup + Zapisz dane + Sauvegarder + Bevitel elmentése + Salva input + Salvar input + + + Include Client Settings + Schließe Client-Einstellungen ein + Incluir configuración de cliente + Включить настройки клиента + Zahrnout nastavení klienta + Zawrzyj ustawienia klienta + Inclure paramètres client + Kliens-beállítások melléklése + Includi i parametri del client + Incluir opções do cliente + + + Exclude Client Settings + Schließe Client-Einstellungen aus + Excluir configuración de cliente + Исключить настройки клиента + Nezahrnout nastavení klienta + Wyklucz ustawienia klienta + Exclure paramètres client + Kliens-beállítások elhagyása + Escludi i parametri del client + Excluir opções do cliente + + + Settings exported to clipboard + Einstellungen in die Zwischenablage exportiert + Configuración exportada al portapapeles + Настройки экспортированы в буфер обмена + Nastevení exportována do schránky + Ustawienia wyeksportowano do schowka + Paramètres exportés dans le presse papier + Beállítások exportálva a vágólapba + Parametri esportati alla clipboard + Opções exportadas para o clipboard. + + + Option Menu UI Scaling + Menu option: taille de l'UI + Skalowanie UI menu ustawień + Měřítko UI v menu nastavení + Размер интерфейса меню настройки + Opción de escalado del menú IU + UI Skalierung + Beállításmenü kezelőfelületének skálázása + Escalar o menu de opções + + + Allow Config Export [ACE] + Pozwól na eksport ustawień [ACE] + + + Allow + Zezwól + + + Allow export of all settings to a server config formatted. + Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + + + 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. + + + Hide + Ukryj + + + Top right, downwards + Po prawej u góry, w dół + + + Top right, to the left + Po prawej u góry, do lewej + + + Top left, downwards + Po lewej u góry, w dół + + + Top left, to the right + Po lewej u góry, do prawej + + + Top + Góra + + + Bottom + Dół + + + Allow Config Export [ACE] + Pozwól na eksport ustawień [ACE] + + + Allow + Zezwól + + + Allow export of all settings to a server config formatted. + Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + + + 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. + + + Hide + Ukryj + + + Top right, downwards + Po prawej u góry, w dół + + + Top right, to the left + Po prawej u góry, do lewej + + + Top left, downwards + Po lewej u góry, w dół + + + Top left, to the right + Po lewej u góry, do prawej + + + Top + Góra + + + Bottom + Dół + + + diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index 00f0bd4493..e90f4ba08e 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -27,7 +27,7 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_Respawn_Module_Description"; }; }; @@ -42,7 +42,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_FriendlyFire_Module_Description"; }; }; @@ -57,7 +57,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_Rallypoint_Module_Description"; }; }; diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 48271c6428..0f76c78568 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -46,8 +46,8 @@ class CfgVehicles { defaultValue = 100; }; }; - class ModuleDescription { - description = "$STR_ACE_SwitchUnits_Module_Description"; + class ModuleDescription { + description = "$STR_ACE_SwitchUnits_Module_Description"; }; }; }; \ No newline at end of file diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp index 2ce9421071..f7e2a33980 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"; //WIND DEFLECTION + displayName = "$STR_ACE_Weather_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 = "$STR_ACE_Weather_deflectionModule_DisplayName"; + description = "$STR_ACE_Weather_deflectionModule_Description"; typeName = "BOOL"; defaultValue = 1; }; class vehicleEnabled { - displayName = "$STR_ACE_WEATHER_VEHICLEENABLED_DISPLAYNAME"; - description = "$STR_ACE_WEATHER_VEHICLEENABLED_DESCRIPTION"; + displayName = "$STR_ACE_Weather_vehicleEnabled_DisplayName"; + description = "$STR_ACE_Weather_vehicleEnabled_Description"; typeName = "BOOL"; defaultValue = 1; }; class simulationInterval { - displayName = "$STR_ACE_WEATHER_SIMULATIONINTERVAL_DISPLAYNAME"; - description = "$STR_ACE_WEATHER_SIMULATIONINTERVAL_DESCRIPTION"; + displayName = "$STR_ACE_Weather_simulationInterval_DisplayName"; + description = "$STR_ACE_Weather_simulationInterval_Description"; typeName = "NUMBER"; defaultValue = 0.05; }; class simulationRadius { - displayName = "$STR_ACE_WEATHER_SIMULATIONRADIUS_DISPLAYNAME"; - description = "$STR_ACE_WEATHER_SIMULATIONRADIUS_DESCRIPTION"; + displayName = "$STR_ACE_Weather_simulationRadius_DisplayName"; + description = "$STR_ACE_Weather_simulationRadius_Description"; typeName = "NUMBER"; defaultValue = 3000; }; }; - class ModuleDescription { - description = "$STR_ACE_WEATHER_WINDDEFLECTION_DESCRIPTION"; - }; + class ModuleDescription { + description = "$STR_ACE_Weather_windDeflection_Description"; + }; }; }; \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 515591bd32..806bf4c449 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -62,43 +62,43 @@ Umidità: %1% Humidade: %1% - + Wind Deflection Wpływ wiatru - + Wind Deflection Wpływ wiatru - + Enables wind deflection Aktywuje wpływ wiatru na trajektorię lotu pocisków - + Vehicle Enabled Włączone dla pojazdów - + Enables wind deflection for static/vehicle gunners Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach - + 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 projectiles are wind deflected Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr - + Wind influence on projectiles trajectory Wpływ wiatru na trajektorię lotu pocisków From bc72c71e8e193fe6ab359906d6f41fc7b5b41cc4 Mon Sep 17 00:00:00 2001 From: GieNkoV Date: Tue, 12 May 2015 19:11:56 +0200 Subject: [PATCH 0224/1101] Fix small errors inside stringtables --- addons/common/stringtable.xml | 12 +- addons/explosives/stringtable.xml | 14 +- addons/hearing/stringtable.xml | 2 +- addons/interaction/stringtable.xml | 26 ++- addons/medical/stringtable.xml | 45 ++--- addons/missileguidance/stringtable.xml | 226 ++++++++++++------------- addons/optionsmenu/stringtable.xml | 1 + 7 files changed, 170 insertions(+), 156 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 5b908a9133..8f5ebe7191 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -275,7 +275,7 @@ Désactiver menu commande Выключить командное меню Parancsnoki menü kikapcsolása - Disabilita Menù di comando + Disabilita menù di comando Desabilitar menu de comando @@ -308,7 +308,7 @@ Aceptar peticiones Akceptuj prośby Přijmout žádost - Accetta Richieste + Accetta la richiesta Accepter requête Принять запросы Kérések elfogadása @@ -320,7 +320,7 @@ Rechazar peticiones Ignoruj prośby Zamítnout žádost - Rifiuta Richieste + Rifiuta la richiesta Отклонить запросы Rejeter requête Kérések elutasítása @@ -402,7 +402,7 @@ Hint Background color Hintergrundfarbe der Hinweise Color de fondo de las notificaciones - Colore di sfondo dei Suggerimenti + Colore di sfondo dei suggerimenti Цвет фона всплывающих подсказок Kolor tła powiadomień Notification: couleur de l'arrière plan @@ -414,7 +414,7 @@ The color of the background from the ACE hints. Die Hintergrundfarbe der ACE-Hinweise. El color de fondo de las notificaciones del ACE - Il colore di sfondo dei suggerimenti dell'ACE. + Il colore di sfondo dei suggerimenti di ACE. Цвет фона всплывающих подсказок АСЕ. Kolor tła dla powiadomień ACE Notification ACE: couleur de l'arrière plan @@ -426,7 +426,7 @@ Hint text font color Textfarbe der Hinweise Color del texto de las notificaciones - Il colore del Testo dei Suggerimenti + Il colore del testo dei suggerimenti Цвет шрифта всплывающих подсказок Kolor tekstu powiadomień Notification: couleur du texte diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 42b5160030..5f5076175d 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -368,7 +368,7 @@ Wybierz zapalnik Sélectionner une mise à feu Zvolit Detonátor - Seleziona un Attivatore + Seleziona un attivatore Gyújtóeszköz kiválasztása Selecionar um Gatilho Выберите детонатор @@ -392,7 +392,7 @@ Druckplatte Plaque de pression Nášlapná nástraha - Piastra a Pressione + Piastra a pressione Nyomólap Placa de pressão Нажимная плита @@ -404,7 +404,7 @@ Stolperdraht Fil de détente Nástražný drát - Filo a Inciampo + Filo a inciampo Botlódrót Linha de tração Растяжка @@ -440,7 +440,7 @@ Infrarotsensor (Seitenangriff) Capteur IR (de flanc) IR Značkovač (Výbuch stranou) - Sensore IR (Attacco laterale) + Sensore IR (attacco laterale) Infravörös szenzor (Side Attack) Sensor infravermelho (ataque lateral) ИК сенсор (детонация вбок) @@ -452,7 +452,7 @@ Magnetfeldsensor (Bodenangriff) Capteur magnétique (par le bas) Magnetický Senzor (Výbuch ze spoda) - Sensore Magnetico di Prossimità (Attacco inferiore) + Sensore Magnetico di Prossimità (attacco inferiore) Mágneses mező érzékelő (Bottom Attack) Influência magnética (ataque inferior) Магнитный сенсор (детонация вверх) @@ -462,7 +462,7 @@ Keine Sprengladungen auf diesem Auslöser. Ningún explosivo en el detonador. Pas d'explosif à mettre à feu. - Nessun esplosivo sul sensore. + Nessun esplosivo Žádná výbušnina k odpálení. Nincs robbanóanyag a gyújtóeszközhöz kötve. Brak ładunków na zapalnik. @@ -491,7 +491,7 @@ Robbanóanyagok távoli robbantásához Usado para detonar remotamente o explosivo quando solto. Используется для дистанционного подрыва, после смерти оператора. - Usato per attivare esplosivi al momento del rilascio + Usato per attivare a distanza esplosivi al momento del rilascio Pick up diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index ae7bea38a2..9e960f6d63 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -106,7 +106,7 @@ Vypnout pískání v uších Wyłącz dzwonienie w uszach Fülcsengés letiltása - Disabilita il ronzio + Disabilita i fischi nelle orecchie Desabilitar zumbido de ouvidos diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 0e6e89b74c..19296083a6 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -119,7 +119,7 @@ Меню взаимодействия (с собой) Cselekvő menü (saját) Menu de Interação (Individual) - Menù interazione (Individuale) + Menù interazione (individuale) Open / Close Door @@ -263,7 +263,7 @@ Жесты Kézjelek Gestos - Segnali gestuali + Gesti Attack @@ -443,7 +443,7 @@ Někdo tě poklepal na PRAVÉ rameno Вас похлопали по ПРАВОМУ плечу Você foi tocado no ombro - Ti è stato dato un colpetto sulla spalla + Ti è stato dato un colpetto sulla spalla destra You were tapped on the LEFT shoulder. @@ -455,7 +455,7 @@ Někdo tě poklepal na LEVÉ rameno Вас похлопали по ЛЕВОМУ плечу Você foi tocado no ombro. - Ti è stato dato un colpetto sulla spalla + Ti è stato dato un colpetto sulla spalla sinistra Cancel @@ -503,7 +503,7 @@ A földre! Ложись! Abaixe-se! - A Terra! + A terra! Team Management @@ -575,6 +575,7 @@ Přiřadit k červeným Назначить в Красную группу Assigner à rouge + Assegna al team rosso Assign Green @@ -586,6 +587,7 @@ Přiřadit k zeleným Назначить в Зеленую группу Assigner à vert + Assegna al team verde Assign Blue @@ -597,6 +599,7 @@ Přiřadit k modrým Назначить в Синюю группу Assigner à bleu + Assegna al team blu Assign Yellow @@ -608,6 +611,7 @@ Přiřadit ke žlutým Назначить в Желтую группу Assigner à jaune + Assegna al team giallo Join Red @@ -619,6 +623,7 @@ Připojit k červeným Присоединиться к Красной группе Rejoindre rouge + Unirsi al team rosso Join Green @@ -630,6 +635,7 @@ Připojit k zeleným Присоединиться к Зеленой группе Rejoindre vert + Unirsi al team verde Join Blue @@ -641,6 +647,7 @@ Připojit k modrým Присоединиться к Синей группе Rejoindre bleu + Unirsi al team blu Join Yellow @@ -652,6 +659,7 @@ Připojit ke žlutým Присоединиться к Жёлтой группе Rejoindre jaune + Unirsi al team giallo You joined Team %1 @@ -721,7 +729,7 @@ Tecla modificadora Клавиша-модификатор Tecla Modificadora - Modifica tasto + Tasto modifica Módosító billentyű Modifikátor @@ -735,7 +743,7 @@ Hatótávolságon kívül Poza zasięgiem Mimo dosah - Non in raggio + Fuori limite Equipment @@ -758,8 +766,8 @@ Odstrčit Tolás Толкать - Spingi Empurrar + Spingere Interact @@ -770,7 +778,7 @@ Interakcja Interactuar Cselekvés - Interagisci + Interagire Interagir diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index e522e215ef..9cfc7e15d5 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -83,7 +83,7 @@ Injecter de la morphine Morfium beadása Injetar Morfina - Inietta Morfina + Inietta morfina Transfuse Blood @@ -95,7 +95,7 @@ Transfusion Infúzió (vér) Transfundir Sangue - Effettua trasfusione di sangue + Trasfusione di sangue Transfuse Plasma @@ -106,7 +106,7 @@ Transfuser du Plasma Перелить плазму Infúzió (vérplazma) - Effettua trasfusione di plasma + Trasfusione di Plasma Transfundir Plasma @@ -118,7 +118,7 @@ Transfuser de la solution saline Перелить физраствор Infúzió (sós víz) - Effettua trasfusione di soluzione salina + Trasfusione di soluzione salina Transfundir Soro @@ -274,7 +274,7 @@ Transfusion de saline ... Переливание физраствора ... Infúzió sós vizzel ... - Effettuo la rasfusione di salina + Effettuo la rasfusione di soluzione salina Transfundindo Soro... @@ -370,7 +370,7 @@ QuikClot Hémostatique QuikClot - QuikClot(polvere emostatica) + QuikClot (polvere emostatica) QuikClot @@ -632,7 +632,7 @@ Natychmiastowy Urgence Immédiate Sofort - Okamžiý + Okamžitý Azonnali Immediata Imediato @@ -801,7 +801,7 @@ Bandage fait d'un matériel spécial utilisé pour couvrir une blessure, qui peut etre appliqué dès que le saignement a été stoppé. Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. Egy különleges anyagú kötszer sebek betakarására, amelyet a vérzés elállítása után helyeznek fel. - Una benda apposita, utilizzata per coprire una ferita, la quale è applicata sopra di essa una volta fermata l'emorragia. + Una benda apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. @@ -825,7 +825,7 @@ Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer - Usato su medie o larghe ferite per fermare emorragie. + Usato su ferite medie o larghe per fermare emorragie. Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. Používá se k zastavení středních až silnějších krvácení @@ -850,7 +850,7 @@ Bandaż (elastyczny) Obvaz (elastický) Rögzító kötszer - Benda (Elastica) + Benda (elastica) Bandagem (Elástica) @@ -861,7 +861,7 @@ Bandage compressif élastique Zestaw bandaży elastycznych. Rugalmas kötszercsomag, "rögzítő" - Kit bendaggio, elastico + Kit di bendaggio, elastico Kit de Bandagem, Elástica Sada obvazů, Elastická @@ -873,7 +873,7 @@ Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada Egyenletes nyomást és támogatást biztosít a sebesült felületnek. - Permette di comprimevere e aiutare la zone ferita. + Permette di comprimere e aiutare la zone ferita. Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. Hodí se k fixačním účelům a to i v oblastech kloubů. @@ -958,7 +958,7 @@ Atropin Autoinjektor Autoinjektor atropin Atropin autoinjektor - Autoiniettore di Atropina + Autoiniettore di atropina Auto-injetor de Atropina @@ -994,7 +994,7 @@ Epiniphrin Autoinjektor Autoinjektor adrenalin Epinefrin autoinjektor - Autoiniettore di Epinefrina + Autoiniettore di epinefrina Auto-injetor de epinefrina @@ -1271,6 +1271,7 @@ Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz Kit de primeiros socorros para sutura ou tratamentos avançados Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli + Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. Use Personal Aid Kit @@ -1282,13 +1283,14 @@ Elsősegélycsomag használata Usar o kit de primeiros socorros Použít osobní lékárničku + Usa il pronto soccorso personale Surgical Kit Trousse chirurgicale Хирургический набор Kit quirúrgico - Zestaw chirurgiczny + Zestaw do szycia ran Operationsset Sebészeti készlet Kit chirurgico @@ -1583,10 +1585,6 @@ %1 zkontroloval srdeční tep: %2 %1 verificou a frequência cardíaca: %2 - - None - Brak - Weak Schwach @@ -1781,7 +1779,7 @@ He's lost some blood - Ha perso molto sangue + Ha perso sangue Ha perdido un poco de sangre Есть кровопотеря Er hat etwas Blut verloren @@ -1801,6 +1799,7 @@ Il a perdu beaucoup de sang Ztratil hodně krve Ele perdeu muito sangue + Ha perso molto sangue He hasn't lost blood @@ -2244,6 +2243,7 @@ Styl menu (Zdravotní) Estilo do menu (Médico) Menü stílusa (Orvosi) + Stile del menù (medico) Select the type of menu you prefer; default 3d selections or radial. @@ -2255,6 +2255,7 @@ Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. Zvolte typ menu: základní 3D výběr nebo kruhový + Seleziona il tipo di menù che preferisci: selezione 3d predefinita o radiale. Selections (3d) @@ -2266,6 +2267,7 @@ Seleção (3d) Választékok (3D) 3D výběr + Selezione (3D) Radial @@ -2277,6 +2279,7 @@ Radial Kerek Kruhový + Radiale Scrape @@ -2684,6 +2687,7 @@ Tratando ... Tratando... Ošetřuji ... + Curando ... Removing Tourniquet ... @@ -2695,6 +2699,7 @@ Érszorító eltávolítása ... Sundavám škrtidlo ... Снятие жгута ... + Togliendo il laccio emostatico ... ACE Medical diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index ef9bdeea26..24149e61a0 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,113 +1,113 @@ - - - - - Advanced Missile Guidance - Guiado Avanzado de Misiles - Guidage avancé de missile - Zaawansowane naprowadzanie rakiet - Erweitertes Raketenlenksystem - Pokročilé řízení střel - Guida missili avanzata - Avançado Missile Guidance - Fejlett rakétairányító - Продвинутое наведение ракет - - - Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. - Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. - Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. - Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. - 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. - 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. - 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 - Hydra-70 DAGR - Hydra-70 DAGR Rackete - Hydra-70 DAGR - Missile Hydra-70 DAGR - Míssil Hydra-70 DAGR - Hydra-70 DAGR rakéta - Hydra-70 DAGR - - - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - - - Hydra-70 DAGR Laser Guided Missile - Misil guiado por láser Hydra-70 DAGR - Missile à guidage laser Hydra-70 DAGR - Laserowo naprowadzana rakieta Hydra-70 DAGR - Hydra-70 DAGR lasergelenkte Rakete - Hydra-70 DAGR laserem naváděná střela - Hydra-70 DAGR missile guida laser - Míssil guiado a laser Hydra-70 DAGR - 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 - Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Missile Hellfire II AGM-114K - Míssil Hellfire II AGM-114K - Hellfire II AGM-114K rakéta - Hellfire II AGM-114K - - - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - 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 - Laserowo naprowadzana rakieta Hellfire II AGM-114K - Hellfire II AGM-114K Lasergelenkte Rakete - Hellfire II AGM-114K laserem naváděná střela - Missile guida laser Hellfire II AGM-114K - Míssil guiado a laser Hellfire II AGM-114K - Hellfire II AGM-114K lézer-irányított rakéta - Управляемая ракета лазерного наведения Hellfire II AGM-114K - - - Off - Wyłącz - - - Player Only - Tylko gracz - - - Player and AI - Gracz oraz AI - - - + + + + + Advanced Missile Guidance + Guiado Avanzado de Misiles + Guidage avancé de missile + Zaawansowane naprowadzanie rakiet + Erweitertes Raketenlenksystem + Pokročilé řízení střel + Guida missili avanzata + Avançado Missile Guidance + Fejlett rakétairányító + Продвинутое наведение ракет + + + Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. + Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. + Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. + Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. + 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. + 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. + 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 + Hydra-70 DAGR + Hydra-70 DAGR Rackete + Hydra-70 DAGR + Missile Hydra-70 DAGR + Míssil Hydra-70 DAGR + Hydra-70 DAGR rakéta + Hydra-70 DAGR + + + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + + + Hydra-70 DAGR Laser Guided Missile + Misil guiado por láser Hydra-70 DAGR + Missile à guidage laser Hydra-70 DAGR + Laserowo naprowadzana rakieta Hydra-70 DAGR + Hydra-70 DAGR lasergelenkte Rakete + Hydra-70 DAGR laserem naváděná střela + Hydra-70 DAGR missile guida laser + Míssil guiado a laser Hydra-70 DAGR + 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 + Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Missile Hellfire II AGM-114K + Míssil Hellfire II AGM-114K + Hellfire II AGM-114K rakéta + Hellfire II AGM-114K + + + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + 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 + Laserowo naprowadzana rakieta Hellfire II AGM-114K + Hellfire II AGM-114K Lasergelenkte Rakete + Hellfire II AGM-114K laserem naváděná střela + Missile guida laser Hellfire II AGM-114K + Míssil guiado a laser Hellfire II AGM-114K + Hellfire II AGM-114K lézer-irányított rakéta + Управляемая ракета лазерного наведения Hellfire II AGM-114K + + + Off + Wyłącz + + + Player Only + Tylko gracz + + + Player and AI + Gracz oraz AI + + + diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 495db21df7..aa78e83645 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -239,6 +239,7 @@ UI Skalierung Beállításmenü kezelőfelületének skálázása Escalar o menu de opções + Proporzioni della interfaccia utente Allow Config Export [ACE] From ed1acd8c15089324690a4a476d542abed27f38ee Mon Sep 17 00:00:00 2001 From: GieNkoV Date: Tue, 12 May 2015 19:42:35 +0200 Subject: [PATCH 0225/1101] Some small errors fixed #2 Mainly tabs and wrong italian strings (got those from newest master) --- addons/common/stringtable.xml | 6 +++--- addons/interaction/stringtable.xml | 18 +++++++++--------- addons/nametags/stringtable.xml | 8 ++++---- addons/optionsmenu/stringtable.xml | 16 ++++++++-------- addons/respawn/stringtable.xml | 2 ++ 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 8f5ebe7191..1b960de982 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -308,11 +308,11 @@ Aceptar peticiones Akceptuj prośby Přijmout žádost - Accetta la richiesta Accepter requête Принять запросы Kérések elfogadása Aceitar Pedido + Accetta la richiesta Decline Requests @@ -320,11 +320,11 @@ Rechazar peticiones Ignoruj prośby Zamítnout žádost - Rifiuta la richiesta Отклонить запросы Rejeter requête Kérések elutasítása Rejeitar pedido + Rifiuta la richiesta Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. @@ -438,7 +438,7 @@ The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. Wähle die Textfarbe für ACE-Hinweise. Die gewählte Farbe wird als Standartfarbe der Hinweise angezeigt, wenn der Hinweis selbst keine spezifische Farbe hat. El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado. - Il colore del testo dei suggerimenti dell'ACE. Questo è il colore standard per tutti i caratteri mostrati dal sistema di suggerimenti dell'ACE, se il colore del testo non è specificato. + Il colore del testo dei suggerimenti di ACE. Questo è il colore predefinito per tutto il testo mostrato dal sistema di suggerimenti di ACE quando il colore del testo non ha altro colore specificato. Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок. Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru. Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 19296083a6..b2e75ccdff 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -575,7 +575,7 @@ Přiřadit k červeným Назначить в Красную группу Assigner à rouge - Assegna al team rosso + Assegna al team rosso Assign Green @@ -587,7 +587,7 @@ Přiřadit k zeleným Назначить в Зеленую группу Assigner à vert - Assegna al team verde + Assegna al team verde Assign Blue @@ -599,7 +599,7 @@ Přiřadit k modrým Назначить в Синюю группу Assigner à bleu - Assegna al team blu + Assegna al team blu Assign Yellow @@ -611,7 +611,7 @@ Přiřadit ke žlutým Назначить в Желтую группу Assigner à jaune - Assegna al team giallo + Assegna al team giallo Join Red @@ -623,7 +623,7 @@ Připojit k červeným Присоединиться к Красной группе Rejoindre rouge - Unirsi al team rosso + Unirsi al team rosso Join Green @@ -635,7 +635,7 @@ Připojit k zeleným Присоединиться к Зеленой группе Rejoindre vert - Unirsi al team verde + Unirsi al team verde Join Blue @@ -647,7 +647,7 @@ Připojit k modrým Присоединиться к Синей группе Rejoindre bleu - Unirsi al team blu + Unirsi al team blu Join Yellow @@ -659,7 +659,7 @@ Připojit ke žlutým Присоединиться к Жёлтой группе Rejoindre jaune - Unirsi al team giallo + Unirsi al team giallo You joined Team %1 @@ -767,7 +767,7 @@ Tolás Толкать Empurrar - Spingere + Spingere Interact diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 070257e807..1a0a2f1369 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -70,8 +70,8 @@ Zobrazit info o posádce vozidla Показывать информацию об экипаже Jármű-legénység adatainak mutatása - Mostra le informazioni sull'equipaggio del veicolo Mostrar tripulantes + Mostra l'elenco del personale a bordo Show name tags for AI units @@ -82,7 +82,7 @@ Wyświetl imiona jednostek AI Afficher les noms des IA Névcímkék mutatása MI-egységeknél - Mostra le tag nomi per le unità AI + Mostra i nomi delle le unità AI Mostrar nomes para unidades de IA @@ -94,7 +94,7 @@ Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) Afficher "qui parle" (si noms affichés) "Hanghullámok" mutatása (a nevek mutatása szükséges) - Mostra barra movimento audio (richiede mostra nomi abilitato) + Mostra movimento audio (richiede mostra nomi abilitato) Mostrar onda sonora (requer nome de jogadores) @@ -106,7 +106,7 @@ Couleur d'affichage par défaut (si dans aucun groupe) Standardní barva jmenovek (pro nečleny jednotky) Alap névcímke-szín (csoporton kívüli személyek) - Colore nametag di default (membri non del gruppo) + Colore dei nomi non appartenenti al gruppo Cor padrão do nome (unidades fora do grupo) diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index aa78e83645..18ee57310a 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -239,7 +239,7 @@ UI Skalierung Beállításmenü kezelőfelületének skálázása Escalar o menu de opções - Proporzioni della interfaccia utente + Proporzioni della interfaccia utente Allow Config Export [ACE] @@ -257,31 +257,31 @@ 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. - + Hide Ukryj - + Top right, downwards Po prawej u góry, w dół - + Top right, to the left Po prawej u góry, do lewej - + Top left, downwards Po lewej u góry, w dół - + Top left, to the right Po lewej u góry, do prawej - + Top Góra - + Bottom Dół diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 5351d0f3bc..d7d5b7ac98 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -35,6 +35,7 @@ Téléportation à la base Teletransportar para a Base Bázisra teleportálás + Teleporta alla base Teleport to Rallypoint @@ -46,6 +47,7 @@ Téléporation au point de ralliement Teletransportar para o ponto de encontro Gyülekezőpontra teleportálás + Teleporta al rallypoint Teleported to Base From 1610221a70d516b536602f0a114282458f2eb662 Mon Sep 17 00:00:00 2001 From: GieNkoV Date: Tue, 12 May 2015 20:01:10 +0200 Subject: [PATCH 0226/1101] Remove duplicated strings --- addons/captives/stringtable.xml | 8 - addons/medical/stringtable.xml | 372 ----------------------------- addons/mk6mortar/stringtable.xml | 32 --- addons/optionsmenu/stringtable.xml | 44 ---- 4 files changed, 456 deletions(-) diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 0d01cbafc6..07cf780e19 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -201,13 +201,5 @@ 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 - - Make Unit Surrender - Poddaj się! - - - 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 - diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 9cfc7e15d5..a5ffc6a4ba 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3065,378 +3065,6 @@ [ACE] Medical Supply Crate (Advanced) [ACE] Skrzynka z zapasami medycznymi (zaawansowana) - - ACE Medical - ACE Opcje medyczne - - - Medical Settings [ACE] - Ustawienia medyczne [ACE] - - - Medical Level - Poziom medyczny - - - What is the medical simulation level? - Jaki jest poziom symulacji medycznej? - - - Basic - Podstawowy - - - Advanced - Zaawansowany - - - Medics setting - Poziom medyków - - - What is the level of detail prefered for medics? - Jaki jest poziom detali medycznych wyświetlanych dla medyków? - - - Disable medics - Wyłącz medyków - - - Enable Litter - Aktywuj odpadki - - - Enable litter being created upon treatment - Twórz odpadki medyczne podczas leczenia - - - Life time of litter objects - Długość życia odpadków - - - 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. - - - Enable Screams - Aktywuj wrzaski - - - Enable screaming by injuried units - Aktywuj wrzeszczenie z bólu przez ranne jednostki - - - Player Damage - Próg obrażeń graczy - - - 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? - - - AI Damage - Próg obrażeń AI - - - 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? - - - AI Unconsciousness - Nieprzytomność AI - - - Allow AI to go unconscious - Czy AI może być nieprzytomne od odniesionych obrażeń? - - - Disabled - Wyłączone - - - Enabled - Włączone - - - Prevent instant death - Wył. natychmiast. śmierć - - - 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ń - - - Bleeding coefficient - Mnożnik krwawienia - - - Coefficient to modify the bleeding speed - Mnożnik modyfikujący prędkość wykrwawiania się - - - Pain coefficient - Mnożnik bólu - - - Coefficient to modify the pain intensity - Mnożnik modyfikujący intensywność bólu - - - Sync status - Synchronizuj status - - - Keep unit status synced. Recommended on. - Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. - - - Provides a medical system for both players and AI. - Moduł ten dostarcza system medyczny dla graczy oraz AI. - - - Advanced Medical Settings [ACE] - Zaawansowane ustawienia medyczne [ACE] - - - Enabled for - Aktywne dla - - - Select what units the advanced medical system will be enabled for - Wybierz dla kogo zaawansowany system medyczny będzie aktywny - - - Players only - Tylko dla graczy - - - Players and AI - Gracze oraz AI - - - Enable Advanced wounds - Akt. zaawansowane rany - - - Allow reopening of bandaged wounds? - Pozwól na otwieranie się zabandażowanych ran? - - - Vehicle Crashes - Obrażenia od kolizji - - - Do units take damage from a vehicle crash? - Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? - - - Allow PAK - Ust. apteczek osobistych - - - Who can use the PAK for full heal? - Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? - - - Anyone - Wszyscy - - - Medics only - Tylko medycy - - - Doctors only - Tylko doktorzy - - - Remove PAK on use - Usuń apteczkę po użyciu - - - Should PAK be removed on usage? - Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? - - - No - Nie - - - Yes - Tak - - - Locations PAK - Ogr. apteczek osobistych - - - Where can the personal aid kit be used? - Gdzie można korzystać z apteczek osobistych? - - - Anywhere - Wszędzie - - - Medical vehicles - Pojazdy medyczne - - - Medical facility - Budynki medyczne - - - Vehicles & facility - Pojazdy i budynki medyczne - - - Disabled - Wyłączone - - - Allow Surgical kit (Adv) - Ust. zestawu chirurg. - - - Who can use the surgical kit? - Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? - - - Remove Surgical kit (Adv) - Usuń zest. chir. po użyciu - - - Should Surgical kit be removed on usage? - Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? - - - Locations Surgical kit (Adv) - Ogr. zestawu chirurg. - - - Where can the Surgical kit be used? - Gdzie można korzystać z zestawu chirurgicznego? - - - Configure the treatment settings from ACE Medical - Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE - - - Revive Settings [ACE] - Ustawienia wskrzeszania [ACE] - - - Enable Revive - Aktywuj wskrzeszanie - - - Enable a basic revive system - Aktywuj podstawowy system wskrzeszania - - - Max Revive time - Maks. czas agonii - - - Max amount of seconds a unit can spend in revive state - Maksymalna długość agonii w sekundach (czas na wskrzeszenie) - - - Max Revive lives - Maks. ilość wskrzeszeń - - - Max amount of lives a unit. 0 or -1 is disabled. - Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. - - - 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. - - - Set Medic Class [ACE] - Ustaw klasę medyka [ACE] - - - List - 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. - - - Is Medic - Klasa medyczna - - - - - - - None - Żadna - - - Regular medic - Zwykły medyk - - - Doctor (Only Advanced Medics) - Doktor (tylko zaawansowani medycy) - - - Assigns the ACE medic class to a unit - Moduł ten przypisuje klasę medyka ACE do jednostek. - - - Set Medical Vehicle [ACE] - Ustaw pojazd medyczny [ACE] - - - List - 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. - - - Is Medical Vehicle - Jest pojazdem med. - - - Whatever or not the objects in the list will be a medical vehicle. - Czy pojazdy z tej listy są pojazdami medycznymi. - - - 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. - - - Set Medical Facility [ACE] - Ustaw budynek medyczny [ACE] - - - Is Medical Facility - Jest budynkiem med. - - - Registers an object as a medical facility - Przypisuje danemu obiektowi status budynku medycznego - - - 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. - - - [ACE] Medical Supply Crate (Basic) - [ACE] Skrzynka z zapasami medycznymi (podstawowa) - - - [ACE] Medical Supply Crate (Advanced) - [ACE] Skrzynka z zapasami medycznymi (zaawansowana) - diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index cb4a7c5376..37c7d322ad 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -81,37 +81,5 @@ Moduł ten pozwala dostosować ustawienia moździerza MK6. - - MK6 Settings - Moździerz MK6 - Ustawienia - - - Air Resistance - Opór powietrza - - - 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 - - - Allow MK6 Computer - Komputer 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) - - - Allow MK6 Compass - Kompas MK6 - - - Show the MK6 Digital Compass - Pokaż kompas MK6 - - - - Moduł ten pozwala dostosować ustawienia moździerza MK6. - diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 18ee57310a..22a1a88cfa 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -285,49 +285,5 @@ Bottom Dół - - Allow Config Export [ACE] - Pozwól na eksport ustawień [ACE] - - - Allow - Zezwól - - - Allow export of all settings to a server config formatted. - Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. - - - 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. - - - Hide - Ukryj - - - Top right, downwards - Po prawej u góry, w dół - - - Top right, to the left - Po prawej u góry, do lewej - - - Top left, downwards - Po lewej u góry, w dół - - - Top left, to the right - Po lewej u góry, do prawej - - - Top - Góra - - - Bottom - Dół - From 2620f5ebd92aba72b6fdd9f4938e82a9c600b5bf Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 12 May 2015 19:55:38 +0100 Subject: [PATCH 0227/1101] Made module also default to disabled --- addons/zeus/CfgVehicles.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index a1f71f405a..5750ab52d6 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -18,25 +18,25 @@ class CfgVehicles { displayName = "Ascension Messages"; description = "Display global popup messages when a player is assigned as Zeus."; typeName = "BOOL"; - defaultValue = 1; + defaultValue = 0; }; class zeusBird { displayName = "Zeus Eagle"; description = "Spawn an eagle that follows the Zeus camera."; typeName = "BOOL"; - defaultValue = 1; + defaultValue = 0; }; class remoteWind { displayName = "Wind Sounds"; description = "Play wind sounds when Zeus remote controls a unit."; typeName = "BOOL"; - defaultValue = 1; + defaultValue = 0; }; class radioOrdnance { - displayName = "Ordnance Radio Warning"; + displayName = "Ordnance Warning"; description = "Play a radio warning when Zeus uses ordnance."; typeName = "BOOL"; - defaultValue = 1; + defaultValue = 0; }; class revealMines { displayName = "Reveal Mines"; @@ -46,6 +46,7 @@ class CfgVehicles { class disable { name = "Disabled"; value = 0; + default = 1; }; class partial { name = "Reveal to Allies"; @@ -54,7 +55,6 @@ class CfgVehicles { class full { name = "Allies + Map Markers"; value = 2; - default = 1; }; }; }; From e58d23d8853cb09d66565d79cbca50916a48423f Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 12 May 2015 21:32:30 +0200 Subject: [PATCH 0228/1101] Removed Titan realistic name as it's not implemented yet as a Spike --- addons/realisticnames/CfgVehicles.hpp | 8 ++++---- addons/realisticnames/CfgWeapons.hpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/realisticnames/CfgVehicles.hpp b/addons/realisticnames/CfgVehicles.hpp index 0fa3111243..cf1ce87b80 100644 --- a/addons/realisticnames/CfgVehicles.hpp +++ b/addons/realisticnames/CfgVehicles.hpp @@ -407,7 +407,7 @@ class CfgVehicles { displayName = "$STR_ACE_RealisticNames_launch_RPG32_Name"; }; - class Weapon_launch_Titan_F: Launcher_Base_F { + /*class Weapon_launch_Titan_F: Launcher_Base_F { displayName = "$STR_ACE_RealisticNames_launch_Titan_Name"; }; @@ -417,13 +417,13 @@ class CfgVehicles { class Weapon_launch_B_Titan_F: Launcher_Base_F { displayName = "$STR_ACE_RealisticNames_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 { + /*class Weapon_launch_launch_B_Titan_short_F: Launcher_Base_F { displayName = "$STR_ACE_RealisticNames_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 {}; diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp index 8eb3c04577..e61457df5d 100644 --- a/addons/realisticnames/CfgWeapons.hpp +++ b/addons/realisticnames/CfgWeapons.hpp @@ -181,12 +181,12 @@ class CfgWeapons { displayName = "$STR_ACE_RealisticNames_launch_RPG32_Name"; }; - class launch_Titan_base: Launcher_Base_F { + /*class launch_Titan_base: Launcher_Base_F { displayName = "$STR_ACE_RealisticNames_launch_Titan_Name"; }; class launch_Titan_short_base: launch_Titan_base { displayName = "$STR_ACE_RealisticNames_launch_Titan_short_Name"; - }; + };*/ class launch_NLAW_F: Launcher_Base_F { displayName = "$STR_ACE_RealisticNames_launch_NLAW_Name"; From e613db1feadafd1f203b17d8e18c7e50f7a67303 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 May 2015 15:40:12 -0500 Subject: [PATCH 0229/1101] Add missing script_component include --- addons/common/functions/fnc_waveHeightAt.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_waveHeightAt.sqf b/addons/common/functions/fnc_waveHeightAt.sqf index fbfe5fb241..e05e4219b7 100644 --- a/addons/common/functions/fnc_waveHeightAt.sqf +++ b/addons/common/functions/fnc_waveHeightAt.sqf @@ -4,12 +4,13 @@ * Gets the wave height at a specific location. Uses a logic, so may be performance iffy * * Arguments: - * 0: Position ASL to get height at + * 0: Position ASL to get height at * * Return Value: * Wave height in meters * */ +#include "script_component.hpp" if(isNil QGVAR(waveHeightLogic)) then { GVAR(waveHeightLogic) = "Logic" createVehicleLocal [0,0,0]; From 1827d8ad959ad6d9c0c06f41033b6f022a0bdfa9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 May 2015 16:04:42 -0500 Subject: [PATCH 0230/1101] Fix #1024 - Adjust self iMenu for wave height --- .../interact_menu/functions/fnc_keyDown.sqf | 7 +++++++ .../functions/fnc_renderActionPoints.sqf | 19 ++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index 464466ae3a..5416440269 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -64,6 +64,13 @@ if (GVAR(useCursorMenu)) then { GVAR(selfMenuOffset) = ((positionCameraToWorld [0, 0, 2]) call EFUNC(common,positionToASL)) vectorDiff ((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)); +private ["_wavesAtOrigin", "_wavesAtVirtualPoint"]; + +_wavesAtOrigin = [(positionCameraToWorld [0, 0, 0])] call EFUNC(common,waveHeightAt); +_wavesAtVirtualPoint = [(positionCameraToWorld [0, 0, 2])] call EFUNC(common,waveHeightAt); +GVAR(selfMenuOffset) set [2, ((GVAR(selfMenuOffset) select 2) + _wavesAtOrigin - _wavesAtVirtualPoint)]; + + ["interactMenuOpened", [_menuType]] call EFUNC(common,localEvent); true diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index 8e6cb7d390..6579bd33e7 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -14,7 +14,7 @@ GVAR(currentOptions) = []; -private ["_player","_numInteractObjects","_numInteractions","_actionsVarName","_classActions","_target","_player","_action","_cameraPos","_cameraDir", "_lambda", "_nearestObjects", "_pos"]; +private ["_player","_numInteractObjects","_numInteractions","_actionsVarName","_classActions","_target","_player","_action","_cameraPos","_cameraDir", "_lambda", "_nearestObjects", "_pos", "_virtualPoint", "_wavesAtOrigin", "_wavesAtVirtualPoint"]; _player = ACE_player; _fnc_renderNearbyActions = { @@ -101,14 +101,19 @@ _fnc_renderSelfActions = { // Iterate through base level class actions and render them if appropiate _actionsVarName = format [QGVAR(SelfAct_%1), typeOf _target]; _classActions = missionNamespace getVariable [_actionsVarName, []]; + + _pos = if !(GVAR(useCursorMenu)) then { + _virtualPoint = (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition); + _wavesAtOrigin = [(positionCameraToWorld [0, 0, 0])] call EFUNC(common,waveHeightAt); + _wavesAtVirtualPoint = [_virtualPoint] call EFUNC(common,waveHeightAt); + _virtualPoint set [2, ((_virtualPoint select 2) - _wavesAtOrigin + _wavesAtVirtualPoint)]; + _virtualPoint + } else { + [0.5, 0.5] + }; + { _action = _x; - - _pos = if !(GVAR(useCursorMenu)) then { - (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition) - } else { - [0.5, 0.5] - }; [_target, _action, _pos] call FUNC(renderBaseMenu); } forEach _classActions; }; From 1227d6e3fb56b23bc186be96256ce7ada912474d Mon Sep 17 00:00:00 2001 From: Dharma Bellamkonda Date: Tue, 12 May 2015 18:28:18 -0600 Subject: [PATCH 0231/1101] Create missing documentation placeholders Creates placeholder documentation for modules which did not previously have any. If a module had the same name and apparent purpose as a module from AGM, AGM's documentation was imported into the placeholder. These documentation are useful to users for explaining what ACE3 changes. They are also useful to community admins who want to create a custom distribution of ACE3 and need to know which modules to disable. The documentation needs to be significantly fleshed out before it's ready for public consumption, but this should be a helpful start. --- documentation/feature/advanced_ballistics.md | 18 +++++++++++ documentation/feature/ai.md | 27 ++++++++++++++++ documentation/feature/aircraft.md | 25 +++++++++++++++ documentation/feature/apl.md | 18 +++++++++++ documentation/feature/atragmx.md | 18 +++++++++++ documentation/feature/attach.md | 18 +++++++++++ documentation/feature/backpacks.md | 16 ++++++++++ documentation/feature/ballistics.md | 28 ++++++++++++++++ documentation/feature/captives.md | 20 ++++++++++++ documentation/feature/difficulties.md | 16 ++++++++++ documentation/feature/disarming.md | 18 +++++++++++ documentation/feature/disposable.md | 16 ++++++++++ documentation/feature/dragging.md | 18 +++++++++++ documentation/feature/explosives.md | 20 ++++++++++++ documentation/feature/fcs.md | 21 ++++++++++++ documentation/feature/flashsuppressors.md | 18 +++++++++++ documentation/feature/frag.md | 18 +++++++++++ documentation/feature/gforces.md | 18 +++++++++++ documentation/feature/goggles.md | 18 +++++++++++ documentation/feature/grenades.md | 20 ++++++++++++ documentation/feature/hearing.md | 19 +++++++++++ documentation/feature/hitreactions.md | 18 +++++++++++ documentation/feature/interact_menu.md | 18 +++++++++++ documentation/feature/interaction.md | 18 +++++++++++ documentation/feature/inventory.md | 16 ++++++++++ documentation/feature/javelin.md | 17 +++++++--- documentation/feature/kestrel4500.md | 18 +++++++++++ documentation/feature/laser.md | 18 +++++++++++ documentation/feature/laser_selfdesignate.md | 18 +++++++++++ documentation/feature/laserpointer.md | 18 +++++++++++ documentation/feature/logistics_uavbattery.md | 18 +++++++++++ documentation/feature/logistics_wirecutter.md | 18 +++++++++++ documentation/feature/magazinerepack.md | 18 +++++++++++ documentation/feature/map.md | 18 +++++++++++ documentation/feature/maptools.md | 18 +++++++++++ documentation/feature/markers.md | 16 ++++++++++ documentation/feature/microdagr.md | 18 +++++++++++ documentation/feature/missileguidance.md | 18 +++++++++++ documentation/feature/missionmodules.md | 18 +++++++++++ documentation/feature/mk6mortar.md | 18 +++++++++++ documentation/feature/movement.md | 24 ++++++++++++++ documentation/feature/nametags.md | 16 ++++++++++ documentation/feature/nightvision.md | 23 +++++++++++++ documentation/feature/noidle.md | 18 +++++++++++ documentation/feature/noradio.md | 17 ++++++++++ documentation/feature/norearm.md | 18 +++++++++++ documentation/feature/optics.md | 18 +++++++++++ documentation/feature/optionsmenu.md | 18 +++++++++++ documentation/feature/ovepressure.md | 18 +++++++++++ documentation/feature/overheating.md | 27 ++++++++++++++++ documentation/feature/parachute.md | 22 +++++++++++++ documentation/feature/protection.md | 18 +++++++++++ documentation/feature/ragdolls.md | 16 ++++++++++ documentation/feature/realisticnames.md | 17 ++++++++++ documentation/feature/recoil.md | 20 ++++++++++++ documentation/feature/reload.md | 16 ++++++++++ documentation/feature/reloadlaunchers.md | 19 +++++++++++ documentation/feature/respawn.md | 20 ++++++++++++ documentation/feature/safemode.md | 16 ++++++++++ documentation/feature/scopes.md | 16 ++++++++++ documentation/feature/smallarms.md | 20 ++++++++++++ documentation/feature/switchunits.md | 18 +++++++++++ documentation/feature/testmissions.md | 18 +++++++++++ documentation/feature/thermals.md | 16 ++++++++++ documentation/feature/vector.md | 16 ++++++++++ documentation/feature/vehiclelock.md | 18 +++++++++++ documentation/feature/vehicles.md | 32 +++++++++++++++++++ documentation/feature/weaponselect.md | 24 ++++++++++++++ documentation/feature/weather.md | 18 +++++++++++ documentation/feature/windeflection.md | 16 ++++++++++ 70 files changed, 1313 insertions(+), 5 deletions(-) create mode 100644 documentation/feature/advanced_ballistics.md create mode 100644 documentation/feature/ai.md create mode 100644 documentation/feature/aircraft.md create mode 100644 documentation/feature/apl.md create mode 100644 documentation/feature/atragmx.md create mode 100644 documentation/feature/attach.md create mode 100644 documentation/feature/backpacks.md create mode 100644 documentation/feature/ballistics.md create mode 100644 documentation/feature/captives.md create mode 100644 documentation/feature/difficulties.md create mode 100644 documentation/feature/disarming.md create mode 100644 documentation/feature/disposable.md create mode 100644 documentation/feature/dragging.md create mode 100644 documentation/feature/explosives.md create mode 100644 documentation/feature/fcs.md create mode 100644 documentation/feature/flashsuppressors.md create mode 100644 documentation/feature/frag.md create mode 100644 documentation/feature/gforces.md create mode 100644 documentation/feature/goggles.md create mode 100644 documentation/feature/grenades.md create mode 100644 documentation/feature/hearing.md create mode 100644 documentation/feature/hitreactions.md create mode 100644 documentation/feature/interact_menu.md create mode 100644 documentation/feature/interaction.md create mode 100644 documentation/feature/inventory.md create mode 100644 documentation/feature/kestrel4500.md create mode 100644 documentation/feature/laser.md create mode 100644 documentation/feature/laser_selfdesignate.md create mode 100644 documentation/feature/laserpointer.md create mode 100644 documentation/feature/logistics_uavbattery.md create mode 100644 documentation/feature/logistics_wirecutter.md create mode 100644 documentation/feature/magazinerepack.md create mode 100644 documentation/feature/map.md create mode 100644 documentation/feature/maptools.md create mode 100644 documentation/feature/markers.md create mode 100644 documentation/feature/microdagr.md create mode 100644 documentation/feature/missileguidance.md create mode 100644 documentation/feature/missionmodules.md create mode 100644 documentation/feature/mk6mortar.md create mode 100644 documentation/feature/movement.md create mode 100644 documentation/feature/nametags.md create mode 100644 documentation/feature/nightvision.md create mode 100644 documentation/feature/noidle.md create mode 100644 documentation/feature/noradio.md create mode 100644 documentation/feature/norearm.md create mode 100644 documentation/feature/optics.md create mode 100644 documentation/feature/optionsmenu.md create mode 100644 documentation/feature/ovepressure.md create mode 100644 documentation/feature/overheating.md create mode 100644 documentation/feature/parachute.md create mode 100644 documentation/feature/protection.md create mode 100644 documentation/feature/ragdolls.md create mode 100644 documentation/feature/realisticnames.md create mode 100644 documentation/feature/recoil.md create mode 100644 documentation/feature/reload.md create mode 100644 documentation/feature/reloadlaunchers.md create mode 100644 documentation/feature/respawn.md create mode 100644 documentation/feature/safemode.md create mode 100644 documentation/feature/scopes.md create mode 100644 documentation/feature/smallarms.md create mode 100644 documentation/feature/switchunits.md create mode 100644 documentation/feature/testmissions.md create mode 100644 documentation/feature/thermals.md create mode 100644 documentation/feature/vector.md create mode 100644 documentation/feature/vehiclelock.md create mode 100644 documentation/feature/vehicles.md create mode 100644 documentation/feature/weaponselect.md create mode 100644 documentation/feature/weather.md create mode 100644 documentation/feature/windeflection.md diff --git a/documentation/feature/advanced_ballistics.md b/documentation/feature/advanced_ballistics.md new file mode 100644 index 0000000000..fd44bb21b9 --- /dev/null +++ b/documentation/feature/advanced_ballistics.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Advanced Ballistics +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/ai.md b/documentation/feature/ai.md new file mode 100644 index 0000000000..b82192b920 --- /dev/null +++ b/documentation/feature/ai.md @@ -0,0 +1,27 @@ +--- +layout: wiki +title: AI (Artifical Intelligence) +group: feature +order: 5 +parent: wiki +--- + +# Overview +## 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. +Note: All these values can still be adjusted via scripts, these arrays just change what 0 & 1 are for setSkill. +## Firing in burst mode +AIs will now use the automatic mode of their weapons on short distances, instead of always relying on firing single shots in quick succession. +## Longer engagement ranges +The maximum engagement ranges are increased: AI will fire in bursts with variable length on high ranges of 500 - 700 meters, depending on their weapon and optic. +## No deadzones in CQB +Some weapons had minimum engagement ranges. If you were as close as 2 meters to an AAF soldier, he wouldn't open fire, because the AI couldn't find any valid fire mode for their weapon. AGM removes this behaviour mostly notable in CQB by adding a valid firing mode. +## No scripting +All changes of AGM AI are config based to ensure full compatibility with advanced AI modifications like ASR AI. + +# 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. diff --git a/documentation/feature/aircraft.md b/documentation/feature/aircraft.md new file mode 100644 index 0000000000..6b99540466 --- /dev/null +++ b/documentation/feature/aircraft.md @@ -0,0 +1,25 @@ +--- +layout: wiki +title: Aircraft +group: feature +order: 5 +parent: wiki +--- +# Overview +## Adjusted flight behaviour +Changes the flight behaviour of various aircraft. +## Various adjustments to A2A, A2G and G2A munitions +- needs documentaion - +## Missile lock warnings +Adds missile-lock warning systems to helicopters and planes based on the various real life capabilities. +## Semi-automatic flare mode +Adds the semi-automatic flare mode known from Arma 2. The key to switch the mode still exists in Arma 3's key settings, but is unused. +### Ejecting from pilot and copilot seats +Pilots and copilots of all helicopters can now eject. +## Laser marker for wildcat +Adds a laser marker to the copilot seat of the Wildcat. +## HUD for AH-9 +Adds a HUD to the AH-9 based on the comanches HUD. + +# Dependencies +List of modules that must be present for this module to work. diff --git a/documentation/feature/apl.md b/documentation/feature/apl.md new file mode 100644 index 0000000000..fe69507f32 --- /dev/null +++ b/documentation/feature/apl.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: APL +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/atragmx.md b/documentation/feature/atragmx.md new file mode 100644 index 0000000000..77affe1326 --- /dev/null +++ b/documentation/feature/atragmx.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: ATragMX +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/attach.md b/documentation/feature/attach.md new file mode 100644 index 0000000000..7bf2c400e6 --- /dev/null +++ b/documentation/feature/attach.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Attach +group: feature +parent: wiki +--- +# Overview +## Attach items to uniform +Enables player to attach IR grenades and chemlights to themselves. +## IR Strobe +Adds an attachable IR strobe, which is only visible using night vision devices and offers better visibility than IR grenades.re 2. + +# 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. diff --git a/documentation/feature/backpacks.md b/documentation/feature/backpacks.md new file mode 100644 index 0000000000..ade414525f --- /dev/null +++ b/documentation/feature/backpacks.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Backpacks +group: feature +parent: wiki +--- +# Overview +## Lock backpack +Adds the ability to lock backpacks. Locked backpacks can't be accessed by others. + +# 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. diff --git a/documentation/feature/ballistics.md b/documentation/feature/ballistics.md new file mode 100644 index 0000000000..895f1e37ab --- /dev/null +++ b/documentation/feature/ballistics.md @@ -0,0 +1,28 @@ +--- +layout: wiki +title: Ballistics +group: feature +parent: wiki +--- +# Overview +## Realistic rifle ammunition +Changes include adjusted muzzle velocity, air friction and dispersion based on real life values. +## Body armour nerf +Nerfs protection values of vests, CSAT uniforms and various campaign only gear to more realistic levels comparable to Arma 2 levels. +## Realistic silencers and sub-sonic 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 super sonic projectiles, AGM introduces sub sonic ammunition. This is also fully compatible with AI. Sub sonic ammunition is available for the calibers 5.56mm, 6.5mm and 7.62mm. +## Armour piercing ammunition +Armour piercing rounds have higher penetration values against light armoured targets or other obstacles on the battlefield. Their drawback is a slighly decreased man-stopping power. AP rounds are available for the calibers 5.56mm, 6.5mm and 7.62mm. +## IR-Dim tracer ammunition +IR-Dim ammunition is similar to tracer rounds, but their tracers are only visible using night vision devices. +## M118 Long range ammunition +The M14 EBR now uses ammunition with decreased muzzle velocity and air friction to improve precission on long ranges. +## Flash suppressors +Flash suppressors are similar to sound suppressors and prevent the muzzle flash reducing visibilty without decreasing combat effectiveness. Flash suppressors are available for the calibers 5.56mm, 6.5mm, 7.62mm, .45 ACP and 9mm. + +# 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. diff --git a/documentation/feature/captives.md b/documentation/feature/captives.md new file mode 100644 index 0000000000..305610cdce --- /dev/null +++ b/documentation/feature/captives.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Captives +group: feature +parent: wiki +--- +# Overview +## Take captives +Introduces a captivity system for taking and moving prisoners. +## Load and unload captives into / from vehicles +- needs documentaion - +## Frisk captives +- needs documentaion - + +# 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. diff --git a/documentation/feature/difficulties.md b/documentation/feature/difficulties.md new file mode 100644 index 0000000000..626576ee09 --- /dev/null +++ b/documentation/feature/difficulties.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Difficulties +group: feature +parent: wiki +--- +# Overview +## Elite mode adjustments +Adjusts the default settings for the hardest difficulty to more closely resemble A2 settings. (No crosshair, stat screen, death messages...) + +# 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. diff --git a/documentation/feature/disarming.md b/documentation/feature/disarming.md new file mode 100644 index 0000000000..7b30494adc --- /dev/null +++ b/documentation/feature/disarming.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Disarming +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/disposable.md b/documentation/feature/disposable.md new file mode 100644 index 0000000000..dd634eb9c1 --- /dev/null +++ b/documentation/feature/disposable.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Disposable +group: feature +parent: wiki +--- +# Overview +## NLAW disposable anti tank weapon +Makes the NLAW disposable and provides the tools for other addons to do the same. + +# 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. diff --git a/documentation/feature/dragging.md b/documentation/feature/dragging.md new file mode 100644 index 0000000000..28d5c6089f --- /dev/null +++ b/documentation/feature/dragging.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Dragging +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/explosives.md b/documentation/feature/explosives.md new file mode 100644 index 0000000000..78f09d62bb --- /dev/null +++ b/documentation/feature/explosives.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Explosives +group: feature +parent: wiki +--- +# Overview +## Advanced explosives placement +Enables more precise placement of explosives. +## More trigger types +Offers different trigger types, like clackers and dead man switches. +## Attack explosives to vehicles +Enables attaching explosives to vehicles. + +# 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. diff --git a/documentation/feature/fcs.md b/documentation/feature/fcs.md new file mode 100644 index 0000000000..4eefe05e5b --- /dev/null +++ b/documentation/feature/fcs.md @@ -0,0 +1,21 @@ +--- +layout: wiki +title: FCS (Fire Control System) +group: feature +parent: wiki +--- +# Overview +## Fire control system +Offers a custom fire control system for tanks and helicopters. It enables engaging stationary and moving targets. +## Manual lasing targets +Changes the default rangefinders, including those in vehicles, to require manual lasing. +## Air burst ammunition +Anti air cannons can now use airburst ammunition. It will explode on the FCS' zeroed in range. + +# Usage +To engage moving targets, place the crosshair on the enemy vehicle and press and hold tab. Follow the moving target with your crosshair for about 2 seconds and release tab. The optic will now be adjusted sideways to ensure a hit. + +To use manual lasing, place the crosshair on the object to range and press and hold tab. + +# Dependencies +List of modules that must be present for this module to work. diff --git a/documentation/feature/flashsuppressors.md b/documentation/feature/flashsuppressors.md new file mode 100644 index 0000000000..4217299857 --- /dev/null +++ b/documentation/feature/flashsuppressors.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Flash Suppressors +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/frag.md b/documentation/feature/frag.md new file mode 100644 index 0000000000..4d30c8d9f9 --- /dev/null +++ b/documentation/feature/frag.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Frag +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/gforces.md b/documentation/feature/gforces.md new file mode 100644 index 0000000000..73c3b321ed --- /dev/null +++ b/documentation/feature/gforces.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: G-Forces +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/goggles.md b/documentation/feature/goggles.md new file mode 100644 index 0000000000..1d77e342d4 --- /dev/null +++ b/documentation/feature/goggles.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Goggles +group: feature +parent: wiki +--- +# Overview +## Visual Effects for eyewear +Adds color tint to sunglasses and other eyewear. Causes raindrops to appear on +the screen in rain. Causes dirt to appear on the screen when dirt is kicked up +nearby (e.g. explsions, rotor wash, bullet impacts). + +# 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. diff --git a/documentation/feature/grenades.md b/documentation/feature/grenades.md new file mode 100644 index 0000000000..67918ae77b --- /dev/null +++ b/documentation/feature/grenades.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Grenades +group: feature +parent: wiki +--- +# Overview +## Throw modes +Provides different modes for throwing grenades (high throw, precision throw and drop mode). +## Hand flares +Adds throwable hand flares in the colors white, red, green and yellow. Additionally buffs existing flares. +## M84 stun grenade +Adds stun grenade. This will also affect AI. + +# 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. diff --git a/documentation/feature/hearing.md b/documentation/feature/hearing.md new file mode 100644 index 0000000000..32d4fce986 --- /dev/null +++ b/documentation/feature/hearing.md @@ -0,0 +1,19 @@ +--- +layout: wiki +title: Hearing +group: feature +parent: wiki +--- +# Overview +## Hearing damage simulation +Introduces hearing damage caused by nearby explosions and large-caliber weapons. +## Earplugs +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. + +# 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. diff --git a/documentation/feature/hitreactions.md b/documentation/feature/hitreactions.md new file mode 100644 index 0000000000..c109f10ddd --- /dev/null +++ b/documentation/feature/hitreactions.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Hit Reactions +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/interact_menu.md b/documentation/feature/interact_menu.md new file mode 100644 index 0000000000..d00ba6f977 --- /dev/null +++ b/documentation/feature/interact_menu.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Interact Menu +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/interaction.md b/documentation/feature/interaction.md new file mode 100644 index 0000000000..36365342ae --- /dev/null +++ b/documentation/feature/interaction.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Interaction +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/inventory.md b/documentation/feature/inventory.md new file mode 100644 index 0000000000..8dac5b6644 --- /dev/null +++ b/documentation/feature/inventory.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Inventory +group: feature +parent: wiki +--- +# Overview +## Resized inventory UI +Makes the inventory dialog bigger and increases the number of items that can be seen in the list at once. + +# 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. diff --git a/documentation/feature/javelin.md b/documentation/feature/javelin.md index b253a25fc9..78102840c1 100644 --- a/documentation/feature/javelin.md +++ b/documentation/feature/javelin.md @@ -1,13 +1,18 @@ --- layout: wiki -title: Javelin/Titan Locking and Firing +title: Javelin group: feature -order: 5 parent: wiki --- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## Sub-feature 2 +Short description of sub-feature 2. -## 1. Overview -Blah blah blah +# Usage +Short overview of how to use the feature, e.g. menu options, key bindings, +instructions. May not apply to all modules. Steps to lock titan/Javelin: @@ -17,5 +22,7 @@ Steps to lock titan/Javelin: 4. Hold TAB over a target, it will start beeping and the constraint boxes will appear 5. Once the beeping changes to LOCK tone, and the lock crosshairs appear, click fire without releasing tab - CTRL+TAB is default key to change firemode (configurable as a key) + +# Dependencies +List of modules that must be present for this module to work. diff --git a/documentation/feature/kestrel4500.md b/documentation/feature/kestrel4500.md new file mode 100644 index 0000000000..0c6e03d304 --- /dev/null +++ b/documentation/feature/kestrel4500.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Kestrel 4500 +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/laser.md b/documentation/feature/laser.md new file mode 100644 index 0000000000..6e1de22002 --- /dev/null +++ b/documentation/feature/laser.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Laser +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/laser_selfdesignate.md b/documentation/feature/laser_selfdesignate.md new file mode 100644 index 0000000000..8405d57c43 --- /dev/null +++ b/documentation/feature/laser_selfdesignate.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Laser Self-Designate +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/laserpointer.md b/documentation/feature/laserpointer.md new file mode 100644 index 0000000000..c22471e320 --- /dev/null +++ b/documentation/feature/laserpointer.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Laser Pointer +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/logistics_uavbattery.md b/documentation/feature/logistics_uavbattery.md new file mode 100644 index 0000000000..6cd3bc0b3b --- /dev/null +++ b/documentation/feature/logistics_uavbattery.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Logistics - UAV Battery +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/logistics_wirecutter.md b/documentation/feature/logistics_wirecutter.md new file mode 100644 index 0000000000..97d684e697 --- /dev/null +++ b/documentation/feature/logistics_wirecutter.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Logistics - Wirecutter +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/magazinerepack.md b/documentation/feature/magazinerepack.md new file mode 100644 index 0000000000..e9ae26f315 --- /dev/null +++ b/documentation/feature/magazinerepack.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Magazine Repack +group: feature +parent: wiki +--- +# Overview +## Repacking magazines +Adds ability to repack magazines of the same type. An optional module provides +options to adjust the repacking time of single rounds and whole magazines to +the mission maker. + +# 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. diff --git a/documentation/feature/map.md b/documentation/feature/map.md new file mode 100644 index 0000000000..88a3493d9e --- /dev/null +++ b/documentation/feature/map.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Map +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/maptools.md b/documentation/feature/maptools.md new file mode 100644 index 0000000000..6814a5c1f5 --- /dev/null +++ b/documentation/feature/maptools.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Map Tools +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/markers.md b/documentation/feature/markers.md new file mode 100644 index 0000000000..eae1bfe333 --- /dev/null +++ b/documentation/feature/markers.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Markers +group: feature +parent: wiki +--- +# Overview +## Improved marker placement +Expands the "Insert Marker" menu and allows to rotate map markers. Shows the currently selected channel to prevent misplacement. + +# 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. diff --git a/documentation/feature/microdagr.md b/documentation/feature/microdagr.md new file mode 100644 index 0000000000..a98730c9f4 --- /dev/null +++ b/documentation/feature/microdagr.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: MicroDAGR +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/missileguidance.md b/documentation/feature/missileguidance.md new file mode 100644 index 0000000000..fe5aa792b3 --- /dev/null +++ b/documentation/feature/missileguidance.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Missile Guidance +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/missionmodules.md b/documentation/feature/missionmodules.md new file mode 100644 index 0000000000..771a5ef290 --- /dev/null +++ b/documentation/feature/missionmodules.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Mission Modules +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/mk6mortar.md b/documentation/feature/mk6mortar.md new file mode 100644 index 0000000000..af718eedce --- /dev/null +++ b/documentation/feature/mk6mortar.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Mk6 Mortar +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/movement.md b/documentation/feature/movement.md new file mode 100644 index 0000000000..f1d9d93df9 --- /dev/null +++ b/documentation/feature/movement.md @@ -0,0 +1,24 @@ +--- +layout: wiki +title: Movement +group: feature +parent: wiki +--- +# Overview +## Jumping +Adds the ability to jump when pressing the vault key while moving. (V - key) +## Minor animation tweaks +Walking slowly with the weapon lowered now has a less silly looking animation. +## 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 +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 AGM Options Menu. +## Optics view in all stances +The player can now use the sights of rifles and pistols in all prone stances. + +# 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. diff --git a/documentation/feature/nametags.md b/documentation/feature/nametags.md new file mode 100644 index 0000000000..10ff3404c0 --- /dev/null +++ b/documentation/feature/nametags.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Nametags +group: feature +parent: wiki +--- +# Overview +## Nametag and rank display +Adds nametags and soldier ranks to friendly players in multiplayer. This can be adjusted in the AGM 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. + +# 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. diff --git a/documentation/feature/nightvision.md b/documentation/feature/nightvision.md new file mode 100644 index 0000000000..efdc5721c5 --- /dev/null +++ b/documentation/feature/nightvision.md @@ -0,0 +1,23 @@ +--- +layout: wiki +title: Nightvision +group: feature +parent: wiki +--- +# Overview +## 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 +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 AGM_Ballistics to reduce tis effect. +## Brightness adjustment +Enables the user to manually adjust NVG brightness. + +# Usage +Use Alt+PageUp and Alt+PageDown to adjust NVG brightness. + +# Dependencies +List of modules that must be present for this module to work. diff --git a/documentation/feature/noidle.md b/documentation/feature/noidle.md new file mode 100644 index 0000000000..aa6657728d --- /dev/null +++ b/documentation/feature/noidle.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: No Idle +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/noradio.md b/documentation/feature/noradio.md new file mode 100644 index 0000000000..f9a832abd0 --- /dev/null +++ b/documentation/feature/noradio.md @@ -0,0 +1,17 @@ +--- +layout: wiki +title: No Radio +group: feature +parent: wiki +--- +# Overview +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/norearm.md b/documentation/feature/norearm.md new file mode 100644 index 0000000000..7ed7a5c515 --- /dev/null +++ b/documentation/feature/norearm.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: No Rearm +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/optics.md b/documentation/feature/optics.md new file mode 100644 index 0000000000..90b486bc88 --- /dev/null +++ b/documentation/feature/optics.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Optics +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/optionsmenu.md b/documentation/feature/optionsmenu.md new file mode 100644 index 0000000000..a0c9ad33da --- /dev/null +++ b/documentation/feature/optionsmenu.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Options Menu +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/ovepressure.md b/documentation/feature/ovepressure.md new file mode 100644 index 0000000000..af8e47ae0c --- /dev/null +++ b/documentation/feature/ovepressure.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Overpressure +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/overheating.md b/documentation/feature/overheating.md new file mode 100644 index 0000000000..3a10bf9f48 --- /dev/null +++ b/documentation/feature/overheating.md @@ -0,0 +1,27 @@ +--- +layout: wiki +title: Overheating +group: feature +parent: wiki +--- +# Overview +## Weapon Jamming +Adds a propability to jam a weapon when firing. Jams can be cleared by +reloading or by using the clear jam-key. +## 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 +indicate this. +## 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. + +*needs documentation on swapping barrels* + +# Dependencies +List of modules that must be present for this module to work. diff --git a/documentation/feature/parachute.md b/documentation/feature/parachute.md new file mode 100644 index 0000000000..48ad0e9836 --- /dev/null +++ b/documentation/feature/parachute.md @@ -0,0 +1,22 @@ +--- +layout: wiki +title: Parachute +group: feature +parent: wiki +--- +# Overview +## 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 +Adds a non-steerable parachute variant for jet pilots. +## Landing animation +Smoothens parachute landing animation. + +# 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. diff --git a/documentation/feature/protection.md b/documentation/feature/protection.md new file mode 100644 index 0000000000..2eb2a9aaef --- /dev/null +++ b/documentation/feature/protection.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Protection +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/ragdolls.md b/documentation/feature/ragdolls.md new file mode 100644 index 0000000000..585c6c71a8 --- /dev/null +++ b/documentation/feature/ragdolls.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Ragdolls +group: feature +parent: wiki +--- +# Overview +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/realisticnames.md b/documentation/feature/realisticnames.md new file mode 100644 index 0000000000..64d9a316cb --- /dev/null +++ b/documentation/feature/realisticnames.md @@ -0,0 +1,17 @@ +--- +layout: wiki +title: Realistic Names +group: feature +parent: wiki +--- +# Overview +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/recoil.md b/documentation/feature/recoil.md new file mode 100644 index 0000000000..919ab24836 --- /dev/null +++ b/documentation/feature/recoil.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Recoil +group: feature +parent: wiki +--- +# Overview +## Recoil adjustment +Overhauls the recoil system reducing upwards recoil. +## Advanced cam shake +Introducing camshake when firing on foot or as vehicle gunner depending on stance and weapon type. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/reload.md b/documentation/feature/reload.md new file mode 100644 index 0000000000..f791521a63 --- /dev/null +++ b/documentation/feature/reload.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Reload +group: feature +parent: wiki +--- +# Overview +## 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. + +# 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. diff --git a/documentation/feature/reloadlaunchers.md b/documentation/feature/reloadlaunchers.md new file mode 100644 index 0000000000..7b1f26cea1 --- /dev/null +++ b/documentation/feature/reloadlaunchers.md @@ -0,0 +1,19 @@ +--- +layout: wiki +title: Reload Launchers +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. +r \ No newline at end of file diff --git a/documentation/feature/respawn.md b/documentation/feature/respawn.md new file mode 100644 index 0000000000..6059f33c59 --- /dev/null +++ b/documentation/feature/respawn.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Respawn +group: feature +parent: wiki +--- +# Overview +## Respawn with same gear +Requires the Respawn Gear module to be placed. Respawned soldiers now have their loadout when killed. +## 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 +Adds rallypoints to all 3 sides to enable teleportation from base spawn to FOBs. Requires some setup from the mission maker. + +# 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. diff --git a/documentation/feature/safemode.md b/documentation/feature/safemode.md new file mode 100644 index 0000000000..ea4f3fe902 --- /dev/null +++ b/documentation/feature/safemode.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Safe Mode +group: feature +parent: wiki +--- +# Overview +## Safety +You can now use the safety mode of any weapon. Switching weapon modes takes the safety off. + +# 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. diff --git a/documentation/feature/scopes.md b/documentation/feature/scopes.md new file mode 100644 index 0000000000..fb29c7d6e1 --- /dev/null +++ b/documentation/feature/scopes.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Scopes +group: feature +parent: wiki +--- +# Overview +## Sniper Scope Adjustment +Enables snipers to adjust their scopes horizontally and vertically in mils. + +# 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. diff --git a/documentation/feature/smallarms.md b/documentation/feature/smallarms.md new file mode 100644 index 0000000000..11e68d4373 --- /dev/null +++ b/documentation/feature/smallarms.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Small Arms +group: feature +parent: wiki +--- +# Overview +## Magazine Names +Unifies the name formatting of magazines similar to Arma 2 standards. +## No tracers in non-tracer mags +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. +## Real magazine round counts +All pistol and sub machine gun magazines now have adjusted capacaties to match their real life counterparts. + +# 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. diff --git a/documentation/feature/switchunits.md b/documentation/feature/switchunits.md new file mode 100644 index 0000000000..71ace0e055 --- /dev/null +++ b/documentation/feature/switchunits.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Switch Units +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/testmissions.md b/documentation/feature/testmissions.md new file mode 100644 index 0000000000..7d7ac52af8 --- /dev/null +++ b/documentation/feature/testmissions.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Test Missions +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/thermals.md b/documentation/feature/thermals.md new file mode 100644 index 0000000000..12f79a311b --- /dev/null +++ b/documentation/feature/thermals.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Thermals +group: feature +parent: wiki +--- +# Overview +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/vector.md b/documentation/feature/vector.md new file mode 100644 index 0000000000..277f5eb524 --- /dev/null +++ b/documentation/feature/vector.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Vector +group: feature +parent: wiki +--- +# Overview +## Vector IV Rangefinder +Adds the Vector IV rangefinder, including all real-life usage modes (distance between two points, angle between two points etc.) + +# 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. diff --git a/documentation/feature/vehiclelock.md b/documentation/feature/vehiclelock.md new file mode 100644 index 0000000000..239661d153 --- /dev/null +++ b/documentation/feature/vehiclelock.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Vehicle Lock +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/vehicles.md b/documentation/feature/vehicles.md new file mode 100644 index 0000000000..534bb35171 --- /dev/null +++ b/documentation/feature/vehicles.md @@ -0,0 +1,32 @@ +--- +layout: wiki +title: Vehicles +group: feature +parent: wiki +--- +# Overview +## Speedlimiter +Adds ability to limit the max. speed of any vehicle. +## 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. +## 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 +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) +Reduced smoke shell count and launch angle of the AAF Fennek to match the models smoke launcher. +## Stabilized optic of Fennek (Strider) +Stabilizes the commander's view in the Fennek (Strider). +## 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 +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. + +# 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. diff --git a/documentation/feature/weaponselect.md b/documentation/feature/weaponselect.md new file mode 100644 index 0000000000..232f0221d5 --- /dev/null +++ b/documentation/feature/weaponselect.md @@ -0,0 +1,24 @@ +--- +layout: wiki +title: Weapon Select +group: feature +parent: wiki +--- +# 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) +Holster weapon +Adds the ability to holster a weapon on the back. (0 key) +Engine select +Quickly turn engine on and off (1 key - turn off, 2 key - turn on) +Weapon select +Quickly switch between vehicle weapons (1-3 key) +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) + +# 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. diff --git a/documentation/feature/weather.md b/documentation/feature/weather.md new file mode 100644 index 0000000000..2cbeea5e7e --- /dev/null +++ b/documentation/feature/weather.md @@ -0,0 +1,18 @@ +--- +layout: wiki +title: Weather +group: feature +parent: wiki +--- +# Overview +## Sub-feature 1 +Short description of sub-feature 1. +## 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 +List of modules that must be present for this module to work. diff --git a/documentation/feature/windeflection.md b/documentation/feature/windeflection.md new file mode 100644 index 0000000000..7bca0b0f60 --- /dev/null +++ b/documentation/feature/windeflection.md @@ -0,0 +1,16 @@ +--- +layout: wiki +title: Wind Deflection +group: feature +parent: wiki +--- +# Overview +## Wind Deflection +Adds ballistic influences of wind, air density and temperature + +# 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. From 7c1875b624d2cdbfe41a061006a7d47fd1145374 Mon Sep 17 00:00:00 2001 From: Dharma Bellamkonda Date: Tue, 12 May 2015 18:31:03 -0600 Subject: [PATCH 0232/1101] add name to authors.txt --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 862cb23413..9a6b836bea 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -94,3 +94,4 @@ Bla1337 nikolauska adam3adam Professor +Dharma Bellamkonda From b27d7eafa41e6871476242a90d775de2d35ff7c5 Mon Sep 17 00:00:00 2001 From: Dharma Bellamkonda Date: Tue, 12 May 2015 20:18:03 -0600 Subject: [PATCH 0233/1101] Fix headers in weapon select doc --- documentation/feature/weaponselect.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/feature/weaponselect.md b/documentation/feature/weaponselect.md index 232f0221d5..872e27cad0 100644 --- a/documentation/feature/weaponselect.md +++ b/documentation/feature/weaponselect.md @@ -7,13 +7,13 @@ parent: wiki # 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) -Holster weapon +## Holster weapon Adds the ability to holster a weapon on the back. (0 key) -Engine select +## Engine select Quickly turn engine on and off (1 key - turn off, 2 key - turn on) -Weapon select +## Weapon select Quickly switch between vehicle weapons (1-3 key) -Grenade select +## 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) # Usage From 54dcbb9ef4287fc1814b2556028021f769151369 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 May 2015 22:15:52 -0500 Subject: [PATCH 0234/1101] FCS - Privates --- addons/fcs/functions/fnc_getAngle.sqf | 4 ++-- addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf | 3 +++ addons/fcs/functions/fnc_keyUp.sqf | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/fcs/functions/fnc_getAngle.sqf b/addons/fcs/functions/fnc_getAngle.sqf index 03024d8b98..91150c110d 100644 --- a/addons/fcs/functions/fnc_getAngle.sqf +++ b/addons/fcs/functions/fnc_getAngle.sqf @@ -19,7 +19,7 @@ #include "script_component.hpp" #define PRECISION 0.1 -private ["_distance","_angleTarget","_maxElev","_initSpeed","_airFriction","_timeToLive","_timeToLive","_simulationStep","_angle","_posTargetX","_posTargetY","_posX","_posY","_velocityX","_velocityY","_velocityMagnitude"]; +private ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_angle1", "_angle2", "_it2", "_f1", "_f2", "_temp", "_it1", "_angle"]; _distance = _this select 0; _angleTarget = _this select 1; @@ -32,7 +32,7 @@ _simulationStep = _this select 6; if (_simulationStep == 0) exitWith {_angleTarget}; FUNC(traceBullet) = { - private ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_angle", "_posTargetX", "_posTargetY", "_posX", "_posY", "_velocityX", "_velocityY", "_velocityMagnitude"]; + private ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_angle", "_posTargetX", "_posTargetY", "_posX", "_posY", "_velocityX", "_velocityY", "_velocityMagnitude", "_i"]; _distance = _this select 0; _angleTarget = _this select 1; diff --git a/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf b/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf index 31c2540790..899cf0da76 100644 --- a/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf +++ b/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf @@ -1,4 +1,7 @@ // by commy2 +#include "script_component.hpp" + +private ["_vehicle", "_projectile", "_zeroing", "_position", "_subMunition"]; _vehicle = _this select 0 select 0; _projectile = _this select 0 select 1; diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index a7bf8defe5..4e28f26a20 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -12,7 +12,7 @@ #include "script_component.hpp" -private ["_vehicle", "_turret", "_turretConfig", "_distance", "_weapons", "_magazines", "_showHint", "_playSound"]; +private ["_vehicle", "_turret", "_turretConfig", "_distance", "_weapons", "_magazines", "_showHint", "_playSound", "_i"]; _vehicle = _this select 0; _turret = _this select 1; From 3978445837cf613c91fef61029e22f003157ab5a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 May 2015 23:01:59 -0500 Subject: [PATCH 0235/1101] Draggin Privates --- addons/dragging/functions/fnc_setCarryable.sqf | 3 ++- addons/dragging/functions/fnc_setDraggable.sqf | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/dragging/functions/fnc_setCarryable.sqf b/addons/dragging/functions/fnc_setCarryable.sqf index bc6da1f04d..2a10ca4897 100644 --- a/addons/dragging/functions/fnc_setCarryable.sqf +++ b/addons/dragging/functions/fnc_setCarryable.sqf @@ -14,7 +14,8 @@ */ #include "script_component.hpp" -private ["_object", "_enableCarry", "_position", "_direction"]; +private ["_carryAction", "_dropAction", "_object", "_enableCarry", "_position", "_direction"]; +//IGNORE_PRIVATE_WARNING("_player", "_target"); _this resize 4; diff --git a/addons/dragging/functions/fnc_setDraggable.sqf b/addons/dragging/functions/fnc_setDraggable.sqf index da2d0310b4..5a42f4e439 100644 --- a/addons/dragging/functions/fnc_setDraggable.sqf +++ b/addons/dragging/functions/fnc_setDraggable.sqf @@ -14,7 +14,8 @@ */ #include "script_component.hpp" -private ["_object", "_enableDrag", "_position", "_direction"]; +private ["_dragAction", "_dropAction", "_object", "_enableDrag", "_position", "_direction"]; +//IGNORE_PRIVATE_WARNING("_player", "_target"); _this resize 4; From 4185874a9abeacddc8df7a1854831e8ba1d1c5bf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 May 2015 23:19:31 -0500 Subject: [PATCH 0236/1101] Frag Privates --- addons/frag/functions/fnc_doSpall.sqf | 7 ++----- addons/frag/functions/fnc_frago.sqf | 7 +------ 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/addons/frag/functions/fnc_doSpall.sqf b/addons/frag/functions/fnc_doSpall.sqf index 990fb80f8d..d2e64dbbfb 100644 --- a/addons/frag/functions/fnc_doSpall.sqf +++ b/addons/frag/functions/fnc_doSpall.sqf @@ -4,11 +4,8 @@ GVAR(traceFrags) = true; #endif // ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA"; -private ["_params", "_initialData", "_hpData", "_roundType", "_round", "_object", "_caliber", "_explosive", - "_idh", "_alive", "_exit", "_vm", "_velocity", "_unitDir", "_oldVelocity", "_curVelocity", "_diff", "_polar", - "_pos", "_spallPos", "_i", "_pos1", "_pos2", "_blah", "_data", "_spallPolar", "_c", "_warn", "_m", "_k", - "_gC", "_shellType", "_fragPower", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect", - "_fragment", "_index", "_hitData", "_fragTypes", "_fragType", "_foundObjects"]; + +private ["_params", "_hitData", "_initialData", "_hpData", "_object", "_foundObjects", "_index", "_foundObjecsts", "_roundType", "_round", "_caliber", "_explosive", "_idh", "_alive", "_exit", "_vm", "_velocity", "_oldVelocity", "_curVelocity", "_diff", "_polar", "_unitDir", "_spallPos", "_pos1", "_i", "_pos2", "_blah", "_data", "_spallPolar", "_warn", "_c", "_m", "_k", "_gC", "_fragPower", "_fragTypes", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect", "_fragType", "_fragment", "_pos"]; _params = _this select 0; [(_this select 1)] call cba_fnc_removePerFrameHandler; diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index de7c6986d9..43eb9d5a67 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -9,13 +9,8 @@ if(!isServer) exitWith { }; // _startTime = diag_tickTime; -private ["_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed", - "_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom", - "_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_target", "_boundingBox", - "_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir", - "_currentCount", "_count", "_vecVar", "_i", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount", - "_sectorSize", "_sectorOffset", "_randomDir", "_endTime"]; +private ["_startTime", "_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed", "_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom", "_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_boundingBox", "_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir", "_currentCount", "_count", "_vecVar", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount", "_sectorSize", "_sectorOffset", "_i", "_randomDir", "_endTime", "_target"]; _round = _this select 0; _lastPos = _this select 1; From a4d0af4b679e171ba4d63ec2f657c688dca52ccb Mon Sep 17 00:00:00 2001 From: Glowbal Date: Wed, 13 May 2015 15:55:03 +0200 Subject: [PATCH 0237/1101] Fix medical vehicle return value Could fix #1142 --- addons/medical/functions/fnc_isMedicalVehicle.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_isMedicalVehicle.sqf b/addons/medical/functions/fnc_isMedicalVehicle.sqf index 5635700fe0..5e9283852f 100644 --- a/addons/medical/functions/fnc_isMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_isMedicalVehicle.sqf @@ -15,4 +15,4 @@ private ["_vehicle"]; _vehicle = _this select 0; -_vehicle getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1] +(_vehicle getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant")]) > 0 From 3ff9ea230a9556e5721fe860bce681e0308ce9fa Mon Sep 17 00:00:00 2001 From: jaynus Date: Wed, 13 May 2015 08:34:14 -0700 Subject: [PATCH 0238/1101] initial pick from vehicledamage for new extension build process. --- extensions/CMakeLists.txt | 84 +- .../AdvancedBallistics.cpp | 34 +- extensions/advanced_ballistics/CMakeLists.txt | 7 +- extensions/break_line/CMakeLists.txt | 7 +- extensions/break_line/ace_break_line.cpp | 4 +- extensions/clipboard/ace_clipboard.cpp | 17 +- extensions/cmake/FindDirectX.cmake | 215 + extensions/common/CMakeLists.txt | 18 + extensions/common/arguments.hpp | 90 + extensions/common/directx/d3d_display.cpp | 439 ++ extensions/common/directx/d3d_display.hpp | 130 + extensions/common/dispatch.hpp | 153 + extensions/common/easyloggingc++.hpp | 6718 +++++++++++++++++ extensions/common/glm/CMakeLists.txt | 43 + extensions/common/glm/common.hpp | 35 + extensions/common/glm/detail/_features.hpp | 428 ++ extensions/common/glm/detail/_fixes.hpp | 59 + extensions/common/glm/detail/_noise.hpp | 136 + extensions/common/glm/detail/_swizzle.hpp | 833 ++ .../common/glm/detail/_swizzle_func.hpp | 725 ++ extensions/common/glm/detail/_vectorize.hpp | 160 + extensions/common/glm/detail/dummy.cpp | 232 + extensions/common/glm/detail/func_common.hpp | 456 ++ extensions/common/glm/detail/func_common.inl | 758 ++ .../common/glm/detail/func_exponential.hpp | 132 + .../common/glm/detail/func_exponential.inl | 161 + .../common/glm/detail/func_geometric.hpp | 142 + .../common/glm/detail/func_geometric.inl | 201 + extensions/common/glm/detail/func_integer.hpp | 232 + extensions/common/glm/detail/func_integer.inl | 393 + extensions/common/glm/detail/func_matrix.hpp | 178 + extensions/common/glm/detail/func_matrix.inl | 310 + extensions/common/glm/detail/func_noise.hpp | 93 + extensions/common/glm/detail/func_noise.inl | 388 + extensions/common/glm/detail/func_packing.hpp | 197 + extensions/common/glm/detail/func_packing.inl | 119 + .../common/glm/detail/func_trigonometric.hpp | 205 + .../common/glm/detail/func_trigonometric.inl | 224 + .../glm/detail/func_vector_relational.hpp | 140 + .../glm/detail/func_vector_relational.inl | 131 + extensions/common/glm/detail/glm.cpp | 286 + .../common/glm/detail/intrinsic_common.hpp | 87 + .../common/glm/detail/intrinsic_common.inl | 313 + .../glm/detail/intrinsic_exponential.hpp | 77 + .../glm/detail/intrinsic_exponential.inl | 27 + .../common/glm/detail/intrinsic_geometric.hpp | 74 + .../common/glm/detail/intrinsic_geometric.inl | 147 + .../common/glm/detail/intrinsic_integer.hpp | 48 + .../common/glm/detail/intrinsic_integer.inl | 139 + .../common/glm/detail/intrinsic_matrix.hpp | 67 + .../common/glm/detail/intrinsic_matrix.inl | 1070 +++ .../glm/detail/intrinsic_trigonometric.hpp | 46 + .../glm/detail/intrinsic_trigonometric.inl | 27 + .../detail/intrinsic_vector_relational.hpp | 46 + .../detail/intrinsic_vector_relational.inl | 366 + extensions/common/glm/detail/precision.hpp | 44 + extensions/common/glm/detail/setup.hpp | 962 +++ extensions/common/glm/detail/type_float.hpp | 96 + extensions/common/glm/detail/type_gentype.hpp | 224 + extensions/common/glm/detail/type_gentype.inl | 370 + extensions/common/glm/detail/type_half.hpp | 48 + extensions/common/glm/detail/type_half.inl | 277 + extensions/common/glm/detail/type_int.hpp | 326 + extensions/common/glm/detail/type_mat.hpp | 793 ++ extensions/common/glm/detail/type_mat.inl | 32 + extensions/common/glm/detail/type_mat2x2.hpp | 223 + extensions/common/glm/detail/type_mat2x2.inl | 548 ++ extensions/common/glm/detail/type_mat2x3.hpp | 201 + extensions/common/glm/detail/type_mat2x3.inl | 506 ++ extensions/common/glm/detail/type_mat2x4.hpp | 202 + extensions/common/glm/detail/type_mat2x4.inl | 515 ++ extensions/common/glm/detail/type_mat3x2.hpp | 207 + extensions/common/glm/detail/type_mat3x2.inl | 540 ++ extensions/common/glm/detail/type_mat3x3.hpp | 230 + extensions/common/glm/detail/type_mat3x3.inl | 631 ++ extensions/common/glm/detail/type_mat3x4.hpp | 206 + extensions/common/glm/detail/type_mat3x4.inl | 579 ++ extensions/common/glm/detail/type_mat4x2.hpp | 212 + extensions/common/glm/detail/type_mat4x2.inl | 587 ++ extensions/common/glm/detail/type_mat4x3.hpp | 211 + extensions/common/glm/detail/type_mat4x3.inl | 631 ++ extensions/common/glm/detail/type_mat4x4.hpp | 235 + extensions/common/glm/detail/type_mat4x4.inl | 790 ++ extensions/common/glm/detail/type_vec.hpp | 518 ++ extensions/common/glm/detail/type_vec.inl | 31 + extensions/common/glm/detail/type_vec1.hpp | 322 + extensions/common/glm/detail/type_vec1.inl | 616 ++ extensions/common/glm/detail/type_vec2.hpp | 403 + extensions/common/glm/detail/type_vec2.inl | 909 +++ extensions/common/glm/detail/type_vec3.hpp | 425 ++ extensions/common/glm/detail/type_vec3.inl | 1042 +++ extensions/common/glm/detail/type_vec4.hpp | 531 ++ extensions/common/glm/detail/type_vec4.inl | 1124 +++ .../common/glm/detail/type_vec4_avx.inl | 41 + .../common/glm/detail/type_vec4_avx2.inl | 41 + .../common/glm/detail/type_vec4_sse2.inl | 120 + extensions/common/glm/exponential.hpp | 35 + extensions/common/glm/ext.hpp | 143 + extensions/common/glm/fwd.hpp | 2601 +++++++ extensions/common/glm/geometric.hpp | 35 + extensions/common/glm/glm.hpp | 117 + extensions/common/glm/gtc/bitfield.hpp | 236 + extensions/common/glm/gtc/bitfield.inl | 542 ++ extensions/common/glm/gtc/constants.hpp | 205 + extensions/common/glm/gtc/constants.inl | 210 + extensions/common/glm/gtc/epsilon.hpp | 102 + extensions/common/glm/gtc/epsilon.inl | 154 + extensions/common/glm/gtc/integer.hpp | 105 + extensions/common/glm/gtc/integer.inl | 74 + extensions/common/glm/gtc/matrix_access.hpp | 88 + extensions/common/glm/gtc/matrix_access.inl | 92 + extensions/common/glm/gtc/matrix_integer.hpp | 515 ++ extensions/common/glm/gtc/matrix_inverse.hpp | 78 + extensions/common/glm/gtc/matrix_inverse.inl | 148 + .../common/glm/gtc/matrix_transform.hpp | 304 + .../common/glm/gtc/matrix_transform.inl | 413 + extensions/common/glm/gtc/noise.hpp | 89 + extensions/common/glm/gtc/noise.inl | 837 ++ extensions/common/glm/gtc/packing.hpp | 478 ++ extensions/common/glm/gtc/packing.inl | 490 ++ extensions/common/glm/gtc/quaternion.hpp | 377 + extensions/common/glm/gtc/quaternion.inl | 784 ++ extensions/common/glm/gtc/random.hpp | 120 + extensions/common/glm/gtc/random.inl | 379 + extensions/common/glm/gtc/reciprocal.hpp | 134 + extensions/common/glm/gtc/reciprocal.inl | 221 + extensions/common/glm/gtc/round.hpp | 203 + extensions/common/glm/gtc/round.inl | 378 + extensions/common/glm/gtc/type_precision.hpp | 890 +++ extensions/common/glm/gtc/type_precision.inl | 36 + extensions/common/glm/gtc/type_ptr.hpp | 178 + extensions/common/glm/gtc/type_ptr.inl | 479 ++ extensions/common/glm/gtc/ulp.hpp | 92 + extensions/common/glm/gtc/ulp.inl | 350 + extensions/common/glm/gtc/vec1.hpp | 193 + extensions/common/glm/gtc/vec1.inl | 31 + .../common/glm/gtx/associated_min_max.hpp | 231 + .../common/glm/gtx/associated_min_max.inl | 384 + extensions/common/glm/gtx/bit.hpp | 120 + extensions/common/glm/gtx/bit.inl | 107 + extensions/common/glm/gtx/closest_point.hpp | 74 + extensions/common/glm/gtx/closest_point.inl | 75 + extensions/common/glm/gtx/color_space.hpp | 97 + extensions/common/glm/gtx/color_space.inl | 172 + .../common/glm/gtx/color_space_YCoCg.hpp | 85 + .../common/glm/gtx/color_space_YCoCg.inl | 87 + extensions/common/glm/gtx/common.hpp | 74 + extensions/common/glm/gtx/common.inl | 102 + extensions/common/glm/gtx/compatibility.hpp | 158 + extensions/common/glm/gtx/compatibility.inl | 83 + extensions/common/glm/gtx/component_wise.hpp | 84 + extensions/common/glm/gtx/component_wise.inl | 70 + extensions/common/glm/gtx/dual_quaternion.hpp | 321 + extensions/common/glm/gtx/dual_quaternion.inl | 400 + extensions/common/glm/gtx/euler_angles.hpp | 156 + extensions/common/glm/gtx/euler_angles.inl | 287 + extensions/common/glm/gtx/extend.hpp | 67 + extensions/common/glm/gtx/extend.inl | 78 + .../common/glm/gtx/extented_min_max.hpp | 162 + .../common/glm/gtx/extented_min_max.inl | 169 + .../common/glm/gtx/fast_exponential.hpp | 120 + .../common/glm/gtx/fast_exponential.inl | 166 + .../common/glm/gtx/fast_square_root.hpp | 117 + .../common/glm/gtx/fast_square_root.inl | 110 + .../common/glm/gtx/fast_trigonometry.hpp | 104 + .../common/glm/gtx/fast_trigonometry.inl | 162 + extensions/common/glm/gtx/gradient_paint.hpp | 77 + extensions/common/glm/gtx/gradient_paint.inl | 66 + .../glm/gtx/handed_coordinate_space.hpp | 75 + .../glm/gtx/handed_coordinate_space.inl | 56 + extensions/common/glm/gtx/integer.hpp | 101 + extensions/common/glm/gtx/integer.inl | 211 + extensions/common/glm/gtx/intersect.hpp | 112 + extensions/common/glm/gtx/intersect.inl | 217 + extensions/common/glm/gtx/io.hpp | 224 + extensions/common/glm/gtx/io.inl | 618 ++ extensions/common/glm/gtx/log_base.hpp | 73 + extensions/common/glm/gtx/log_base.inl | 47 + .../common/glm/gtx/matrix_cross_product.hpp | 72 + .../common/glm/gtx/matrix_cross_product.inl | 67 + .../common/glm/gtx/matrix_decompose.hpp | 70 + .../common/glm/gtx/matrix_decompose.inl | 231 + .../common/glm/gtx/matrix_interpolation.hpp | 89 + .../common/glm/gtx/matrix_interpolation.inl | 163 + .../common/glm/gtx/matrix_major_storage.hpp | 144 + .../common/glm/gtx/matrix_major_storage.inl | 196 + .../common/glm/gtx/matrix_operation.hpp | 113 + .../common/glm/gtx/matrix_operation.inl | 147 + extensions/common/glm/gtx/matrix_query.hpp | 102 + extensions/common/glm/gtx/matrix_query.inl | 143 + .../common/glm/gtx/matrix_transform_2d.hpp | 106 + .../common/glm/gtx/matrix_transform_2d.inl | 97 + extensions/common/glm/gtx/mixed_product.hpp | 66 + extensions/common/glm/gtx/mixed_product.inl | 45 + extensions/common/glm/gtx/multiple.hpp | 106 + extensions/common/glm/gtx/multiple.inl | 64 + extensions/common/glm/gtx/norm.hpp | 128 + extensions/common/glm/gtx/norm.inl | 170 + extensions/common/glm/gtx/normal.hpp | 68 + extensions/common/glm/gtx/normal.inl | 45 + extensions/common/glm/gtx/normalize_dot.hpp | 74 + extensions/common/glm/gtx/normalize_dot.inl | 46 + .../common/glm/gtx/number_precision.hpp | 86 + .../common/glm/gtx/number_precision.inl | 36 + extensions/common/glm/gtx/optimum_pow.hpp | 79 + extensions/common/glm/gtx/optimum_pow.inl | 52 + extensions/common/glm/gtx/orthonormalize.hpp | 74 + extensions/common/glm/gtx/orthonormalize.inl | 59 + extensions/common/glm/gtx/perpendicular.hpp | 68 + extensions/common/glm/gtx/perpendicular.inl | 44 + .../common/glm/gtx/polar_coordinates.hpp | 73 + .../common/glm/gtx/polar_coordinates.inl | 66 + extensions/common/glm/gtx/projection.hpp | 65 + extensions/common/glm/gtx/projection.inl | 40 + extensions/common/glm/gtx/quaternion.hpp | 214 + extensions/common/glm/gtx/quaternion.inl | 285 + extensions/common/glm/gtx/range.hpp | 102 + extensions/common/glm/gtx/raw_data.hpp | 76 + extensions/common/glm/gtx/raw_data.inl | 31 + .../common/glm/gtx/rotate_normalized_axis.hpp | 93 + .../common/glm/gtx/rotate_normalized_axis.inl | 88 + extensions/common/glm/gtx/rotate_vector.hpp | 146 + extensions/common/glm/gtx/rotate_vector.inl | 217 + .../common/glm/gtx/scalar_multiplication.hpp | 98 + .../common/glm/gtx/scalar_relational.hpp | 61 + .../common/glm/gtx/scalar_relational.inl | 118 + extensions/common/glm/gtx/simd_mat4.hpp | 205 + extensions/common/glm/gtx/simd_mat4.inl | 602 ++ extensions/common/glm/gtx/simd_quat.hpp | 335 + extensions/common/glm/gtx/simd_quat.inl | 645 ++ extensions/common/glm/gtx/simd_vec4.hpp | 574 ++ extensions/common/glm/gtx/simd_vec4.inl | 727 ++ extensions/common/glm/gtx/spline.hpp | 90 + extensions/common/glm/gtx/spline.inl | 92 + extensions/common/glm/gtx/std_based_type.hpp | 92 + extensions/common/glm/gtx/std_based_type.inl | 36 + extensions/common/glm/gtx/string_cast.hpp | 74 + extensions/common/glm/gtx/string_cast.inl | 455 ++ extensions/common/glm/gtx/transform.hpp | 85 + extensions/common/glm/gtx/transform.inl | 60 + extensions/common/glm/gtx/transform2.hpp | 136 + extensions/common/glm/gtx/transform2.inl | 177 + extensions/common/glm/gtx/type_aligned.hpp | 995 +++ extensions/common/glm/gtx/type_aligned.inl | 36 + extensions/common/glm/gtx/vector_angle.hpp | 89 + extensions/common/glm/gtx/vector_angle.inl | 87 + extensions/common/glm/gtx/vector_query.hpp | 91 + extensions/common/glm/gtx/vector_query.inl | 222 + extensions/common/glm/gtx/wrap.hpp | 74 + extensions/common/glm/gtx/wrap.inl | 185 + extensions/common/glm/integer.hpp | 35 + extensions/common/glm/mat2x2.hpp | 81 + extensions/common/glm/mat2x3.hpp | 61 + extensions/common/glm/mat2x4.hpp | 60 + extensions/common/glm/mat3x2.hpp | 60 + extensions/common/glm/mat3x3.hpp | 81 + extensions/common/glm/mat3x4.hpp | 60 + extensions/common/glm/mat4x2.hpp | 60 + extensions/common/glm/mat4x3.hpp | 60 + extensions/common/glm/mat4x4.hpp | 81 + extensions/common/glm/matrix.hpp | 35 + extensions/common/glm/packing.hpp | 35 + extensions/common/glm/trigonometric.hpp | 35 + extensions/common/glm/vec2.hpp | 35 + extensions/common/glm/vec3.hpp | 35 + extensions/common/glm/vec4.hpp | 35 + extensions/common/glm/vector_relational.hpp | 35 + extensions/common/logging.hpp | 6 + extensions/common/lzoconf.h | 453 ++ extensions/common/lzodefs.h | 3134 ++++++++ extensions/common/membuf.hpp | 56 + extensions/common/minilzo.c | 6231 +++++++++++++++ extensions/common/minilzo.h | 106 + extensions/common/p3d/animation.cpp | 72 + extensions/common/p3d/animation.hpp | 69 + extensions/common/p3d/compressed.cpp | 237 + extensions/common/p3d/compressed.hpp | 166 + extensions/common/p3d/lod_info.cpp | 289 + extensions/common/p3d/lod_info.hpp | 237 + extensions/common/p3d/lod_types.hpp | 33 + extensions/common/p3d/model.cpp | 116 + extensions/common/p3d/model.hpp | 57 + extensions/common/p3d/model_info.cpp | 91 + extensions/common/p3d/model_info.hpp | 74 + extensions/common/p3d/parser.cpp | 26 + extensions/common/p3d/parser.hpp | 17 + extensions/common/p3d/parser_ref.txt | 269 + extensions/common/p3d/read_helpers.hpp | 11 + extensions/common/p3d/skeleton.cpp | 46 + extensions/common/p3d/skeleton.hpp | 36 + extensions/common/pbo/archive.cpp | 91 + extensions/common/pbo/archive.hpp | 61 + extensions/common/pbo/search.cpp | 301 + extensions/common/pbo/search.hpp | 27 + extensions/common/shared.cpp | 41 + extensions/common/shared.hpp | 77 + extensions/common/simplepipe_win32.cpp | 179 + extensions/common/simplepipe_win32.hpp | 57 + extensions/common/simulation/object.cpp | 464 ++ extensions/common/simulation/object.hpp | 221 + extensions/common/singleton.hpp | 31 + extensions/common/targetver.h | 2 +- extensions/common/transform_matrix.hpp | 34 + extensions/common/vector.cpp | 11 + extensions/common/vector.hpp | 161 + extensions/dynload/CMakeLists.txt | 14 + extensions/dynload/ace_dynload.cpp | 66 + extensions/dynload/ace_dynload_dllmain.cpp | 33 + extensions/dynload/dynloader.hpp | 168 + extensions/fcs/CMakeLists.txt | 7 +- extensions/fcs/ace_fcs.cpp | 5 +- extensions/lib/bullet3 | 1 + 312 files changed, 79346 insertions(+), 40 deletions(-) create mode 100644 extensions/cmake/FindDirectX.cmake create mode 100644 extensions/common/CMakeLists.txt create mode 100644 extensions/common/arguments.hpp create mode 100644 extensions/common/directx/d3d_display.cpp create mode 100644 extensions/common/directx/d3d_display.hpp create mode 100644 extensions/common/dispatch.hpp create mode 100644 extensions/common/easyloggingc++.hpp create mode 100644 extensions/common/glm/CMakeLists.txt create mode 100644 extensions/common/glm/common.hpp create mode 100644 extensions/common/glm/detail/_features.hpp create mode 100644 extensions/common/glm/detail/_fixes.hpp create mode 100644 extensions/common/glm/detail/_noise.hpp create mode 100644 extensions/common/glm/detail/_swizzle.hpp create mode 100644 extensions/common/glm/detail/_swizzle_func.hpp create mode 100644 extensions/common/glm/detail/_vectorize.hpp create mode 100644 extensions/common/glm/detail/dummy.cpp create mode 100644 extensions/common/glm/detail/func_common.hpp create mode 100644 extensions/common/glm/detail/func_common.inl create mode 100644 extensions/common/glm/detail/func_exponential.hpp create mode 100644 extensions/common/glm/detail/func_exponential.inl create mode 100644 extensions/common/glm/detail/func_geometric.hpp create mode 100644 extensions/common/glm/detail/func_geometric.inl create mode 100644 extensions/common/glm/detail/func_integer.hpp create mode 100644 extensions/common/glm/detail/func_integer.inl create mode 100644 extensions/common/glm/detail/func_matrix.hpp create mode 100644 extensions/common/glm/detail/func_matrix.inl create mode 100644 extensions/common/glm/detail/func_noise.hpp create mode 100644 extensions/common/glm/detail/func_noise.inl create mode 100644 extensions/common/glm/detail/func_packing.hpp create mode 100644 extensions/common/glm/detail/func_packing.inl create mode 100644 extensions/common/glm/detail/func_trigonometric.hpp create mode 100644 extensions/common/glm/detail/func_trigonometric.inl create mode 100644 extensions/common/glm/detail/func_vector_relational.hpp create mode 100644 extensions/common/glm/detail/func_vector_relational.inl create mode 100644 extensions/common/glm/detail/glm.cpp create mode 100644 extensions/common/glm/detail/intrinsic_common.hpp create mode 100644 extensions/common/glm/detail/intrinsic_common.inl create mode 100644 extensions/common/glm/detail/intrinsic_exponential.hpp create mode 100644 extensions/common/glm/detail/intrinsic_exponential.inl create mode 100644 extensions/common/glm/detail/intrinsic_geometric.hpp create mode 100644 extensions/common/glm/detail/intrinsic_geometric.inl create mode 100644 extensions/common/glm/detail/intrinsic_integer.hpp create mode 100644 extensions/common/glm/detail/intrinsic_integer.inl create mode 100644 extensions/common/glm/detail/intrinsic_matrix.hpp create mode 100644 extensions/common/glm/detail/intrinsic_matrix.inl create mode 100644 extensions/common/glm/detail/intrinsic_trigonometric.hpp create mode 100644 extensions/common/glm/detail/intrinsic_trigonometric.inl create mode 100644 extensions/common/glm/detail/intrinsic_vector_relational.hpp create mode 100644 extensions/common/glm/detail/intrinsic_vector_relational.inl create mode 100644 extensions/common/glm/detail/precision.hpp create mode 100644 extensions/common/glm/detail/setup.hpp create mode 100644 extensions/common/glm/detail/type_float.hpp create mode 100644 extensions/common/glm/detail/type_gentype.hpp create mode 100644 extensions/common/glm/detail/type_gentype.inl create mode 100644 extensions/common/glm/detail/type_half.hpp create mode 100644 extensions/common/glm/detail/type_half.inl create mode 100644 extensions/common/glm/detail/type_int.hpp create mode 100644 extensions/common/glm/detail/type_mat.hpp create mode 100644 extensions/common/glm/detail/type_mat.inl create mode 100644 extensions/common/glm/detail/type_mat2x2.hpp create mode 100644 extensions/common/glm/detail/type_mat2x2.inl create mode 100644 extensions/common/glm/detail/type_mat2x3.hpp create mode 100644 extensions/common/glm/detail/type_mat2x3.inl create mode 100644 extensions/common/glm/detail/type_mat2x4.hpp create mode 100644 extensions/common/glm/detail/type_mat2x4.inl create mode 100644 extensions/common/glm/detail/type_mat3x2.hpp create mode 100644 extensions/common/glm/detail/type_mat3x2.inl create mode 100644 extensions/common/glm/detail/type_mat3x3.hpp create mode 100644 extensions/common/glm/detail/type_mat3x3.inl create mode 100644 extensions/common/glm/detail/type_mat3x4.hpp create mode 100644 extensions/common/glm/detail/type_mat3x4.inl create mode 100644 extensions/common/glm/detail/type_mat4x2.hpp create mode 100644 extensions/common/glm/detail/type_mat4x2.inl create mode 100644 extensions/common/glm/detail/type_mat4x3.hpp create mode 100644 extensions/common/glm/detail/type_mat4x3.inl create mode 100644 extensions/common/glm/detail/type_mat4x4.hpp create mode 100644 extensions/common/glm/detail/type_mat4x4.inl create mode 100644 extensions/common/glm/detail/type_vec.hpp create mode 100644 extensions/common/glm/detail/type_vec.inl create mode 100644 extensions/common/glm/detail/type_vec1.hpp create mode 100644 extensions/common/glm/detail/type_vec1.inl create mode 100644 extensions/common/glm/detail/type_vec2.hpp create mode 100644 extensions/common/glm/detail/type_vec2.inl create mode 100644 extensions/common/glm/detail/type_vec3.hpp create mode 100644 extensions/common/glm/detail/type_vec3.inl create mode 100644 extensions/common/glm/detail/type_vec4.hpp create mode 100644 extensions/common/glm/detail/type_vec4.inl create mode 100644 extensions/common/glm/detail/type_vec4_avx.inl create mode 100644 extensions/common/glm/detail/type_vec4_avx2.inl create mode 100644 extensions/common/glm/detail/type_vec4_sse2.inl create mode 100644 extensions/common/glm/exponential.hpp create mode 100644 extensions/common/glm/ext.hpp create mode 100644 extensions/common/glm/fwd.hpp create mode 100644 extensions/common/glm/geometric.hpp create mode 100644 extensions/common/glm/glm.hpp create mode 100644 extensions/common/glm/gtc/bitfield.hpp create mode 100644 extensions/common/glm/gtc/bitfield.inl create mode 100644 extensions/common/glm/gtc/constants.hpp create mode 100644 extensions/common/glm/gtc/constants.inl create mode 100644 extensions/common/glm/gtc/epsilon.hpp create mode 100644 extensions/common/glm/gtc/epsilon.inl create mode 100644 extensions/common/glm/gtc/integer.hpp create mode 100644 extensions/common/glm/gtc/integer.inl create mode 100644 extensions/common/glm/gtc/matrix_access.hpp create mode 100644 extensions/common/glm/gtc/matrix_access.inl create mode 100644 extensions/common/glm/gtc/matrix_integer.hpp create mode 100644 extensions/common/glm/gtc/matrix_inverse.hpp create mode 100644 extensions/common/glm/gtc/matrix_inverse.inl create mode 100644 extensions/common/glm/gtc/matrix_transform.hpp create mode 100644 extensions/common/glm/gtc/matrix_transform.inl create mode 100644 extensions/common/glm/gtc/noise.hpp create mode 100644 extensions/common/glm/gtc/noise.inl create mode 100644 extensions/common/glm/gtc/packing.hpp create mode 100644 extensions/common/glm/gtc/packing.inl create mode 100644 extensions/common/glm/gtc/quaternion.hpp create mode 100644 extensions/common/glm/gtc/quaternion.inl create mode 100644 extensions/common/glm/gtc/random.hpp create mode 100644 extensions/common/glm/gtc/random.inl create mode 100644 extensions/common/glm/gtc/reciprocal.hpp create mode 100644 extensions/common/glm/gtc/reciprocal.inl create mode 100644 extensions/common/glm/gtc/round.hpp create mode 100644 extensions/common/glm/gtc/round.inl create mode 100644 extensions/common/glm/gtc/type_precision.hpp create mode 100644 extensions/common/glm/gtc/type_precision.inl create mode 100644 extensions/common/glm/gtc/type_ptr.hpp create mode 100644 extensions/common/glm/gtc/type_ptr.inl create mode 100644 extensions/common/glm/gtc/ulp.hpp create mode 100644 extensions/common/glm/gtc/ulp.inl create mode 100644 extensions/common/glm/gtc/vec1.hpp create mode 100644 extensions/common/glm/gtc/vec1.inl create mode 100644 extensions/common/glm/gtx/associated_min_max.hpp create mode 100644 extensions/common/glm/gtx/associated_min_max.inl create mode 100644 extensions/common/glm/gtx/bit.hpp create mode 100644 extensions/common/glm/gtx/bit.inl create mode 100644 extensions/common/glm/gtx/closest_point.hpp create mode 100644 extensions/common/glm/gtx/closest_point.inl create mode 100644 extensions/common/glm/gtx/color_space.hpp create mode 100644 extensions/common/glm/gtx/color_space.inl create mode 100644 extensions/common/glm/gtx/color_space_YCoCg.hpp create mode 100644 extensions/common/glm/gtx/color_space_YCoCg.inl create mode 100644 extensions/common/glm/gtx/common.hpp create mode 100644 extensions/common/glm/gtx/common.inl create mode 100644 extensions/common/glm/gtx/compatibility.hpp create mode 100644 extensions/common/glm/gtx/compatibility.inl create mode 100644 extensions/common/glm/gtx/component_wise.hpp create mode 100644 extensions/common/glm/gtx/component_wise.inl create mode 100644 extensions/common/glm/gtx/dual_quaternion.hpp create mode 100644 extensions/common/glm/gtx/dual_quaternion.inl create mode 100644 extensions/common/glm/gtx/euler_angles.hpp create mode 100644 extensions/common/glm/gtx/euler_angles.inl create mode 100644 extensions/common/glm/gtx/extend.hpp create mode 100644 extensions/common/glm/gtx/extend.inl create mode 100644 extensions/common/glm/gtx/extented_min_max.hpp create mode 100644 extensions/common/glm/gtx/extented_min_max.inl create mode 100644 extensions/common/glm/gtx/fast_exponential.hpp create mode 100644 extensions/common/glm/gtx/fast_exponential.inl create mode 100644 extensions/common/glm/gtx/fast_square_root.hpp create mode 100644 extensions/common/glm/gtx/fast_square_root.inl create mode 100644 extensions/common/glm/gtx/fast_trigonometry.hpp create mode 100644 extensions/common/glm/gtx/fast_trigonometry.inl create mode 100644 extensions/common/glm/gtx/gradient_paint.hpp create mode 100644 extensions/common/glm/gtx/gradient_paint.inl create mode 100644 extensions/common/glm/gtx/handed_coordinate_space.hpp create mode 100644 extensions/common/glm/gtx/handed_coordinate_space.inl create mode 100644 extensions/common/glm/gtx/integer.hpp create mode 100644 extensions/common/glm/gtx/integer.inl create mode 100644 extensions/common/glm/gtx/intersect.hpp create mode 100644 extensions/common/glm/gtx/intersect.inl create mode 100644 extensions/common/glm/gtx/io.hpp create mode 100644 extensions/common/glm/gtx/io.inl create mode 100644 extensions/common/glm/gtx/log_base.hpp create mode 100644 extensions/common/glm/gtx/log_base.inl create mode 100644 extensions/common/glm/gtx/matrix_cross_product.hpp create mode 100644 extensions/common/glm/gtx/matrix_cross_product.inl create mode 100644 extensions/common/glm/gtx/matrix_decompose.hpp create mode 100644 extensions/common/glm/gtx/matrix_decompose.inl create mode 100644 extensions/common/glm/gtx/matrix_interpolation.hpp create mode 100644 extensions/common/glm/gtx/matrix_interpolation.inl create mode 100644 extensions/common/glm/gtx/matrix_major_storage.hpp create mode 100644 extensions/common/glm/gtx/matrix_major_storage.inl create mode 100644 extensions/common/glm/gtx/matrix_operation.hpp create mode 100644 extensions/common/glm/gtx/matrix_operation.inl create mode 100644 extensions/common/glm/gtx/matrix_query.hpp create mode 100644 extensions/common/glm/gtx/matrix_query.inl create mode 100644 extensions/common/glm/gtx/matrix_transform_2d.hpp create mode 100644 extensions/common/glm/gtx/matrix_transform_2d.inl create mode 100644 extensions/common/glm/gtx/mixed_product.hpp create mode 100644 extensions/common/glm/gtx/mixed_product.inl create mode 100644 extensions/common/glm/gtx/multiple.hpp create mode 100644 extensions/common/glm/gtx/multiple.inl create mode 100644 extensions/common/glm/gtx/norm.hpp create mode 100644 extensions/common/glm/gtx/norm.inl create mode 100644 extensions/common/glm/gtx/normal.hpp create mode 100644 extensions/common/glm/gtx/normal.inl create mode 100644 extensions/common/glm/gtx/normalize_dot.hpp create mode 100644 extensions/common/glm/gtx/normalize_dot.inl create mode 100644 extensions/common/glm/gtx/number_precision.hpp create mode 100644 extensions/common/glm/gtx/number_precision.inl create mode 100644 extensions/common/glm/gtx/optimum_pow.hpp create mode 100644 extensions/common/glm/gtx/optimum_pow.inl create mode 100644 extensions/common/glm/gtx/orthonormalize.hpp create mode 100644 extensions/common/glm/gtx/orthonormalize.inl create mode 100644 extensions/common/glm/gtx/perpendicular.hpp create mode 100644 extensions/common/glm/gtx/perpendicular.inl create mode 100644 extensions/common/glm/gtx/polar_coordinates.hpp create mode 100644 extensions/common/glm/gtx/polar_coordinates.inl create mode 100644 extensions/common/glm/gtx/projection.hpp create mode 100644 extensions/common/glm/gtx/projection.inl create mode 100644 extensions/common/glm/gtx/quaternion.hpp create mode 100644 extensions/common/glm/gtx/quaternion.inl create mode 100644 extensions/common/glm/gtx/range.hpp create mode 100644 extensions/common/glm/gtx/raw_data.hpp create mode 100644 extensions/common/glm/gtx/raw_data.inl create mode 100644 extensions/common/glm/gtx/rotate_normalized_axis.hpp create mode 100644 extensions/common/glm/gtx/rotate_normalized_axis.inl create mode 100644 extensions/common/glm/gtx/rotate_vector.hpp create mode 100644 extensions/common/glm/gtx/rotate_vector.inl create mode 100644 extensions/common/glm/gtx/scalar_multiplication.hpp create mode 100644 extensions/common/glm/gtx/scalar_relational.hpp create mode 100644 extensions/common/glm/gtx/scalar_relational.inl create mode 100644 extensions/common/glm/gtx/simd_mat4.hpp create mode 100644 extensions/common/glm/gtx/simd_mat4.inl create mode 100644 extensions/common/glm/gtx/simd_quat.hpp create mode 100644 extensions/common/glm/gtx/simd_quat.inl create mode 100644 extensions/common/glm/gtx/simd_vec4.hpp create mode 100644 extensions/common/glm/gtx/simd_vec4.inl create mode 100644 extensions/common/glm/gtx/spline.hpp create mode 100644 extensions/common/glm/gtx/spline.inl create mode 100644 extensions/common/glm/gtx/std_based_type.hpp create mode 100644 extensions/common/glm/gtx/std_based_type.inl create mode 100644 extensions/common/glm/gtx/string_cast.hpp create mode 100644 extensions/common/glm/gtx/string_cast.inl create mode 100644 extensions/common/glm/gtx/transform.hpp create mode 100644 extensions/common/glm/gtx/transform.inl create mode 100644 extensions/common/glm/gtx/transform2.hpp create mode 100644 extensions/common/glm/gtx/transform2.inl create mode 100644 extensions/common/glm/gtx/type_aligned.hpp create mode 100644 extensions/common/glm/gtx/type_aligned.inl create mode 100644 extensions/common/glm/gtx/vector_angle.hpp create mode 100644 extensions/common/glm/gtx/vector_angle.inl create mode 100644 extensions/common/glm/gtx/vector_query.hpp create mode 100644 extensions/common/glm/gtx/vector_query.inl create mode 100644 extensions/common/glm/gtx/wrap.hpp create mode 100644 extensions/common/glm/gtx/wrap.inl create mode 100644 extensions/common/glm/integer.hpp create mode 100644 extensions/common/glm/mat2x2.hpp create mode 100644 extensions/common/glm/mat2x3.hpp create mode 100644 extensions/common/glm/mat2x4.hpp create mode 100644 extensions/common/glm/mat3x2.hpp create mode 100644 extensions/common/glm/mat3x3.hpp create mode 100644 extensions/common/glm/mat3x4.hpp create mode 100644 extensions/common/glm/mat4x2.hpp create mode 100644 extensions/common/glm/mat4x3.hpp create mode 100644 extensions/common/glm/mat4x4.hpp create mode 100644 extensions/common/glm/matrix.hpp create mode 100644 extensions/common/glm/packing.hpp create mode 100644 extensions/common/glm/trigonometric.hpp create mode 100644 extensions/common/glm/vec2.hpp create mode 100644 extensions/common/glm/vec3.hpp create mode 100644 extensions/common/glm/vec4.hpp create mode 100644 extensions/common/glm/vector_relational.hpp create mode 100644 extensions/common/logging.hpp create mode 100644 extensions/common/lzoconf.h create mode 100644 extensions/common/lzodefs.h create mode 100644 extensions/common/membuf.hpp create mode 100644 extensions/common/minilzo.c create mode 100644 extensions/common/minilzo.h create mode 100644 extensions/common/p3d/animation.cpp create mode 100644 extensions/common/p3d/animation.hpp create mode 100644 extensions/common/p3d/compressed.cpp create mode 100644 extensions/common/p3d/compressed.hpp create mode 100644 extensions/common/p3d/lod_info.cpp create mode 100644 extensions/common/p3d/lod_info.hpp create mode 100644 extensions/common/p3d/lod_types.hpp create mode 100644 extensions/common/p3d/model.cpp create mode 100644 extensions/common/p3d/model.hpp create mode 100644 extensions/common/p3d/model_info.cpp create mode 100644 extensions/common/p3d/model_info.hpp create mode 100644 extensions/common/p3d/parser.cpp create mode 100644 extensions/common/p3d/parser.hpp create mode 100644 extensions/common/p3d/parser_ref.txt create mode 100644 extensions/common/p3d/read_helpers.hpp create mode 100644 extensions/common/p3d/skeleton.cpp create mode 100644 extensions/common/p3d/skeleton.hpp create mode 100644 extensions/common/pbo/archive.cpp create mode 100644 extensions/common/pbo/archive.hpp create mode 100644 extensions/common/pbo/search.cpp create mode 100644 extensions/common/pbo/search.hpp create mode 100644 extensions/common/shared.cpp create mode 100644 extensions/common/shared.hpp create mode 100644 extensions/common/simplepipe_win32.cpp create mode 100644 extensions/common/simplepipe_win32.hpp create mode 100644 extensions/common/simulation/object.cpp create mode 100644 extensions/common/simulation/object.hpp create mode 100644 extensions/common/singleton.hpp create mode 100644 extensions/common/transform_matrix.hpp create mode 100644 extensions/common/vector.cpp create mode 100644 extensions/common/vector.hpp create mode 100644 extensions/dynload/CMakeLists.txt create mode 100644 extensions/dynload/ace_dynload.cpp create mode 100644 extensions/dynload/ace_dynload_dllmain.cpp create mode 100644 extensions/dynload/dynloader.hpp create mode 160000 extensions/lib/bullet3 diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index 9f4a8a29fa..b1c1703f94 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -1,11 +1,20 @@ cmake_minimum_required (VERSION 3.0) project (ACE) +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +if(WIN32) +add_definitions(/DWINVER=0x0600 /D_WIN32_WINNT=0x0600) +endif() + if (NOT CMAKE_BUILD_TYPE AND CMAKE_COMPILER_IS_GNUCXX) message(STATUS "No build type selected, default to Debug") set(CMAKE_BUILD_TYPE "Debug") endif() +option(DEVEL "DEVEL" OFF) +option(USE_BULLET "USE_BULLET" OFF) +option(USE_DIRECTX "USE_DIRECTX" OFF) option(USE_64BIT_BUILD "USE_64BIT_BUILD" OFF) option(USE_STATIC_LINKING "USE_STATIC_LINKING" ON) @@ -15,15 +24,66 @@ if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(CMAKE_SHARED_LINKER_FLAGS "-static-libgcc -static-libstdc++") else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:x86") set(CMAKE_CXX_FLAGS_DEBUG "/D _DEBUG /MTd /Zi /Ob0 /Od /RTC1") set(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG") endif() -file(GLOB ACE_COMMON_SOURCES common/*.h common/*.hpp common/*.c common/*.cpp) -add_library(ace_common STATIC ${ACE_COMMON_SOURCES}) -include_directories(AFTER "common") +include_directories("common") + +if(USE_BULLET) + # Dependencies + # + set(BACKUP_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}) + set(BACKUP_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + set(BACKUP_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + + add_definitions(-DUSE_DIRECTX) + add_subdirectory(lib/bullet3) + + set_target_properties(App_BasicExample PROPERTIES FOLDER Bullet3) + set_target_properties(App_HelloWorld PROPERTIES FOLDER Bullet3) + set_target_properties(App_ExampleBrowser PROPERTIES FOLDER Bullet3) + set_target_properties(Bullet2FileLoader PROPERTIES FOLDER Bullet3) + set_target_properties(Bullet3Collision PROPERTIES FOLDER Bullet3) + set_target_properties(Bullet3Dynamics PROPERTIES FOLDER Bullet3) + set_target_properties(Bullet3Geometry PROPERTIES FOLDER Bullet3) + set_target_properties(Bullet3Common PROPERTIES FOLDER Bullet3) + set_target_properties(Bullet3OpenCL_clew PROPERTIES FOLDER Bullet3) + set_target_properties(BulletCollision PROPERTIES FOLDER Bullet3) + set_target_properties(BulletDynamics PROPERTIES FOLDER Bullet3) + set_target_properties(BulletFileLoader PROPERTIES FOLDER Bullet3) + set_target_properties(BulletSoftBody PROPERTIES FOLDER Bullet3) + + set_target_properties(BulletWorldImporter PROPERTIES FOLDER Bullet3) + set_target_properties(BulletXmlWorldImporter PROPERTIES FOLDER Bullet3) + set_target_properties(ConvexDecomposition PROPERTIES FOLDER Bullet3) + set_target_properties(GIMPACTUtils PROPERTIES FOLDER Bullet3) + set_target_properties(gtest PROPERTIES FOLDER Bullet3) + set_target_properties(gwen PROPERTIES FOLDER Bullet3) + set_target_properties(HACD PROPERTIES FOLDER Bullet3) + set_target_properties(OpenGLWindow PROPERTIES FOLDER Bullet3) + set_target_properties(LinearMath PROPERTIES FOLDER Bullet3) + + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${BACKUP_ARCHIVE_OUTPUT_DIRECTORY}) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BACKUP_LIBRARY_OUTPUT_DIRECTORY}) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BACKUP_RUNTIME_OUTPUT_DIRECTORY}) + + include_directories(BEFORE "lib/bullet3/src") +endif() +if(USE_DIRECTX) + add_definitions(-DUSE_DIRECTX) + set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) + find_package (DirectX) + link_directories (BEFORE ${DirectX_D3DX11_LIBRARY}) + include_directories (BEFORE ${DirectX_D3DX11_INCLUDE_DIR} ) +endif() +if(DEVEL) + add_definitions(-DDEVEL) +endif() + string(TIMESTAMP ACE_BUILDSTAMP "%Y-%m-%dT%H:%M:%SZ") set(ACE_VERSION_MAJOR 3) @@ -50,13 +110,29 @@ if(MSVC) set(GLOBAL_RC ${CMAKE_CURRENT_BINARY_DIR}/common/ace_version_win32.rc) endif() -include_directories(AFTER ${CMAKE_CURRENT_BINARY_DIR}/common) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/common) set(GLOBAL_SOURCES ${GLOBAL_RC}) + # Add extensions to build here +add_subdirectory(common) + +# Extensions + add_subdirectory(fcs) add_subdirectory(break_line) add_subdirectory(clipboard) add_subdirectory(advanced_ballistics) +# Test Extension for dynamically loading/unloading built extensions; does not build in release +if (DEVEL) + add_subdirectory(dynload) + add_subdirectory(tests) + if(USE_DIRECTX) + add_subdirectory(lib/directxtk) + endif() +endif() + + + message("Build Type: ${CMAKE_BUILD_TYPE}") \ No newline at end of file diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index e6c55184a7..7e87592e00 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -1,4 +1,4 @@ -#include "ace_common.h" +#include "shared.hpp" #include #include @@ -235,9 +235,11 @@ extern "C" void __stdcall RVExtension(char *output, int outputSize, const char *function) { + ZERO_OUTPUT(); + if (!strcmp(function, "version")) { int n = sprintf_s(output, outputSize, "%s", ACE_FULL_VERSION_STR); - return; + EXTENSION_RETURN(); } char* input = _strdup(function); @@ -257,7 +259,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) retard = calculateRetard(dragModel, ballisticCoefficient, velocity); int n = sprintf_s(output, outputSize, "%f", retard); - return; + EXTENSION_RETURN(); } else if (!strcmp(mode, "atmosphericCorrection")) { double ballisticCoefficient = 1.0; double temperature = 15.0; @@ -273,7 +275,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) ballisticCoefficient = calculateAtmosphericCorrection(ballisticCoefficient, temperature, pressure, humidity, atmosphereModel); int n = sprintf_s(output, outputSize, "%f", ballisticCoefficient); - return; + EXTENSION_RETURN(); } else if (!strcmp(mode, "new")) { unsigned int index = 0; double airFriction = 0.0; @@ -339,8 +341,10 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) tickTime = strtod(strtok_s(NULL, ":", &next_token), NULL); tickTime += strtod(strtok_s(NULL, ":", &next_token), NULL); - if (index >= bulletDatabase.size()) - bulletDatabase.resize(index+1); + while (index >= bulletDatabase.size()) { + Bullet bullet; + bulletDatabase.push_back(bullet); + } bulletDatabase[index].airFriction = airFriction; bulletDatabase[index].ballisticCoefficients = ballisticCoefficients; @@ -366,7 +370,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) bulletDatabase[index].randSeed = 0; int n = sprintf_s(output, outputSize, "%s", ""); - return; + EXTENSION_RETURN(); } else if (!strcmp(mode, "simulate")) { // simulate:0:[-0.109985,542.529,-3.98301]:[3751.57,5332.23,214.252]:[0.598153,2.38829,0]:28.6:0:0.481542:0:215.16 unsigned int index = 0; @@ -583,7 +587,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) }; int n = sprintf_s(output, outputSize, "_bullet setVelocity (_bulletVelocity vectorAdd [%f, %f, %f]); _bullet setPosASL (_bulletPosition vectorAdd [%f, %f, %f]);", velocityOffset[0], velocityOffset[1], velocityOffset[2], positionOffset[0], positionOffset[1], positionOffset[2]); - return; + EXTENSION_RETURN(); } else if (!strcmp(mode, "set")) { int height = 0; int numObjects = 0; @@ -598,7 +602,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) map->gridSurfaceIsWater.push_back(surfaceIsWater); int n = sprintf_s(output, outputSize, "%s", ""); - return; + EXTENSION_RETURN(); } else if (!strcmp(mode, "init")) { int mapSize = 0; int mapGrids = 0; @@ -609,15 +613,11 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) mapGrids = (int)ceil((double)mapSize / 50.0) + 1; gridCells = mapGrids * mapGrids; - - auto map_iter = mapDatabase.find(worldName); - if (map_iter == mapDatabase.end()) - return; - map = &map_iter->second; + map = &mapDatabase[worldName]; if (map->gridHeights.size() == gridCells) { int n = sprintf_s(output, outputSize, "%s", "Terrain already initialized"); - return; + EXTENSION_RETURN(); } map->mapSize = mapSize; @@ -630,9 +630,9 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) map->gridSurfaceIsWater.reserve(gridCells); int n = sprintf_s(output, outputSize, "%s", ""); - return; + EXTENSION_RETURN(); } int n = sprintf_s(output, outputSize, "%s", ""); - return; + EXTENSION_RETURN(); } diff --git a/extensions/advanced_ballistics/CMakeLists.txt b/extensions/advanced_ballistics/CMakeLists.txt index 19b9fc41d9..51e709f6d2 100644 --- a/extensions/advanced_ballistics/CMakeLists.txt +++ b/extensions/advanced_ballistics/CMakeLists.txt @@ -1,9 +1,10 @@ set(ACE_EXTENSION_NAME "ace_advanced_ballistics") file(GLOB SOURCES *.h *.hpp *.c *.cpp) -add_library( ${ACE_EXTENSION_NAME} SHARED ${GLOBAL_SOURCES} ${SOURCES}) -add_dependencies(${ACE_EXTENSION_NAME} ace_common) -SET_TARGET_PROPERTIES(${ACE_EXTENSION_NAME} PROPERTIES PREFIX "") +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) diff --git a/extensions/break_line/CMakeLists.txt b/extensions/break_line/CMakeLists.txt index 00a74d4c3a..5d29d295c8 100644 --- a/extensions/break_line/CMakeLists.txt +++ b/extensions/break_line/CMakeLists.txt @@ -1,9 +1,10 @@ set(ACE_EXTENSION_NAME "ace_break_line") file(GLOB SOURCES *.h *.hpp *.c *.cpp) -add_library( ${ACE_EXTENSION_NAME} SHARED ${GLOBAL_SOURCES} ${SOURCES}) -add_dependencies(${ACE_EXTENSION_NAME} ace_common) -SET_TARGET_PROPERTIES(${ACE_EXTENSION_NAME} PROPERTIES PREFIX "") +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) diff --git a/extensions/break_line/ace_break_line.cpp b/extensions/break_line/ace_break_line.cpp index 2b253c05bc..440566b744 100644 --- a/extensions/break_line/ace_break_line.cpp +++ b/extensions/break_line/ace_break_line.cpp @@ -11,7 +11,7 @@ * String with line breaks */ -#include "ace_common.h" +#include "shared.hpp" #include #include @@ -65,12 +65,14 @@ std::string addLineBreaks(const std::vector &words) { #pragma warning( disable : 4996 ) void __stdcall RVExtension(char *output, int outputSize, const char *function) { + ZERO_OUTPUT(); if (!strcmp(function, "version")) { strncpy(output, ACE_FULL_VERSION_STR, outputSize); } else { strncpy(output, addLineBreaks(splitString(function)).c_str(), outputSize); output[outputSize - 1] = '\0'; } + EXTENSION_RETURN(); } #pragma warning( pop ) diff --git a/extensions/clipboard/ace_clipboard.cpp b/extensions/clipboard/ace_clipboard.cpp index 4809a14acf..41e3a5721f 100644 --- a/extensions/clipboard/ace_clipboard.cpp +++ b/extensions/clipboard/ace_clipboard.cpp @@ -9,7 +9,7 @@ * Returns: * None */ -#include "ace_common.h" +#include "shared.hpp" #include #include @@ -23,12 +23,15 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) { std::string cur_input(function); std::string result; - if (cur_input.length() < 1) - return; + ZERO_OUTPUT(); + + if (cur_input.length() < 1) { + EXTENSION_RETURN(); + } if (!strcmp(function, "version")) { strncpy(output, ACE_FULL_VERSION_STR, outputSize); - return; + EXTENSION_RETURN(); } #ifdef _WIN32 @@ -38,14 +41,14 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) { if (!hClipboardData) { result = "GlobalAlloc() failed, GetLastError=" + GetLastError(); gClipboardData = ""; - return; + EXTENSION_RETURN(); } char *pClipboardData = (char *)GlobalLock(hClipboardData); if (!pClipboardData) { result = "GlobalLock() failed, GetLastError=" + GetLastError(); gClipboardData = ""; - return; + EXTENSION_RETURN(); } memcpy(pClipboardData, gClipboardData.c_str(), gClipboardData.length()); pClipboardData[gClipboardData.length() + 1] = 0x00; @@ -82,6 +85,6 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) { #endif - + EXTENSION_RETURN(); } diff --git a/extensions/cmake/FindDirectX.cmake b/extensions/cmake/FindDirectX.cmake new file mode 100644 index 0000000000..69bf1d62e8 --- /dev/null +++ b/extensions/cmake/FindDirectX.cmake @@ -0,0 +1,215 @@ +# - try to find DirectX include directories and libraries +# +# Once done this will define: +# +# DirectX_XYZ_FOUND - system has the XYZ API +# DirectX_XYZ_INCLUDE_FOUND - system has the include for the XYZ API +# DirectX_XYZ_INCLUDE_DIR - include directory for the XYZ API +# DirectX_XYZ_LIBRARY - path/name for the XYZ library +# +# Where XYZ can be any of: +# +# DDRAW +# D3D +# D3DX +# D3D8 +# D3DX8 +# D3D9 +# D3DX9 +# D3D10 +# D3D10_1 +# D3DX10 +# D3D11 +# D3D11_1 +# D3D11_2 +# D3DX11 +# D2D1 +# + + +include (CheckIncludeFileCXX) +include (FindPackageMessage) + + +if (WIN32) + + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set (DirectX_ARCHITECTURE x64) + else () + set (DirectX_ARCHITECTURE x86) + endif () + + # Can't use "$ENV{ProgramFiles(x86)}" to avoid violating CMP0053. See + # http://public.kitware.com/pipermail/cmake-developers/2014-October/023190.html + set (ProgramFiles_x86 "ProgramFiles(x86)") + if ("$ENV{${ProgramFiles_x86}}") + set (ProgramFiles "$ENV{${ProgramFiles_x86}}") + else () + set (ProgramFiles "$ENV{ProgramFiles}") + endif () + + find_path (DirectX_ROOT_DIR + Include/d3d9.h + PATHS + "$ENV{DXSDK_DIR}" + "${ProgramFiles}/Microsoft DirectX SDK (June 2010)" + "${ProgramFiles}/Microsoft DirectX SDK (February 2010)" + "${ProgramFiles}/Microsoft DirectX SDK (March 2009)" + "${ProgramFiles}/Microsoft DirectX SDK (August 2008)" + "${ProgramFiles}/Microsoft DirectX SDK (June 2008)" + "${ProgramFiles}/Microsoft DirectX SDK (March 2008)" + "${ProgramFiles}/Microsoft DirectX SDK (November 2007)" + "${ProgramFiles}/Microsoft DirectX SDK (August 2007)" + "${ProgramFiles}/Microsoft DirectX SDK" + DOC "DirectX SDK root directory" + ) + if (DirectX_ROOT_DIR) + set (DirectX_INC_SEARCH_PATH "${DirectX_ROOT_DIR}/Include") + set (DirectX_LIB_SEARCH_PATH "${DirectX_ROOT_DIR}/Lib/${DirectX_ARCHITECTURE}") + set (DirectX_BIN_SEARCH_PATH "${DirectX_ROOT_DIR}/Utilities/bin/x86") + endif () + + # With VS 2011 and Windows 8 SDK, the DirectX SDK is included as part of + # the Windows SDK. + # + # See also: + # - http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx + if (DEFINED MSVC_VERSION AND NOT ${MSVC_VERSION} LESS 1700) + set (USE_WINSDK_HEADERS TRUE) + endif () + + # Find a header in the DirectX SDK + macro (find_dxsdk_header var_name header) + set (include_dir_var "DirectX_${var_name}_INCLUDE_DIR") + set (include_found_var "DirectX_${var_name}_INCLUDE_FOUND") + find_path (${include_dir_var} ${header} + HINTS ${DirectX_INC_SEARCH_PATH} + DOC "The directory where ${header} resides" + CMAKE_FIND_ROOT_PATH_BOTH + ) + if (${include_dir_var}) + set (${include_found_var} TRUE) + find_package_message (${var_name}_INC "Found ${header} header: ${${include_dir_var}}/${header}" "[${${include_dir_var}}]") + endif () + mark_as_advanced (${include_found_var}) + endmacro () + + # Find a library in the DirectX SDK + macro (find_dxsdk_library var_name library) + # DirectX SDK + set (library_var "DirectX_${var_name}_LIBRARY") + find_library (${library_var} ${library} + HINTS ${DirectX_LIB_SEARCH_PATH} + DOC "The directory where ${library} resides" + CMAKE_FIND_ROOT_PATH_BOTH + ) + if (${library_var}) + find_package_message (${var_name}_LIB "Found ${library} library: ${${library_var}}" "[${${library_var}}]") + endif () + mark_as_advanced (${library_var}) + endmacro () + + # Find a header in the Windows SDK + macro (find_winsdk_header var_name header) + if (USE_WINSDK_HEADERS) + # Windows SDK + set (include_dir_var "DirectX_${var_name}_INCLUDE_DIR") + set (include_found_var "DirectX_${var_name}_INCLUDE_FOUND") + check_include_file_cxx (${header} ${include_found_var}) + set (${include_dir_var}) + mark_as_advanced (${include_found_var}) + else () + find_dxsdk_header (${var_name} ${header}) + endif () + endmacro () + + # Find a library in the Windows SDK + macro (find_winsdk_library var_name library) + if (USE_WINSDK_HEADERS) + # XXX: We currently just assume the library exists + set (library_var "DirectX_${var_name}_LIBRARY") + set (${library_var} ${library}) + mark_as_advanced (${library_var}) + else () + find_dxsdk_library (${var_name} ${library}) + endif () + endmacro () + + # Combine header and library variables into an API found variable + macro (find_combined var_name inc_var_name lib_var_name) + if (DirectX_${inc_var_name}_INCLUDE_FOUND AND DirectX_${lib_var_name}_LIBRARY) + set (DirectX_${var_name}_FOUND 1) + find_package_message (${var_name} "Found ${var_name} API" "[${DirectX_${lib_var_name}_LIBRARY}][${DirectX_${inc_var_name}_INCLUDE_DIR}]") + endif () + endmacro () + + find_winsdk_header (DDRAW ddraw.h) + find_winsdk_library (DDRAW ddraw) + find_combined (DDRAW DDRAW DDRAW) + + if (CMAKE_GENERATOR_TOOLSET MATCHES "_xp$") + # Windows 7 SDKs, used by XP toolset, do not include d3d.h + find_dxsdk_header (D3D d3d.h) + else () + find_winsdk_header (D3D d3d.h) + endif () + find_combined (D3D D3D DDRAW) + + find_dxsdk_header (D3DX d3dx.h) + find_combined (D3DX D3DX D3DX) + + find_dxsdk_header (D3D8 d3d8.h) + find_dxsdk_library (D3D8 d3d8) + find_combined (D3D8 D3D8 D3D8) + + find_dxsdk_header (D3DX8 d3dx8.h) + find_dxsdk_library (D3DX8 d3dx8) + find_combined (D3DX8 D3DX8 D3DX8) + + find_winsdk_header (D3D9 d3d9.h) + find_winsdk_library (D3D9 d3d9) + find_combined (D3D9 D3D9 D3D9) + + find_dxsdk_header (D3DX9 d3dx9.h) + find_dxsdk_library (D3DX9 d3dx9) + find_combined (D3DX9 D3DX9 D3DX9) + + find_winsdk_header (DXGI dxgi.h) + find_winsdk_header (DXGI1_2 dxgi1_2.h) + find_winsdk_header (DXGI1_3 dxgi1_3.h) + find_winsdk_library (DXGI dxgi) + + find_winsdk_header (D3D10 d3d10.h) + find_winsdk_library (D3D10 d3d10) + find_combined (D3D10 D3D10 D3D10) + + find_winsdk_header (D3D10_1 d3d10_1.h) + find_winsdk_library (D3D10_1 d3d10_1) + find_combined (D3D10_1 D3D10_1 D3D10_1) + + find_dxsdk_header (D3DX10 d3dx10.h) + find_dxsdk_library (D3DX10 d3dx10) + find_combined (D3DX10 D3DX10 D3DX10) + + find_winsdk_header (D3D11 d3d11.h) + find_winsdk_library (D3D11 d3d11) + find_combined (D3D11 D3D11 D3D11) + find_winsdk_header (D3D11_1 d3d11_1.h) + find_combined (D3D11_1 D3D11_1 D3D11) + find_winsdk_header (D3D11_2 d3d11_2.h) + find_combined (D3D11_2 D3D11_2 D3D11) + + find_dxsdk_header (D3DX11 d3dx11.h) + find_dxsdk_library (D3DX11 d3dx11) + find_combined (D3DX11 D3DX11 D3DX11) + + find_winsdk_header (D2D1 d2d1.h) + find_winsdk_library (D2D1 d2d1) + find_combined (D2D1 D2D1 D2D1) + + find_program (DirectX_FXC_EXECUTABLE fxc + HINTS ${DirectX_BIN_SEARCH_PATH} + DOC "Path to fxc.exe executable." + ) + +endif () \ No newline at end of file diff --git a/extensions/common/CMakeLists.txt b/extensions/common/CMakeLists.txt new file mode 100644 index 0000000000..620023ceb1 --- /dev/null +++ b/extensions/common/CMakeLists.txt @@ -0,0 +1,18 @@ +file(GLOB_RECURSE ACE_COMMON_SOURCES *.h *.hpp *.c *.cpp) + + +file(GLOB ACE_BASE_COMMON_SOURCES *.h *.hpp *.c *.cpp) +file(GLOB ACE_P3D_SOURCES p3d/*.h p3d/*.hpp p3d/*.c p3d/*.cpp) +file(GLOB ACE_PBO_SOURCES pbo/*.h pbo/*.hpp pbo/*.c pbo/*.cpp) +file(GLOB ACE_SIMULATION_SOURCES simulation/*.h simulation/*.hpp simulation/*.c simulation/*.cpp) +file(GLOB ACE_DIRECTX_SOURCES directx/*.h directx/*.hpp directx/*.c directx/*.cpp) +file(GLOB ACE_GLM_SOURCES glm/*.h glm/*.hpp glm/*.c glm/*.cpp) + +SOURCE_GROUP("common" FILES ${ACE_BASE_COMMON_SOURCES}) +SOURCE_GROUP("p3d" FILES ${ACE_P3D_SOURCES}) +SOURCE_GROUP("pbo" FILES ${ACE_PBO_SOURCES}) +SOURCE_GROUP("simulation" FILES ${ACE_SIMULATION_SOURCES}) +SOURCE_GROUP("directx" FILES ${ACE_DIRECTX_SOURCES}) +SOURCE_GROUP("glm" FILES ${ACE_GLM_SOURCES}) + +add_library(ace_common STATIC ${ACE_GLM_SOURCES} ${ACE_BASE_COMMON_SOURCES} ${ACE_P3D_SOURCES} ${ACE_PBO_SOURCES} ${ACE_SIMULATION_SOURCES} ${ACE_DIRECTX_SOURCES}) diff --git a/extensions/common/arguments.hpp b/extensions/common/arguments.hpp new file mode 100644 index 0000000000..70e942a241 --- /dev/null +++ b/extensions/common/arguments.hpp @@ -0,0 +1,90 @@ +#pragma once + +#include "shared.hpp" +#include "vector.hpp" + +#include +#include + +namespace ace { + class argument_accessor { + public: + argument_accessor(const uint32_t index, const std::vector & ar) : _index(index), _args(ar) { } + + const std::string & as_string() const { return _args[_index]; } + operator const std::string &() const { return as_string(); } + + float as_float() const { return atof(_args[_index].c_str()); } + operator float() const { return as_float(); } + + int as_int() const { return atoi(_args[_index].c_str()); } + operator int() const { return as_int(); } + + int as_uint32() const { return (uint32_t)atoi(_args[_index].c_str()); } + operator uint32_t() const { return as_uint32(); } + + ace::vector3 as_vector() const { + std::vector t = ace::split(_args[_index], ';'); + return ace::vector3(atof(t[0].c_str()), + atof(t[1].c_str()), + atof(t[2].c_str())); + } + operator ace::vector3() const { return as_vector(); } + + protected: + const uint32_t _index; + const std::vector & _args; + }; + + class arguments { + public: + arguments(const std::string & str) : _original(str) { + _args = ace::split(str, ','); + for (int i = 0; i < _args.size(); i++) { + _args[i] = trim(_args[i]); + } + } + + size_t size() const { return _args.size(); } + + const argument_accessor operator[] (int index) const { return argument_accessor(index, _args); } + + const std::string & as_string(uint32_t _index) const { return _args[_index]; } + float as_float(uint32_t _index) const { return atof(_args[_index].c_str()); } + int as_int(uint32_t _index) const { return atoi(_args[_index].c_str()); } + int as_uint32(uint32_t _index) const { return (uint32_t)atoi(_args[_index].c_str()); } + ace::vector3 as_vector(uint32_t _index) const { + std::vector t = ace::split(_args[_index], ';'); + return ace::vector3(atof(t[0].c_str()), + atof(t[1].c_str()), + atof(t[2].c_str())); + } + + const std::string & get() const { + return _original; + } + + std::string create(const std::string & command) const { + std::stringstream ss; + ss << command << ":"; + + for (auto & v : _args) { + ss << v << ","; + } + + // Remove the trailing , + std::string result = ss.str(); + result.erase(result.length()); + + return result; + } + static std::string create(const std::string & command, const arguments & args) { + return args.create(command); + } + + + protected: + std::vector _args; + const std::string _original; + }; +} \ No newline at end of file diff --git a/extensions/common/directx/d3d_display.cpp b/extensions/common/directx/d3d_display.cpp new file mode 100644 index 0000000000..bfc7a0e013 --- /dev/null +++ b/extensions/common/directx/d3d_display.cpp @@ -0,0 +1,439 @@ +#ifdef USE_DIRECTX + +#include "shared.hpp" +#include "d3d_display.hpp" + +#include + +#include + +using namespace DirectX; + +namespace ace { + namespace debug { + + DWORD GetMainThreadId() { + const std::shared_ptr hThreadSnapshot( + CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0), CloseHandle); + if (hThreadSnapshot.get() == INVALID_HANDLE_VALUE) { + throw std::runtime_error("GetMainThreadId failed"); + } + THREADENTRY32 tEntry; + tEntry.dwSize = sizeof(THREADENTRY32); + DWORD result = 0; + DWORD currentPID = GetCurrentProcessId(); + for (BOOL success = Thread32First(hThreadSnapshot.get(), &tEntry); + !result && success && GetLastError() != ERROR_NO_MORE_FILES; + success = Thread32Next(hThreadSnapshot.get(), &tEntry)) + { + if (tEntry.th32OwnerProcessID == currentPID) { + result = tEntry.th32ThreadID; + } + } + return result; + } + + d3d_display::d3d_display() : _fullscreen(false) {} + d3d_display::~d3d_display() {} + + bool d3d_display::render_thread(uint32_t w, uint32_t h, bool f) { + _render_thread = std::make_unique(this, d3d_display_worker_args(w, h, f) ); + return true; + } + + void d3d_display::render_worker(d3d_display_worker_args args) { + { + create(args.width, args.height, args.fullscreen); + init(); + } + run(); + } + + bool d3d_display::run() { + MSG msg = { 0 }; + + while (WM_QUIT != msg.message) { + if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } else { + render(); + } + } + + return true; + } + + bool d3d_display::init() { + + std::lock_guard _lock(_render_lock); + + HRESULT hr = S_OK; + RECT rc; + + GetClientRect(_hWnd, &rc); + UINT width = rc.right - rc.left; + UINT height = rc.bottom - rc.top; + UINT createDeviceFlags = 0; +#ifdef _DEBUG + createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; +#endif + + D3D_DRIVER_TYPE driverTypes[] = + { + D3D_DRIVER_TYPE_HARDWARE, + D3D_DRIVER_TYPE_WARP, + D3D_DRIVER_TYPE_REFERENCE, + }; + UINT numDriverTypes = ARRAYSIZE(driverTypes); + + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_1, + D3D_FEATURE_LEVEL_10_0, + }; + UINT numFeatureLevels = ARRAYSIZE(featureLevels); + + DXGI_SWAP_CHAIN_DESC sd; + ZeroMemory(&sd, sizeof(sd)); + sd.BufferCount = 1; + sd.BufferDesc.Width = width; + sd.BufferDesc.Height = height; + sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + sd.BufferDesc.RefreshRate.Numerator = 60; + sd.BufferDesc.RefreshRate.Denominator = 1; + sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + sd.OutputWindow = _hWnd; + sd.SampleDesc.Count = 1; + sd.SampleDesc.Quality = 0; + sd.Windowed = _fullscreen ? FALSE : TRUE; + + for (UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++) + { + _driverType = driverTypes[driverTypeIndex]; + hr = D3D11CreateDeviceAndSwapChain(nullptr, _driverType, nullptr, createDeviceFlags, featureLevels, numFeatureLevels, + D3D11_SDK_VERSION, &sd, &_pSwapChain, &_pd3dDevice, &_featureLevel, &_pImmediateContext); + if (SUCCEEDED(hr)) + break; + } + if (FAILED(hr)) + return false; + + // Create a render target view + ID3D11Texture2D* pBackBuffer = nullptr; + hr = _pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer); + if (FAILED(hr)) + return false; + + hr = _pd3dDevice->CreateRenderTargetView(pBackBuffer, nullptr, &_pRenderTargetView); + pBackBuffer->Release(); + if (FAILED(hr)) + return false; + + // Create depth stencil texture + D3D11_TEXTURE2D_DESC descDepth; + ZeroMemory(&descDepth, sizeof(descDepth)); + descDepth.Width = width; + descDepth.Height = height; + descDepth.MipLevels = 1; + descDepth.ArraySize = 1; + descDepth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; + descDepth.SampleDesc.Count = 1; + descDepth.SampleDesc.Quality = 0; + descDepth.Usage = D3D11_USAGE_DEFAULT; + descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL; + descDepth.CPUAccessFlags = 0; + descDepth.MiscFlags = 0; + hr = _pd3dDevice->CreateTexture2D(&descDepth, nullptr, &_pDepthStencil); + if (FAILED(hr)) + return false; + + // Create the depth stencil view + D3D11_DEPTH_STENCIL_VIEW_DESC descDSV; + ZeroMemory(&descDSV, sizeof(descDSV)); + descDSV.Format = descDepth.Format; + descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; + descDSV.Texture2D.MipSlice = 0; + hr = _pd3dDevice->CreateDepthStencilView(_pDepthStencil, &descDSV, &_pDepthStencilView); + if (FAILED(hr)) + return false; + + _pImmediateContext->OMSetRenderTargets(1, &_pRenderTargetView, _pDepthStencilView); + + // Setup the viewport + D3D11_VIEWPORT vp; + vp.Width = (FLOAT)width; + vp.Height = (FLOAT)height; + vp.MinDepth = 0.0f; + vp.MaxDepth = 1.0f; + vp.TopLeftX = 0; + vp.TopLeftY = 0; + _pImmediateContext->RSSetViewports(1, &vp); + + XMStoreFloat4x4(&_World, XMMatrixIdentity()); + XMStoreFloat4x4(&_View, XMMatrixLookAtLH(XMLoadFloat4(&_camera.camPosition), XMLoadFloat4(&_camera.camTarget), XMLoadFloat4(&_camera.camUp))); + XMStoreFloat4x4(&_Projection, XMMatrixPerspectiveFovLH(XM_PIDIV4, width / (FLOAT)height, 0.01f, 100.0f)); + + init_input(); + + return true; + } + + bool d3d_display::init_input() { + RAWINPUTDEVICE Rid[2]; + + Rid[0].usUsagePage = 0x01; // magic numbers + Rid[0].usUsage = 0x02; // magically means mouse + Rid[0].dwFlags = 0; // (use this if you DO NOT WANT to capture mouse) + //Rid[0].dwFlags = RIDEV_CAPTUREMOUSE | RIDEV_NOLEGACY ; // (use this to CAPTURE MOUSE) + Rid[0].hwndTarget = _hWnd; + + Rid[1].usUsagePage = 0x01; // magic numbers + Rid[1].usUsage = 0x06; // magically means keyboard + Rid[1].dwFlags = 0; // use RIDEV_NOHOTKEYS for no winkey + Rid[1].hwndTarget = _hWnd; + + if (!RegisterRawInputDevices(Rid, 2, sizeof(Rid[0]))) { + LOG(ERROR) << "Could not register raw input devices. "; + exit(1); + } + } + + bool d3d_display::create(uint32_t width = 1024, uint32_t height = 768, bool fullscreen = false) { + std::lock_guard _lock(_render_lock); + + _fullscreen = fullscreen; + + WNDCLASSEXW wcex; + wcex.cbSize = sizeof(WNDCLASSEXW); + wcex.style = CS_HREDRAW | CS_VREDRAW; + wcex.lpfnWndProc = (WNDPROC)&ace::debug::d3d_display::wndproc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = (HINSTANCE)GetCurrentProcess(); + //wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_SAMPLE1); + //wcex.hCursor = LoadCursor(nullptr, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + wcex.lpszMenuName = nullptr; + wcex.lpszClassName = L"ACE3BaseDisplayClass"; + //wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SAMPLE1); + if (!RegisterClassExW(&wcex)) { + return false; + } + + // Create window + _hInst = (HINSTANCE)GetCurrentProcess(); + RECT rc = { 0, 0, width, height }; + AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE); + _hWnd = CreateWindowW(L"ACE3BaseDisplayClass", L"ACE3 D3D Render", WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, _hInst, + nullptr); + + if (!_hWnd) { + return false; + } + + // Attach our input to the master input + //AttachThreadInput(GetCurrentThreadId(), GetMainThraedId()); + + SetWindowLongPtr(_hWnd, GWLP_USERDATA, (LONG)this); + + ShowWindow(_hWnd, 5); + + return true; + } + + bool d3d_display::destroy() { + if (_pImmediateContext) _pImmediateContext->ClearState(); + + if (_pBatchInputLayout) _pBatchInputLayout->Release(); + + if (_pTextureRV1) _pTextureRV1->Release(); + if (_pTextureRV2) _pTextureRV2->Release(); + + if (_pDepthStencilView) _pDepthStencilView->Release(); + if (_pDepthStencil) _pDepthStencil->Release(); + if (_pRenderTargetView) _pRenderTargetView->Release(); + if (_pSwapChain) _pSwapChain->Release(); + if (_pImmediateContext) _pImmediateContext->Release(); + if (_pd3dDevice) _pd3dDevice->Release(); + + return true; + } + + bool d3d_display::render() { + // Update our time + static float t = 0.0f; + static float dt = 0.f; + if (_driverType == D3D_DRIVER_TYPE_REFERENCE) { + t += (float)XM_PI * 0.0125f; + } else { + static uint64_t dwTimeStart = 0; + static uint64_t dwTimeLast = 0; + uint64_t dwTimeCur = GetTickCount64(); + if (dwTimeStart == 0) + dwTimeStart = dwTimeCur; + t = (dwTimeCur - dwTimeStart) / 1000.0f; + dt = (dwTimeCur - dwTimeLast) / 1000.0f; + dwTimeLast = dwTimeCur; + } + + { + std::lock_guard _lock(_render_lock); + + _pImmediateContext->ClearRenderTargetView(_pRenderTargetView, Colors::MidnightBlue); + _pImmediateContext->ClearDepthStencilView(_pDepthStencilView, D3D11_CLEAR_DEPTH, 1.0f, 0); + + update_camera(); + step(); + + _pSwapChain->Present(0, 0); + } + + return true; + } + + bool d3d_display::step() { + return true; + } + + void d3d_display::_move_camera(ace::vector3 direction) { + + } + void d3d_display::_rotate_camera(ace::vector3 direction) { + + } + void d3d_display::update_camera() { + XMVECTOR DefaultForward, DefaultRight, camPosition; + + DefaultForward = XMLoadFloat4(&_camera.DefaultForward); + DefaultRight = XMLoadFloat4(&_camera.DefaultRight); + camPosition = XMLoadFloat4(&_camera.camPosition); + + XMMATRIX camRotationMatrix = XMMatrixRotationRollPitchYaw(_camera.camPitch, _camera.camYaw, 0); + XMVECTOR camTarget = XMVector3TransformCoord(DefaultForward, camRotationMatrix); + camTarget = XMVector3Normalize(camTarget); + + XMVECTOR camRight = XMVector3TransformCoord(DefaultRight, camRotationMatrix); + XMVECTOR camForward = XMVector3TransformCoord(DefaultForward, camRotationMatrix); + XMVECTOR camUp = XMVector3Cross(camForward, camRight); + + camPosition += _camera.moveLeftRight * camRight; + camPosition += _camera.moveBackForward * camForward; + XMStoreFloat4(&_camera.camPosition, camPosition); + + _camera.moveLeftRight = 0.0f; + _camera.moveBackForward = 0.0f; + + camTarget = camPosition + camTarget; + + XMStoreFloat4x4(&_View, XMMatrixLookAtLH(camPosition, camTarget, camUp)); + } + + LRESULT CALLBACK d3d_display::_wndproc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { + PAINTSTRUCT ps; + HDC hdc; + + switch (message) { + case WM_INPUT: { + UINT dwSize; + if (GetActiveWindow() != _hWnd) { + return DefWindowProc(hWnd, message, wParam, lParam); + } + GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &dwSize, + sizeof(RAWINPUTHEADER)); + LPBYTE lpb = new BYTE[dwSize]; + if (lpb == NULL) { + return 0; + } + + int readSize = GetRawInputData((HRAWINPUT)lParam, RID_INPUT, lpb, &dwSize, sizeof(RAWINPUTHEADER)); + + if (readSize != dwSize) + break; + + RAWINPUT* raw = (RAWINPUT*)lpb; + + float speed = 0.5f; + + if (raw->header.dwType == RIM_TYPEKEYBOARD) { + switch (raw->data.keyboard.VKey) { + case VK_SPACE: { + XMStoreFloat4(&_camera.camPosition, XMVectorSet(0, 0, 0, 0)); + break; + } + // Camera Movement + case 0x57: case VK_NUMPAD8: + case VK_UP: { + _camera.moveBackForward += speed; + break; + } + case 0x53: case VK_NUMPAD2: + case VK_DOWN: { + _camera.moveBackForward -= speed; + break; + } + case 0x41: case VK_NUMPAD4: + case VK_LEFT: { + _camera.moveLeftRight -= speed; + break; + } + case 0x44: case VK_NUMPAD6: + case VK_RIGHT: { + _camera.moveLeftRight += speed; + break; + } + // Numpad Movement + case VK_NUMPAD5: { + XMStoreFloat4(&_camera.camPosition, XMVectorSet(0, 0, 0, 0)); + break; + } + } + } + else if (raw->header.dwType == RIM_TYPEMOUSE) { + RAWMOUSE mouseCurrState = raw->data.mouse; + + if ((mouseCurrState.lLastX != _last_mouse_state.lLastY) || (mouseCurrState.lLastX != _last_mouse_state.lLastY)) + { + _camera.camYaw += mouseCurrState.lLastX * 0.005f; + _camera.camPitch += mouseCurrState.lLastY * 0.005f; + _last_mouse_state = mouseCurrState; + } + + } + + delete[] lpb; + return 0; + } + + case WM_PAINT: + hdc = BeginPaint(hWnd, &ps); + EndPaint(hWnd, &ps); + break; + + case WM_DESTROY: + PostQuitMessage(0); + + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + + return 0; + } + LRESULT CALLBACK d3d_display::wndproc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { + LONG data; + data = GetWindowLongPtr(hWnd, GWLP_USERDATA); + if (data) { + return ((d3d_display*)data)->_wndproc(hWnd, message, wParam, lParam); + } else { + return DefWindowProc(hWnd, message, wParam, lParam); + } + } + }; + + +}; + +#endif \ No newline at end of file diff --git a/extensions/common/directx/d3d_display.hpp b/extensions/common/directx/d3d_display.hpp new file mode 100644 index 0000000000..b10e8ef070 --- /dev/null +++ b/extensions/common/directx/d3d_display.hpp @@ -0,0 +1,130 @@ +#pragma once + +#ifdef USE_DIRECTX + +#include +#include +#include +#include + +#include +#include +#include + +#include "singleton.hpp" +#include "vector.hpp" + +#define IDI_ACE_DEBUG 666 + +namespace ace { + namespace debug { + + __declspec(align(16)) + struct camera_movement { + camera_movement() { + XMStoreFloat4(&DefaultForward, DirectX::XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f)); + XMStoreFloat4(&DefaultRight, DirectX::XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f)); + XMStoreFloat4(&camForward, DirectX::XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f)); + XMStoreFloat4(&camRight, DirectX::XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f)); + + camYaw = 0.0f; + camPitch = 0.0f; + + moveLeftRight = 0.0f; + moveBackForward = 0.0f; + + XMStoreFloat4(&camPosition, DirectX::XMVectorSet(0.0f, 12.0f, 6.0f, 0.0f)); + XMStoreFloat4(&camTarget, DirectX::XMVectorSet(0.0f, 0.0f, 0.0f, 0.0f)); + XMStoreFloat4(&camUp, DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f)); + } + + DirectX::XMFLOAT4 DefaultForward; + DirectX::XMFLOAT4 DefaultRight; + DirectX::XMFLOAT4 camForward; + DirectX::XMFLOAT4 camRight; + + DirectX::XMFLOAT4X4 camRotationMatrix; + DirectX::XMFLOAT4X4 groundWorld; + + float moveLeftRight; + float moveBackForward; + + float camYaw; + float camPitch; + + DirectX::XMFLOAT4 camPosition; + DirectX::XMFLOAT4 camTarget; + DirectX::XMFLOAT4 camUp; + }; + + struct d3d_display_worker; + struct d3d_display_worker_args; + __declspec(align(16)) + class d3d_display { + public: + d3d_display(); + ~d3d_display(); + + virtual bool run(); + virtual bool render(); + virtual bool render_thread(uint32_t, uint32_t, bool); + + virtual void update_camera(); + virtual bool step(); + + virtual bool create(uint32_t, uint32_t, bool); + virtual bool init(); + virtual bool init_input(); + + virtual bool destroy(); + + void render_worker(d3d_display_worker_args); + + static LRESULT CALLBACK wndproc(HWND, UINT, WPARAM, LPARAM); + LRESULT CALLBACK _wndproc(HWND, UINT, WPARAM, LPARAM); + protected: + void _move_camera(ace::vector3); + void _rotate_camera(ace::vector3); + + std::unique_ptr _render_thread; + std::mutex _render_lock; + + bool _fullscreen; + HINSTANCE _hInst = nullptr; + HWND _hWnd = nullptr; + D3D_DRIVER_TYPE _driverType = D3D_DRIVER_TYPE_NULL; + D3D_FEATURE_LEVEL _featureLevel = D3D_FEATURE_LEVEL_11_0; + ID3D11Device* _pd3dDevice = nullptr; + ID3D11DeviceContext* _pImmediateContext = nullptr; + IDXGISwapChain* _pSwapChain = nullptr; + ID3D11RenderTargetView* _pRenderTargetView = nullptr; + ID3D11Texture2D* _pDepthStencil = nullptr; + ID3D11DepthStencilView* _pDepthStencilView = nullptr; + + ID3D11ShaderResourceView* _pTextureRV1 = nullptr; + ID3D11ShaderResourceView* _pTextureRV2 = nullptr; + ID3D11InputLayout* _pBatchInputLayout = nullptr; + + DirectX::XMFLOAT4X4 _World; + DirectX::XMFLOAT4X4 _View; + DirectX::XMFLOAT4X4 _Projection; + + RAWMOUSE _last_mouse_state; + camera_movement _camera; + + }; + struct d3d_display_worker_args { + d3d_display_worker_args(uint32_t w, uint32_t h, bool f) : width(w), height(h), fullscreen(f) {} + uint32_t width; + uint32_t height; + bool fullscreen; + }; + struct d3d_display_worker { + d3d_display_worker(d3d_display * obj, d3d_display_worker_args args) : thread(&ace::debug::d3d_display::render_worker, obj, args) {} + ~d3d_display_worker() { thread.join(); } + std::thread thread; + }; + }; +}; + +#endif \ No newline at end of file diff --git a/extensions/common/dispatch.hpp b/extensions/common/dispatch.hpp new file mode 100644 index 0000000000..0a37824b83 --- /dev/null +++ b/extensions/common/dispatch.hpp @@ -0,0 +1,153 @@ +#pragma once + +#include +#include +#include +#include + +#include "shared.hpp" +#include "arguments.hpp" +#include "singleton.hpp" + +namespace ace { + class dispatcher { + public: + dispatcher() : _ready(true) {} + + virtual bool call(const std::string & name_, const arguments & args_, std::string & result_) { + if (_methods.find(name_) == _methods.end()) { + // @TODO: Exceptions + return false; + } + return _methods[name_](args_, result_); + } + + bool add(const std::string & name_, std::function func_) { + if (_methods.find(name_) != _methods.end()) { + // @TODO: Exceptions + return false; + } + _methods[name_] = func_; + + return true; + } + + bool ready() const { return _ready; } + void ready(bool r) { _ready.exchange(r); } + protected: + std::unordered_map < std::string, std::function > _methods; + std::atomic_bool _ready; + }; + class dispatch : public dispatcher, public singleton { }; + + struct dispatch_message { + dispatch_message(const std::string & command_, const arguments & args_, const uint64_t id_) : command(command_), args(args_), id(id_) {} + std::string command; + arguments args; + uint64_t id; + }; + struct dispatch_result { + dispatch_result() {} + dispatch_result(const std::string &res, const uint64_t id_) : message(res), id(id_) {} + std::string message; + uint64_t id; + }; + + class threaded_dispatcher : public dispatcher { + public: + threaded_dispatcher() : _stop(false), _worker(&ace::threaded_dispatcher::monitor, this) { + + } + ~threaded_dispatcher() {} + + bool call(const std::string & name_, const arguments & args_, std::string & result_, bool threaded) { + if (_methods.find(name_) == _methods.end()) { + // @TODO: Exceptions + return false; + } + if (threaded) { + std::lock_guard lock(_messages_lock); + _messages.push(dispatch_message(name_, args_, _message_id)); + + // @TODO: We should provide an interface for this serialization. + std::stringstream ss; + ss << "[\"result_id\", \"" << _message_id << "\" ]"; + result_ = ss.str(); + + _message_id = _message_id + 1; + } else { +#ifdef _DEBUG + if (name_ != "fetch_result") { + LOG(TRACE) << "dispatch[immediate]:\t[" << name_ << "] { " << args_.get() << " }"; + } +#endif + return dispatcher::call(name_, args_, result_); + } + + return true; + } + bool call(const std::string & name_, const arguments & args_, std::string & result_) override { + return call(name_, args_, result_, false); + } + + void push_result(const dispatch_result & result) { + { + std::lock_guard lock(_results_lock); + _results.push(result); + } + } + void push_result(const std::string & result) { + push_result(dispatch_result(result, -1)); + } + void stop() { + std::lock_guard lock(_messages_lock); + _stop = true; + } + protected: + void monitor() { + _ready = false; + while (!_stop) { + { + std::lock_guard lock(_messages_lock); + while (!_messages.empty()) { + if (_ready) { + dispatch_result result; + dispatch_message _message = std::move(_messages.front()); + _messages.pop(); + + result.id = _message.id; + result.message.resize(4096); +#ifdef _DEBUG + if (_message.command != "fetch_result") { + LOG(TRACE) << "dispatch[threaded]:\t[" << _message.command << "]"; + if (_message.args.size() > 0) { + // LOG(TRACE) << "\t{ " << _messages.front().args.get() << " }"; + } + } +#endif + dispatcher::call(_message.command, _message.args, result.message); + { + std::lock_guard lock(_results_lock); + _results.push(result); + } + + + } + } + } + sleep(5); + } + } + std::atomic_bool _stop; + std::queue _results; + std::mutex _results_lock; + + std::queue _messages; + std::mutex _messages_lock; + + std::thread _worker; + + uint64_t _message_id; + }; + class threaded_dispatch : public threaded_dispatcher, public singleton { }; +}; \ No newline at end of file diff --git a/extensions/common/easyloggingc++.hpp b/extensions/common/easyloggingc++.hpp new file mode 100644 index 0000000000..3a5455c4d0 --- /dev/null +++ b/extensions/common/easyloggingc++.hpp @@ -0,0 +1,6718 @@ +// +// Easylogging++ v9.80 +// Single-header only, cross-platform logging library for C++ applications +// +// Copyright (c) 2015 muflihun.com +// +// This library is released under the MIT Licence. +// http://easylogging.muflihun.com/licence.php +// +// easylogging@muflihun.com +// +// https://github.com/easylogging/easyloggingpp +// http://easylogging.muflihun.com +// http://muflihun.com +// +#ifndef EASYLOGGINGPP_H +#define EASYLOGGINGPP_H +// Compilers and C++0x/C++11 Evaluation +#if defined(__GNUC__) +# define ELPP_COMPILER_GCC 1 +# define ELPP_GCC_VERSION (__GNUC__ * 10000 \ + + __GNUC_MINOR__ * 100 \ + + __GNUC_PATCHLEVEL__) +# if defined(__GXX_EXPERIMENTAL_CXX0X__) +# define ELPP_CXX0X 1 +# elif(ELPP_GCC_VERSION >= 40801) +# define ELPP_CXX11 1 +# endif // defined(__GXX_EXPERIMENTAL_CXX0X__) +#endif // defined(__GNUC__) +// Visual C++ +#if defined(_MSC_VER) +# define ELPP_COMPILER_MSVC 1 +# define ELPP_CRT_DBG_WARNINGS 1 +# if (_MSC_VER == 1600) +# define ELPP_CXX0X 1 +# elif(_MSC_VER >= 1700) +# define ELPP_CXX11 1 +# endif // (_MSC_VER == 1600) +#endif // defined(_MSC_VER) +// Clang++ +#if defined(__clang__) && (__clang__ == 1) +# define ELPP_COMPILER_CLANG 1 +# define ELPP_CLANG_VERSION (__clang_major__ * 10000 \ + + __clang_minor__ * 100 \ + + __clang_patchlevel__) +# if (ELPP_CLANG_VERSION >= 30300) +# define ELPP_CXX11 1 +# endif // (ELPP_CLANG_VERSION >= 30300) +#endif // defined(__clang__) && (__clang__ == 1) +// MinGW +#if defined(__MINGW32__) || defined(__MINGW64__) +# define ELPP_MINGW 1 +#endif // defined(__MINGW32__) || defined(__MINGW64__) +// Cygwin +#if defined(__CYGWIN__) && (__CYGWIN__ == 1) +# define ELPP_CYGWIN 1 +#endif // defined(__CYGWIN__) && (__CYGWIN__ == 1) +// Intel C++ +#if defined(__INTEL_COMPILER) +# define ELPP_COMPILER_INTEL 1 +#endif +// Operating System Evaluation +// Windows +#if defined(_WIN32) || defined(_WIN64) +# define ELPP_OS_WINDOWS 1 +#endif // defined(_WIN32) || defined(_WIN64) +// Linux +#if (defined(__linux) || defined(__linux__)) +# define ELPP_OS_LINUX 1 +#endif // (defined(__linux) || defined(__linux__)) +// Mac +#if defined(__APPLE__) +# define ELPP_OS_MAC 1 +#endif // defined(__APPLE__) +// FreeBSD +#if defined(__FreeBSD__) +# define ELPP_OS_FREEBSD 1 +#endif +// Solaris +#if defined(__sun) +# define ELPP_OS_SOLARIS 1 +#endif +// Unix +#if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_SOLARIS) && (!ELPP_OS_WINDOWS)) +# define ELPP_OS_UNIX 1 +#endif // ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_SOLARIS) && (!ELPP_OS_WINDOWS)) +// Android +#if defined(__ANDROID__) +# define ELPP_OS_ANDROID 1 +#endif // defined(__ANDROID__) +// Evaluating Cygwin as *nix OS +#if !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN +# undef ELPP_OS_UNIX +# undef ELPP_OS_LINUX +# define ELPP_OS_UNIX 1 +# define ELPP_OS_LINUX 1 +#endif // !ELPP_OS_UNIX && !ELPP_OS_WINDOWS && ELPP_CYGWIN +#if !defined(ELPP_INTERNAL_DEBUGGING_OUT_INFO) +# define ELPP_INTERNAL_DEBUGGING_OUT_INFO std::cout +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_OUT_ERROR) +# define ELPP_INTERNAL_DEBUGGING_OUT_ERROR std::cerr +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_ENDL) +# define ELPP_INTERNAL_DEBUGGING_ENDL std::endl +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +#if !defined(ELPP_INTERNAL_DEBUGGING_MSG) +# define ELPP_INTERNAL_DEBUGGING_MSG(msg) msg +#endif // !defined(ELPP_INTERNAL_DEBUGGING_OUT) +// Internal Assertions and errors +#if !defined(ELPP_DISABLE_ASSERT) +# if (defined(ELPP_DEBUG_ASSERT_FAILURE)) +# define ELPP_ASSERT(expr, msg) if (!(expr)) { \ + std::stringstream internalInfoStream; internalInfoStream << msg; \ + ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ + << "EASYLOGGING++ ASSERTION FAILED (LINE: " << __LINE__ << ") [" #expr << "] WITH MESSAGE \"" \ + << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" << ELPP_INTERNAL_DEBUGGING_ENDL; base::utils::abort(1, \ + "ELPP Assertion failure, please define ELPP_DEBUG_ASSERT_FAILURE"); } +# else +# define ELPP_ASSERT(expr, msg) if (!(expr)) { \ + std::stringstream internalInfoStream; internalInfoStream << msg; \ + ELPP_INTERNAL_DEBUGGING_OUT_ERROR\ + << "ASSERTION FAILURE FROM EASYLOGGING++ (LINE: " \ + << __LINE__ << ") [" #expr << "] WITH MESSAGE \"" << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << "\"" \ + << ELPP_INTERNAL_DEBUGGING_ENDL; } +# endif // (defined(ELPP_DEBUG_ASSERT_FAILURE)) +#else +# define ELPP_ASSERT(x, y) +#endif //(!defined(ELPP_DISABLE_ASSERT) +#if ELPP_COMPILER_MSVC +# define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ + { char buff[256]; strerror_s(buff, 256, errno); \ + ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << buff << " [" << errno << "]";} (void)0 +#else +# define ELPP_INTERNAL_DEBUGGING_WRITE_PERROR \ + ELPP_INTERNAL_DEBUGGING_OUT_ERROR << ": " << strerror(errno) << " [" << errno << "]"; (void)0 +#endif // ELPP_COMPILER_MSVC +#if defined(ELPP_DEBUG_ERRORS) +# if !defined(ELPP_INTERNAL_ERROR) +# define ELPP_INTERNAL_ERROR(msg, pe) { \ + std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ + ELPP_INTERNAL_DEBUGGING_OUT_ERROR \ + << "ERROR FROM EASYLOGGING++ (LINE: " << __LINE__ << ") " \ + << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) << ELPP_INTERNAL_DEBUGGING_ENDL; \ + if (pe) { ELPP_INTERNAL_DEBUGGING_OUT_ERROR << " "; ELPP_INTERNAL_DEBUGGING_WRITE_PERROR; }} (void)0 +# endif +#else +# undef ELPP_INTERNAL_INFO +# define ELPP_INTERNAL_ERROR(msg, pe) +#endif // defined(ELPP_DEBUG_ERRORS) +#if (defined(ELPP_DEBUG_INFO)) +# if !(defined(ELPP_INTERNAL_INFO_LEVEL)) +# define ELPP_INTERNAL_INFO_LEVEL 9 +# endif // !(defined(ELPP_INTERNAL_INFO_LEVEL)) +# if !defined(ELPP_INTERNAL_INFO) +# define ELPP_INTERNAL_INFO(lvl, msg) { if (lvl <= ELPP_INTERNAL_INFO_LEVEL) { \ + std::stringstream internalInfoStream; internalInfoStream << " " << msg; \ + ELPP_INTERNAL_DEBUGGING_OUT_INFO << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStream.str()) \ + << ELPP_INTERNAL_DEBUGGING_ENDL; }} +# endif +#else +# undef ELPP_INTERNAL_INFO +# define ELPP_INTERNAL_INFO(lvl, msg) +#endif // (defined(ELPP_DEBUG_INFO)) +#if defined(ELPP_STACKTRACE_ON_CRASH) +# if (ELPP_COMPILER_GCC && !ELPP_MINGW) +# define ELPP_STACKTRACE 1 +# else +# if ELPP_COMPILER_MSVC +# pragma message("Stack trace not available for this compiler") +# else +# warning "Stack trace not available for this compiler"; +# endif // ELPP_COMPILER_MSVC +# endif // ELPP_COMPILER_GCC +#endif // (defined(ELPP_STACKTRACE_ON_CRASH)) +// Miscellaneous macros +#define ELPP_UNUSED(x) (void)x +#if ELPP_OS_UNIX +// Log file permissions for unix-based systems +# define ELPP_LOG_PERMS S_IRUSR | S_IWUSR | S_IXUSR | S_IWGRP | S_IRGRP | S_IXGRP | S_IWOTH | S_IXOTH +#endif // ELPP_OS_UNIX +#if defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC +# if defined(ELPP_EXPORT_SYMBOLS) +# define ELPP_EXPORT __declspec(dllexport) +# else +# define ELPP_EXPORT __declspec(dllimport) +# endif // defined(ELPP_EXPORT_SYMBOLS) +#else +# define ELPP_EXPORT +#endif // defined(ELPP_AS_DLL) && ELPP_COMPILER_MSVC +// Some special functions that are VC++ specific +#undef STRTOK +#undef STRERROR +#undef STRCAT +#undef STRCPY +#if ELPP_CRT_DBG_WARNINGS +# define STRTOK(a, b, c) strtok_s(a, b, c) +# define STRERROR(a, b, c) strerror_s(a, b, c) +# define STRCAT(a, b, len) strcat_s(a, len, b) +# define STRCPY(a, b, len) strcpy_s(a, len, b) +#else +# define STRTOK(a, b, c) strtok(a, b) +# define STRERROR(a, b, c) strerror(c) +# define STRCAT(a, b, len) strcat(a, b) +# define STRCPY(a, b, len) strcpy(a, b) +#endif +// Compiler specific support evaluations +#if (!ELPP_MINGW && !ELPP_COMPILER_CLANG) || defined(ELPP_FORCE_USE_STD_THREAD) +# define ELPP_USE_STD_THREADING 1 +#endif // (!ELPP_MINGW && !ELPP_COMPILER_CLANG) || defined(ELPP_FORCE_USE_STD_THREAD) +#undef ELPP_FINAL +#if ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) +# define ELPP_FINAL +#else +# define ELPP_FINAL final +#endif // ELPP_COMPILER_INTEL || (ELPP_GCC_VERSION < 40702) +#if defined(ELPP_EXPERIMENTAL_ASYNC) +# define ELPP_ASYNC_LOGGING 1 +#else +# define ELPP_ASYNC_LOGGING 0 +#endif // defined(ELPP_EXPERIMENTAL_ASYNC) +#if defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING +# define ELPP_THREADING_ENABLED 1 +#endif // defined(ELPP_THREAD_SAFE) || ELPP_ASYNC_LOGGING +// Function macro ELPP_FUNC +#undef ELPP_FUNC +#if ELPP_COMPILER_MSVC // Visual C++ +# define ELPP_FUNC __FUNCSIG__ +#elif ELPP_COMPILER_GCC // GCC +# define ELPP_FUNC __PRETTY_FUNCTION__ +#elif ELPP_COMPILER_INTEL // Intel C++ +# define ELPP_FUNC __PRETTY_FUNCTION__ +#elif ELPP_COMPILER_CLANG // Clang++ +# define ELPP_FUNC __PRETTY_FUNCTION__ +#else +# if defined(__func__) +# define ELPP_FUNC __func__ +# else +# define ELPP_FUNC "" +# endif // defined(__func__) +#endif // defined(_MSC_VER) +#undef ELPP_VARIADIC_TEMPLATES_SUPPORTED +// Keep following line commented until features are fixed +#if ELPP_COMPILER_GCC || ELPP_COMPILER_CLANG || ELPP_COMPILER_INTEL || (ELPP_COMPILER_MSVC && _MSC_VER >= 1800) +# define ELPP_VARIADIC_TEMPLATES_SUPPORTED 1 +#endif // ELPP_COMPILER_GCC || ELPP_COMPILER_CLANG || ELPP_COMPILER_INTEL || (ELPP_COMPILER_MSVC && _MSC_VER >= 1800) +// Logging Enable/Disable macros +#if (!defined(ELPP_DISABLE_LOGS)) +# define ELPP_LOGGING_ENABLED 1 +#endif // (!defined(ELPP_DISABLE_LOGS)) +#if (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED) && ((defined(_DEBUG)) || (!defined(NDEBUG)))) +# define ELPP_DEBUG_LOG 1 +#else +# define ELPP_DEBUG_LOG 0 +#endif // (!defined(ELPP_DISABLE_DEBUG_LOGS) && (ELPP_LOGGING_ENABLED) && ((defined(_DEBUG)) || (!defined(NDEBUG)))) +#if (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_INFO_LOG 1 +#else +# define ELPP_INFO_LOG 0 +#endif // (!defined(ELPP_DISABLE_INFO_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_WARNING_LOG 1 +#else +# define ELPP_WARNING_LOG 0 +#endif // (!defined(ELPP_DISABLE_WARNING_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_ERROR_LOG 1 +#else +# define ELPP_ERROR_LOG 0 +#endif // (!defined(ELPP_DISABLE_ERROR_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_FATAL_LOG 1 +#else +# define ELPP_FATAL_LOG 0 +#endif // (!defined(ELPP_DISABLE_FATAL_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_TRACE_LOG 1 +#else +# define ELPP_TRACE_LOG 0 +#endif // (!defined(ELPP_DISABLE_TRACE_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) +# define ELPP_VERBOSE_LOG 1 +#else +# define ELPP_VERBOSE_LOG 0 +#endif // (!defined(ELPP_DISABLE_VERBOSE_LOGS) && (ELPP_LOGGING_ENABLED)) +#if (!(ELPP_CXX0X || ELPP_CXX11)) +# error "Easylogging++ 9.0+ is only compatible with C++0x (or higher) compliant compiler" +#endif // (!(ELPP_CXX0X || ELPP_CXX11)) +// Headers +#if defined(ELPP_SYSLOG) +# include +#endif // defined(ELPP_SYSLOG) +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(ELPP_UNICODE) +# include +# if ELPP_OS_WINDOWS +# include +# endif // ELPP_OS_WINDOWS +#endif // defined(ELPP_UNICODE) +#if ELPP_STACKTRACE +# include +# include +#endif // ELPP_STACKTRACE +#if ELPP_OS_ANDROID +# include +#endif // ELPP_OS_ANDROID +#if ELPP_OS_UNIX +# include +# include +#elif ELPP_OS_WINDOWS +# include +# include +# if defined(WIN32_LEAN_AND_MEAN) +# if defined(ELPP_WINSOCK2) +# include +# else +# include +# endif // defined(ELPP_WINSOCK2) +# endif // defined(WIN32_LEAN_AND_MEAN) +#endif // ELPP_OS_UNIX +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if ELPP_THREADING_ENABLED +# if ELPP_USE_STD_THREADING +# include +# include +# else +# if ELPP_OS_UNIX +# include +# endif // ELPP_OS_UNIX +# endif // ELPP_USE_STD_THREADING +#endif // ELPP_THREADING_ENABLED +#if ELPP_ASYNC_LOGGING +# include +# include +# include +#endif // ELPP_ASYNC_LOGGING +#if defined(ELPP_STL_LOGGING) +// For logging STL based templates +# include +# include +# include +# include +# include +# include +# if defined(ELPP_LOG_STD_ARRAY) +# include +# endif // defined(ELPP_LOG_STD_ARRAY) +# if defined(ELPP_LOG_UNORDERED_MAP) +# include +# endif // defined(ELPP_LOG_UNORDERED_MAP) +# if defined(ELPP_LOG_UNORDERED_SET) +# include +# endif // defined(ELPP_UNORDERED_SET) +#endif // defined(ELPP_STL_LOGGING) +#if defined(ELPP_QT_LOGGING) +// For logging Qt based classes & templates +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +#endif // defined(ELPP_QT_LOGGING) +#if defined(ELPP_BOOST_LOGGING) +// For logging boost based classes & templates +# include +# include +# include +# include +# include +# include +# include +# include +#endif // defined(ELPP_BOOST_LOGGING) +#if defined(ELPP_WXWIDGETS_LOGGING) +// For logging wxWidgets based classes & templates +# include +#endif // defined(ELPP_WXWIDGETS_LOGGING) +// Forward declarations +namespace el { + class Logger; + class LogMessage; + class PerformanceTrackingData; + class Loggers; + class Helpers; + template class Callback; + class LogDispatchCallback; + class PerformanceTrackingCallback; + class LogDispatchData; + namespace base { + class Storage; + class RegisteredLoggers; + class PerformanceTracker; + class MessageBuilder; + class Writer; + class PErrorWriter; + class LogDispatcher; + class DefaultLogBuilder; + class DefaultLogDispatchCallback; +#if ELPP_ASYNC_LOGGING + class AsyncLogDispatchCallback; + class AsyncDispatchWorker; +#endif // ELPP_ASYNC_LOGGING + class DefaultPerformanceTrackingCallback; + } // namespace base +} // namespace el + /// @brief Easylogging++ entry namespace +namespace el { + /// @brief Namespace containing base/internal functionality used by Easylogging++ + namespace base { + /// @brief Data types used by Easylogging++ + namespace type { +#undef ELPP_LITERAL +#undef ELPP_STRLEN +#undef ELPP_COUT +#if defined(ELPP_UNICODE) +# define ELPP_LITERAL(txt) L##txt +# define ELPP_STRLEN wcslen +# if defined ELPP_CUSTOM_COUT +# define ELPP_COUT ELPP_CUSTOM_COUT +# else +# define ELPP_COUT std::wcout +# endif // defined ELPP_CUSTOM_COUT + typedef wchar_t char_t; + typedef std::wstring string_t; + typedef std::wstringstream stringstream_t; + typedef std::wfstream fstream_t; + typedef std::wostream ostream_t; +#else +# define ELPP_LITERAL(txt) txt +# define ELPP_STRLEN strlen +# if defined ELPP_CUSTOM_COUT +# define ELPP_COUT ELPP_CUSTOM_COUT +# else +# define ELPP_COUT std::cout +# endif // defined ELPP_CUSTOM_COUT + typedef char char_t; + typedef std::string string_t; + typedef std::stringstream stringstream_t; + typedef std::fstream fstream_t; + typedef std::ostream ostream_t; +#endif // defined(ELPP_UNICODE) +#if defined(ELPP_CUSTOM_COUT_LINE) +# define ELPP_COUT_LINE(logLine) ELPP_CUSTOM_COUT_LINE(logLine) +#else +# define ELPP_COUT_LINE(logLine) logLine << std::flush +#endif // defined(ELPP_CUSTOM_COUT_LINE) + typedef unsigned short EnumType; + typedef std::shared_ptr StoragePointer; + typedef int VerboseLevel; + typedef std::shared_ptr LogDispatchCallbackPtr; + typedef std::shared_ptr PerformanceTrackingCallbackPtr; + } // namespace type + /// @brief Internal helper class that prevent copy constructor for class + /// + /// @detail When using this class simply inherit it privately + class NoCopy { + protected: + NoCopy(void) {} + private: + NoCopy(const NoCopy&); + NoCopy& operator=(const NoCopy&); + }; + /// @brief Internal helper class that makes all default constructors private. + /// + /// @detail This prevents initializing class making it static unless an explicit constructor is declared. + /// When using this class simply inherit it privately + class StaticClass { + private: + StaticClass(void); + StaticClass(const StaticClass&); + StaticClass& operator=(const StaticClass&); + }; + } // namespace base + /// @brief Represents enumeration for severity level used to determine level of logging + /// + /// @detail With Easylogging++, developers may disable or enable any level regardless of + /// what the severity is. Or they can choose to log using hierarchical logging flag + enum class Level : base::type::EnumType { + /// @brief Generic level that represents all the levels. Useful when setting global configuration for all levels + Global = 1, + /// @brief Information that can be useful to back-trace certain events - mostly useful than debug logs. + Trace = 2, + /// @brief Informational events most useful for developers to debug application + Debug = 4, + /// @brief Severe error information that will presumably abort application + Fatal = 8, + /// @brief Information representing errors in application but application will keep running + Error = 16, + /// @brief Useful when application has potentially harmful situtaions + Warning = 32, + /// @brief Information that can be highly useful and vary with verbose logging level. + Verbose = 64, + /// @brief Mainly useful to represent current progress of application + Info = 128, + /// @brief Represents unknown level + Unknown = 1010 + }; + /// @brief Static class that contains helper functions for el::Level + class LevelHelper : base::StaticClass { + public: + /// @brief Represents minimum valid level. Useful when iterating through enum. + static const base::type::EnumType kMinValid = static_cast(Level::Trace); + /// @brief Represents maximum valid level. This is used internally and you should not need it. + static const base::type::EnumType kMaxValid = static_cast(Level::Info); + /// @brief Casts level to int, useful for iterating through enum. + static base::type::EnumType castToInt(Level level) { + return static_cast(level); + } + /// @brief Casts int(ushort) to level, useful for iterating through enum. + static Level castFromInt(base::type::EnumType l) { + return static_cast(l); + } + /// @brief Converts level to associated const char* + /// @return Upper case string based level. + static const char* convertToString(Level level) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (level == Level::Global) return "GLOBAL"; + if (level == Level::Debug) return "DEBUG"; + if (level == Level::Info) return "INFO"; + if (level == Level::Warning) return "WARNING"; + if (level == Level::Error) return "ERROR"; + if (level == Level::Fatal) return "FATAL"; + if (level == Level::Verbose) return "VERBOSE"; + if (level == Level::Trace) return "TRACE"; + return "UNKNOWN"; + } + /// @brief Converts from levelStr to Level + /// @param levelStr Upper case string based level. + /// Lower case is also valid but providing upper case is recommended. + static Level convertFromString(const char* levelStr) { + if ((strcmp(levelStr, "GLOBAL") == 0) || (strcmp(levelStr, "global") == 0)) + return Level::Global; + if ((strcmp(levelStr, "DEBUG") == 0) || (strcmp(levelStr, "debug") == 0)) + return Level::Debug; + if ((strcmp(levelStr, "INFO") == 0) || (strcmp(levelStr, "info") == 0)) + return Level::Info; + if ((strcmp(levelStr, "WARNING") == 0) || (strcmp(levelStr, "warning") == 0)) + return Level::Warning; + if ((strcmp(levelStr, "ERROR") == 0) || (strcmp(levelStr, "error") == 0)) + return Level::Error; + if ((strcmp(levelStr, "FATAL") == 0) || (strcmp(levelStr, "fatal") == 0)) + return Level::Fatal; + if ((strcmp(levelStr, "VERBOSE") == 0) || (strcmp(levelStr, "verbose") == 0)) + return Level::Verbose; + if ((strcmp(levelStr, "TRACE") == 0) || (strcmp(levelStr, "trace") == 0)) + return Level::Trace; + return Level::Unknown; + } + /// @brief Applies specified function to each level starting from startIndex + /// @param startIndex initial value to start the iteration from. This is passed as pointer and + /// is left-shifted so this can be used inside function (fn) to represent current level. + /// @param fn function to apply with each level. This bool represent whether or not to stop iterating through levels. + static inline void forEachLevel(base::type::EnumType* startIndex, const std::function& fn) { + base::type::EnumType lIndexMax = LevelHelper::kMaxValid; + do { + if (fn()) { + break; + } + *startIndex = static_cast(*startIndex << 1); + } while (*startIndex <= lIndexMax); + } + }; + /// @brief Represents enumeration of ConfigurationType used to configure or access certain aspect + /// of logging + enum class ConfigurationType : base::type::EnumType { + /// @brief Determines whether or not corresponding level and logger of logging is enabled + /// You may disable all logs by using el::Level::Global + Enabled = 1, + /// @brief Whether or not to write corresponding log to log file + ToFile = 2, + /// @brief Whether or not to write corresponding level and logger log to standard output. + /// By standard output meaning termnal, command prompt etc + ToStandardOutput = 4, + /// @brief Determines format of logging corresponding level and logger. + Format = 8, + /// @brief Determines log file (full path) to write logs to for correponding level and logger + Filename = 16, + /// @brief Specifies milliseconds width. Width can be within range (1-6) + MillisecondsWidth = 32, + /// @brief Determines whether or not performance tracking is enabled. + /// + /// @detail This does not depend on logger or level. Performance tracking always uses 'performance' logger + PerformanceTracking = 64, + /// @brief Specifies log file max size. + /// + /// @detail If file size of corresponding log file (for corresponding level) is >= specified size, log file will + /// be truncated and re-initiated. + MaxLogFileSize = 128, + /// @brief Specifies number of log entries to hold until we flush pending log data + LogFlushThreshold = 256, + /// @brief Represents unknown configuration + Unknown = 1010 + }; + /// @brief Static class that contains helper functions for el::ConfigurationType + class ConfigurationTypeHelper : base::StaticClass { + public: + /// @brief Represents minimum valid configuration type. Useful when iterating through enum. + static const base::type::EnumType kMinValid = static_cast(ConfigurationType::Enabled); + /// @brief Represents maximum valid configuration type. This is used internally and you should not need it. + static const base::type::EnumType kMaxValid = static_cast(ConfigurationType::MaxLogFileSize); + /// @brief Casts configuration type to int, useful for iterating through enum. + static base::type::EnumType castToInt(ConfigurationType configurationType) { + return static_cast(configurationType); + } + /// @brief Casts int(ushort) to configurationt type, useful for iterating through enum. + static ConfigurationType castFromInt(base::type::EnumType c) { + return static_cast(c); + } + /// @brief Converts configuration type to associated const char* + /// @returns Upper case string based configuration type. + static const char* convertToString(ConfigurationType configurationType) { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (configurationType == ConfigurationType::Enabled) return "ENABLED"; + if (configurationType == ConfigurationType::Filename) return "FILENAME"; + if (configurationType == ConfigurationType::Format) return "FORMAT"; + if (configurationType == ConfigurationType::ToFile) return "TO_FILE"; + if (configurationType == ConfigurationType::ToStandardOutput) return "TO_STANDARD_OUTPUT"; + if (configurationType == ConfigurationType::MillisecondsWidth) return "MILLISECONDS_WIDTH"; + if (configurationType == ConfigurationType::PerformanceTracking) return "PERFORMANCE_TRACKING"; + if (configurationType == ConfigurationType::MaxLogFileSize) return "MAX_LOG_FILE_SIZE"; + if (configurationType == ConfigurationType::LogFlushThreshold) return "LOG_FLUSH_THRESHOLD"; + return "UNKNOWN"; + } + /// @brief Converts from configStr to ConfigurationType + /// @param configStr Upper case string based configuration type. + /// Lower case is also valid but providing upper case is recommended. + static ConfigurationType convertFromString(const char* configStr) { + if ((strcmp(configStr, "ENABLED") == 0) || (strcmp(configStr, "enabled") == 0)) + return ConfigurationType::Enabled; + if ((strcmp(configStr, "TO_FILE") == 0) || (strcmp(configStr, "to_file") == 0)) + return ConfigurationType::ToFile; + if ((strcmp(configStr, "TO_STANDARD_OUTPUT") == 0) || (strcmp(configStr, "to_standard_output") == 0)) + return ConfigurationType::ToStandardOutput; + if ((strcmp(configStr, "FORMAT") == 0) || (strcmp(configStr, "format") == 0)) + return ConfigurationType::Format; + if ((strcmp(configStr, "FILENAME") == 0) || (strcmp(configStr, "filename") == 0)) + return ConfigurationType::Filename; + if ((strcmp(configStr, "MILLISECONDS_WIDTH") == 0) || (strcmp(configStr, "milliseconds_width") == 0)) + return ConfigurationType::MillisecondsWidth; + if ((strcmp(configStr, "PERFORMANCE_TRACKING") == 0) || (strcmp(configStr, "performance_tracking") == 0)) + return ConfigurationType::PerformanceTracking; + if ((strcmp(configStr, "MAX_LOG_FILE_SIZE") == 0) || (strcmp(configStr, "max_log_file_size") == 0)) + return ConfigurationType::MaxLogFileSize; + if ((strcmp(configStr, "LOG_FLUSH_THRESHOLD") == 0) || (strcmp(configStr, "log_flush_threshold") == 0)) + return ConfigurationType::LogFlushThreshold; + return ConfigurationType::Unknown; + } + /// @brief Applies specified function to each configuration type starting from startIndex + /// @param startIndex initial value to start the iteration from. This is passed by pointer and is left-shifted + /// so this can be used inside function (fn) to represent current configuration type. + /// @param fn function to apply with each configuration type. + /// This bool represent whether or not to stop iterating through configurations. + static inline void forEachConfigType(base::type::EnumType* startIndex, const std::function& fn) { + base::type::EnumType cIndexMax = ConfigurationTypeHelper::kMaxValid; + do { + if (fn()) { + break; + } + *startIndex = static_cast(*startIndex << 1); + } while (*startIndex <= cIndexMax); + } + }; + /// @brief Flags used while writing logs. This flags are set by user + enum class LoggingFlag : base::type::EnumType { + /// @brief Makes sure we have new line for each container log entry + NewLineForContainer = 1, + /// @brief Makes sure if -vmodule is used and does not specifies a module, then verbose + /// logging is allowed via that module. + AllowVerboseIfModuleNotSpecified = 2, + /// @brief When handling crashes by default, detailed crash reason will be logged as well + LogDetailedCrashReason = 4, + /// @brief Allows to disable application abortion when logged using FATAL level + DisableApplicationAbortOnFatalLog = 8, + /// @brief Flushes log with every log-entry (performance sensative) - Disabled by default + ImmediateFlush = 16, + /// @brief Enables strict file rolling + StrictLogFileSizeCheck = 32, + /// @brief Make terminal output colorful for supported terminals + ColoredTerminalOutput = 64, + /// @brief Supports use of multiple logging in same macro, e.g, CLOG(INFO, "default", "network") + MultiLoggerSupport = 128, + /// @brief Disables comparing performance tracker's checkpoints + DisablePerformanceTrackingCheckpointComparison = 256, + /// @brief Disable VModules + DisableVModules = 512, + /// @brief Disable VModules extensions + DisableVModulesExtensions = 1024, + /// @brief Enables hierarchical logging + HierarchicalLogging = 2048, + /// @brief Creates logger automatically when not available + CreateLoggerAutomatically = 4096, + /// @brief Adds spaces b/w logs that separated by left-shift operator + AutoSpacing = 8192, + /// @brief Preserves time format and does not convert it to sec, hour etc (performance tracking only) + FixedTimeFormat = 16384 + }; + namespace base { + /// @brief Namespace containing constants used internally. + namespace consts { + // Level log values - These are values that are replaced in place of %level format specifier + static const base::type::char_t* kInfoLevelLogValue = ELPP_LITERAL("INFO "); + static const base::type::char_t* kDebugLevelLogValue = ELPP_LITERAL("DEBUG"); + static const base::type::char_t* kWarningLevelLogValue = ELPP_LITERAL("WARN "); + static const base::type::char_t* kErrorLevelLogValue = ELPP_LITERAL("ERROR"); + static const base::type::char_t* kFatalLevelLogValue = ELPP_LITERAL("FATAL"); + static const base::type::char_t* kVerboseLevelLogValue = ELPP_LITERAL("VER"); + static const base::type::char_t* kTraceLevelLogValue = ELPP_LITERAL("TRACE"); + static const base::type::char_t* kInfoLevelShortLogValue = ELPP_LITERAL("I"); + static const base::type::char_t* kDebugLevelShortLogValue = ELPP_LITERAL("D"); + static const base::type::char_t* kWarningLevelShortLogValue = ELPP_LITERAL("W"); + static const base::type::char_t* kErrorLevelShortLogValue = ELPP_LITERAL("E"); + static const base::type::char_t* kFatalLevelShortLogValue = ELPP_LITERAL("F"); + static const base::type::char_t* kVerboseLevelShortLogValue = ELPP_LITERAL("V"); + static const base::type::char_t* kTraceLevelShortLogValue = ELPP_LITERAL("T"); + // Format specifiers - These are used to define log format + static const base::type::char_t* kAppNameFormatSpecifier = ELPP_LITERAL("%app"); + static const base::type::char_t* kLoggerIdFormatSpecifier = ELPP_LITERAL("%logger"); + static const base::type::char_t* kThreadIdFormatSpecifier = ELPP_LITERAL("%thread"); + static const base::type::char_t* kSeverityLevelFormatSpecifier = ELPP_LITERAL("%level"); + static const base::type::char_t* kSeverityLevelShortFormatSpecifier = ELPP_LITERAL("%levshort"); + static const base::type::char_t* kDateTimeFormatSpecifier = ELPP_LITERAL("%datetime"); + static const base::type::char_t* kLogFileFormatSpecifier = ELPP_LITERAL("%file"); + static const base::type::char_t* kLogFileBaseFormatSpecifier = ELPP_LITERAL("%fbase"); + static const base::type::char_t* kLogLineFormatSpecifier = ELPP_LITERAL("%line"); + static const base::type::char_t* kLogLocationFormatSpecifier = ELPP_LITERAL("%loc"); + static const base::type::char_t* kLogFunctionFormatSpecifier = ELPP_LITERAL("%func"); + static const base::type::char_t* kCurrentUserFormatSpecifier = ELPP_LITERAL("%user"); + static const base::type::char_t* kCurrentHostFormatSpecifier = ELPP_LITERAL("%host"); + static const base::type::char_t* kMessageFormatSpecifier = ELPP_LITERAL("%msg"); + static const base::type::char_t* kVerboseLevelFormatSpecifier = ELPP_LITERAL("%vlevel"); + static const char* kDateTimeFormatSpecifierForFilename = "%datetime"; + // Date/time + static const char* kDays[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; + static const char* kDaysAbbrev[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; + static const char* kMonths[12] = { "January", "February", "March", "Apri", "May", "June", "July", "August", + "September", "October", "November", "December" }; + static const char* kMonthsAbbrev[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + static const char* kDefaultDateTimeFormat = "%Y-%M-%d %H:%m:%s,%g"; + static const char* kDefaultDateTimeFormatInFilename = "%Y-%M-%d_%H-%m"; + static const int kYearBase = 1900; + static const char* kAm = "AM"; + static const char* kPm = "PM"; + // Miscellaneous constants + static const char* kDefaultLoggerId = "default"; + static const char* kPerformanceLoggerId = "performance"; + static const char* kSysLogLoggerId = "syslog"; + static const char* kNullPointer = "nullptr"; + static const char kFormatSpecifierChar = '%'; +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED + static const char kFormatSpecifierCharValue = 'v'; +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED + static const unsigned int kMaxLogPerContainer = 100; + static const unsigned int kMaxLogPerCounter = 100000; + static const unsigned int kDefaultMillisecondsWidth = 3; + static const base::type::VerboseLevel kMaxVerboseLevel = 9; + static const char* kUnknownUser = "user"; + static const char* kUnknownHost = "unknown-host"; +#if defined(ELPP_DEFAULT_LOG_FILE) + static const char* kDefaultLogFile = ELPP_DEFAULT_LOG_FILE; +#else +# if ELPP_OS_UNIX +# if ELPP_OS_ANDROID + static const char* kDefaultLogFile = "logs/ace.log"; +# else + static const char* kDefaultLogFile = "logs/ace.log"; +# endif // ELPP_OS_ANDROID +# elif ELPP_OS_WINDOWS + static const char* kDefaultLogFile = "logs\\ace.log"; +# endif // ELPP_OS_UNIX +#endif // defined(ELPP_DEFAULT_LOG_FILE) +#if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) + static const char* kDefaultLogFileParam = "--default-log-file"; +#endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +#if defined(ELPP_LOGGING_FLAGS_FROM_ARG) + static const char* kLoggingFlagsParam = "--logging-flags"; +#endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) +#if ELPP_OS_WINDOWS + static const char* kFilePathSeperator = "\\"; +#else + static const char* kFilePathSeperator = "/"; +#endif // ELPP_OS_WINDOWS + static const char* kValidLoggerIdSymbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._"; + static const char* kConfigurationComment = "##"; + static const char* kConfigurationLevel = "*"; + static const char* kConfigurationLoggerId = "--"; + static const std::size_t kSourceFilenameMaxLength = 100; + static const std::size_t kSourceLineMaxLength = 10; + static const Level kPerformanceTrackerDefaultLevel = Level::Info; + const struct { + double value; + const base::type::char_t* unit; + } kTimeFormats[] = { + { 1000.0f, ELPP_LITERAL("mis") }, + { 1000.0f, ELPP_LITERAL("ms") }, + { 60.0f, ELPP_LITERAL("seconds") }, + { 60.0f, ELPP_LITERAL("minutes") }, + { 24.0f, ELPP_LITERAL("hours") }, + { 7.0f, ELPP_LITERAL("days") } + }; + static const int kTimeFormatsCount = sizeof(kTimeFormats) / sizeof(kTimeFormats[0]); + const struct { + int numb; + const char* name; + const char* brief; + const char* detail; + } kCrashSignals[] = { + // NOTE: Do not re-order, if you do please check CrashHandler(bool) constructor and CrashHandler::setHandler(..) + { SIGABRT, "SIGABRT", "Abnormal termination", + "Program was abnormally terminated." }, + { SIGFPE, "SIGFPE", "Erroneous arithmetic operation", + "Arithemetic operation issue such as division by zero or operation resulting in overflow." }, + { SIGILL, "SIGILL", "Illegal instruction", + "Generally due to a corruption in the code or to an attempt to execute data." }, + { SIGSEGV, "SIGSEGV", "Invalid access to memory", + "Program is trying to read an invalid (unallocated, deleted or corrupted) or inaccessible memory." }, + { SIGINT, "SIGINT", "Interactive attention signal", + "Interruption generated (generally) by user or operating system." }, + }; + static const int kCrashSignalsCount = sizeof(kCrashSignals) / sizeof(kCrashSignals[0]); + } // namespace consts + } // namespace base + typedef std::function PreRollOutCallback; + namespace base { + static inline void defaultPreRollOutCallback(const char*, std::size_t) {} + /// @brief Enum to represent timestamp unit + enum class TimestampUnit : base::type::EnumType { + Microsecond = 0, Millisecond = 1, Second = 2, Minute = 3, Hour = 4, Day = 5 + }; + /// @brief Format flags used to determine specifiers that are active for performance improvements. + enum class FormatFlags : base::type::EnumType { + DateTime = 1 << 1, LoggerId = 1 << 2, File = 1 << 3, Line = 1 << 4, Location = 1 << 5, Function = 1 << 6, + User = 1 << 7, Host = 1 << 8, LogMessage = 1 << 9, VerboseLevel = 1 << 10, AppName = 1 << 11, ThreadId = 1 << 12, + Level = 1 << 13, FileBase = 1 << 14, LevelShort = 1 << 15 + }; + /// @brief A milliseconds width class containing actual width and offset for date/time + class MillisecondsWidth { + public: + MillisecondsWidth(void) { init(base::consts::kDefaultMillisecondsWidth); } + explicit MillisecondsWidth(int width) { init(width); } + bool operator==(const MillisecondsWidth& msWidth) { return m_width == msWidth.m_width && m_offset == msWidth.m_offset; } + int m_width; unsigned int m_offset; + private: + void init(int width) { + if (width < 1 || width > 6) { + width = base::consts::kDefaultMillisecondsWidth; + } + m_width = width; + switch (m_width) { + case 3: m_offset = 1000; break; + case 4: m_offset = 100; break; + case 5: m_offset = 10; break; + case 6: m_offset = 1; break; + default: m_offset = 1000; break; + } + } + }; + /// @brief Namespace containing utility functions/static classes used internally + namespace utils { + /// @brief Deletes memory safely and points to null + template + static inline + typename std::enable_if::value, void>::type + safeDelete(T*& pointer) { + if (pointer == nullptr) + return; + delete pointer; + pointer = nullptr; + } + /// @brief Gets value of const char* but if it is nullptr, a string nullptr is returned + static inline const char* charPtrVal(const char* pointer) { + return pointer == nullptr ? base::consts::kNullPointer : pointer; + } + /// @brief Aborts application due with user-defined status + static inline void abort(int status, const std::string& reason = std::string()) { + // Both status and reason params are there for debugging with tools like gdb etc + ELPP_UNUSED(status); + ELPP_UNUSED(reason); +#if defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) + // Ignore msvc critical error dialog - break instead (on debug mode) + _asm int 3 +#else + ::abort(); +#endif // defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) + } + /// @brief Bitwise operations for C++11 strong enum class. This casts e into Flag_T and returns value after bitwise operation + /// Use these function as
flag = bitwise::Or(MyEnum::val1, flag);
+ namespace bitwise { + template + static inline base::type::EnumType And(Enum e, base::type::EnumType flag) { + return static_cast(flag) & static_cast(e); + } + template + static inline base::type::EnumType Not(Enum e, base::type::EnumType flag) { + return static_cast(flag) & ~(static_cast(e)); + } + template + static inline base::type::EnumType Or(Enum e, base::type::EnumType flag) { + return static_cast(flag) | static_cast(e); + } + } // namespace bitwise + template + static inline void addFlag(Enum e, base::type::EnumType* flag) { + *flag = base::utils::bitwise::Or(e, *flag); + } + template + static inline void removeFlag(Enum e, base::type::EnumType* flag) { + *flag = base::utils::bitwise::Not(e, *flag); + } + template + static inline bool hasFlag(Enum e, base::type::EnumType flag) { + return base::utils::bitwise::And(e, flag) > 0x0; + } + } // namespace utils + namespace threading { +#if ELPP_THREADING_ENABLED +# if !ELPP_USE_STD_THREADING + namespace internal { + /// @brief A mutex wrapper for compiler that dont yet support std::mutex + class Mutex : base::NoCopy { + public: + Mutex(void) { +# if ELPP_OS_UNIX + pthread_mutex_init(&m_underlyingMutex, nullptr); +# elif ELPP_OS_WINDOWS + InitializeCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + virtual ~Mutex(void) { +# if ELPP_OS_UNIX + pthread_mutex_destroy(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + DeleteCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline void lock(void) { +# if ELPP_OS_UNIX + pthread_mutex_lock(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + EnterCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline bool try_lock(void) { +# if ELPP_OS_UNIX + return (pthread_mutex_trylock(&m_underlyingMutex) == 0); +# elif ELPP_OS_WINDOWS + return TryEnterCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + inline void unlock(void) { +# if ELPP_OS_UNIX + pthread_mutex_unlock(&m_underlyingMutex); +# elif ELPP_OS_WINDOWS + LeaveCriticalSection(&m_underlyingMutex); +# endif // ELPP_OS_UNIX + } + + private: +# if ELPP_OS_UNIX + pthread_mutex_t m_underlyingMutex; +# elif ELPP_OS_WINDOWS + CRITICAL_SECTION m_underlyingMutex; +# endif // ELPP_OS_UNIX + }; + /// @brief Scoped lock for compiler that dont yet support std::lock_guard + template + class ScopedLock : base::NoCopy { + public: + explicit ScopedLock(M& mutex) { + m_mutex = &mutex; + m_mutex->lock(); + } + + virtual ~ScopedLock(void) { + m_mutex->unlock(); + } + private: + M* m_mutex; + ScopedLock(void); + }; + } // namespace internal + /// @brief Gets ID of currently running threading in windows systems. On unix, nothing is returned. + static inline std::string getCurrentThreadId(void) { + std::stringstream ss; +# if (ELPP_OS_WINDOWS) + ss << GetCurrentThreadId(); +# endif // (ELPP_OS_WINDOWS) + return ss.str(); + } + static inline void msleep(int) { + // No implementation for non std::thread version + } + typedef base::threading::internal::Mutex Mutex; + typedef base::threading::internal::ScopedLock ScopedLock; +# else + /// @brief Gets ID of currently running threading using std::this_thread::get_id() + static inline std::string getCurrentThreadId(void) { + std::stringstream ss; + ss << std::this_thread::get_id(); + return ss.str(); + } + static inline void msleep(int ms) { + // Only when async logging enabled - this is because async is strict on compiler +#if ELPP_ASYNC_LOGGING + std::this_thread::sleep_for(std::chrono::milliseconds(ms)); +#endif // ELPP_ASYNC_LOGGING + } + typedef std::mutex Mutex; + typedef std::lock_guard ScopedLock; +# endif // !ELPP_USE_STD_THREADING +#else + namespace internal { + /// @brief Mutex wrapper used when multi-threading is disabled. + class NoMutex : base::NoCopy { + public: + NoMutex(void) {} + inline void lock(void) {} + inline bool try_lock(void) { return true; } + inline void unlock(void) {} + }; + /// @brief Lock guard wrapper used when multi-threading is disabled. + template + class NoScopedLock : base::NoCopy { + public: + explicit NoScopedLock(Mutex&) { + } + virtual ~NoScopedLock(void) { + } + private: + NoScopedLock(void); + }; + } // namespace internal + static inline std::string getCurrentThreadId(void) { + return std::string(); + } + static inline void msleep(int) { + // No custom implementation + } + typedef base::threading::internal::NoMutex Mutex; + typedef base::threading::internal::NoScopedLock ScopedLock; +#endif // ELPP_THREADING_ENABLED + /// @brief Base of thread safe class, this class is inheritable-only + class ThreadSafe { + public: + virtual inline void acquireLock(void) ELPP_FINAL { m_mutex.lock(); } + virtual inline void releaseLock(void) ELPP_FINAL { m_mutex.unlock(); } + virtual inline base::threading::Mutex& lock(void) ELPP_FINAL { return m_mutex; } + protected: + ThreadSafe(void) {} + virtual ~ThreadSafe(void) {} + private: + base::threading::Mutex m_mutex; + }; + } // namespace threading + namespace utils { + class File : base::StaticClass { + public: + /// @brief Creates new out file stream for specified filename. + /// @return Pointer to newly created fstream or nullptr + static base::type::fstream_t* newFileStream(const std::string& filename) { + base::type::fstream_t *fs = new base::type::fstream_t(filename.c_str(), + base::type::fstream_t::out | base::type::fstream_t::app); +#if defined(ELPP_UNICODE) + std::locale elppUnicodeLocale(""); +#if ELPP_OS_WINDOWS + std::locale elppUnicodeLocaleWindows(elppUnicodeLocale, new std::codecvt_utf8_utf16); + elppUnicodeLocale = elppUnicodeLocaleWindows; +#endif + fs->imbue(elppUnicodeLocale); +#endif // defined(ELPP_UNICODE) + if (fs->is_open()) { + fs->flush(); + } + else { + base::utils::safeDelete(fs); + ELPP_INTERNAL_ERROR("Bad file [" << filename << "]", true); + } + return fs; + } + + /// @brief Gets size of file provided in stream + static std::size_t getSizeOfFile(base::type::fstream_t* fs) { + if (fs == nullptr) { + return 0; + } + std::streampos currPos = fs->tellg(); + fs->seekg(0, fs->end); + std::size_t size = static_cast(fs->tellg()); + fs->seekg(currPos); + return size; + } + + /// @brief Determines whether or not provided path exist in current file system + static inline bool pathExists(const char* path, bool considerFile = false) { + if (path == nullptr) { + return false; + } +#if ELPP_OS_UNIX + ELPP_UNUSED(considerFile); + struct stat st; + return (stat(path, &st) == 0); +#elif ELPP_OS_WINDOWS + DWORD fileType = GetFileAttributesA(path); + if (fileType == INVALID_FILE_ATTRIBUTES) { + return false; + } + return considerFile ? true : ((fileType & FILE_ATTRIBUTE_DIRECTORY) == 0 ? false : true); +#endif // ELPP_OS_UNIX + } + + /// @brief Creates specified path on file system + /// @param path Path to create. + static bool createPath(const std::string& path) { + if (path.empty()) { + return false; + } + if (base::utils::File::pathExists(path.c_str())) { + return true; + } + int status = -1; + + char* currPath = const_cast(path.c_str()); + std::string builtPath = std::string(); +#if ELPP_OS_UNIX + if (path[0] == '/') { + builtPath = "/"; + } + currPath = STRTOK(currPath, base::consts::kFilePathSeperator, 0); +#elif ELPP_OS_WINDOWS + // Use secure functions API + char* nextTok_ = nullptr; + currPath = STRTOK(currPath, base::consts::kFilePathSeperator, &nextTok_); + ELPP_UNUSED(nextTok_); +#endif // ELPP_OS_UNIX + while (currPath != nullptr) { + builtPath.append(currPath); + builtPath.append(base::consts::kFilePathSeperator); +#if ELPP_OS_UNIX + status = mkdir(builtPath.c_str(), ELPP_LOG_PERMS); + currPath = STRTOK(nullptr, base::consts::kFilePathSeperator, 0); +#elif ELPP_OS_WINDOWS + status = _mkdir(builtPath.c_str()); + currPath = STRTOK(nullptr, base::consts::kFilePathSeperator, &nextTok_); +#endif // ELPP_OS_UNIX + } + if (status == -1) { + ELPP_INTERNAL_ERROR("Error while creating path [" << path << "]", true); + return false; + } + return true; + } + /// @brief Extracts path of filename with leading slash + static std::string extractPathFromFilename(const std::string& fullPath, + const char* seperator = base::consts::kFilePathSeperator) { + if ((fullPath == "") || (fullPath.find(seperator) == std::string::npos)) { + return fullPath; + } + std::size_t lastSlashAt = fullPath.find_last_of(seperator); + if (lastSlashAt == 0) { + return std::string(seperator); + } + return fullPath.substr(0, lastSlashAt + 1); + } + /// @brief builds stripped filename and puts it in buff + static void buildStrippedFilename(const char* filename, char buff[], + std::size_t limit = base::consts::kSourceFilenameMaxLength) { + std::size_t sizeOfFilename = strlen(filename); + if (sizeOfFilename >= limit) { + filename += (sizeOfFilename - limit); + if (filename[0] != '.' && filename[1] != '.') { // prepend if not already + filename += 3; // 3 = '..' + STRCAT(buff, "..", limit); + } + } + STRCAT(buff, filename, limit); + } + /// @brief builds base filename and puts it in buff + static void buildBaseFilename(const std::string& fullPath, char buff[], + std::size_t limit = base::consts::kSourceFilenameMaxLength, + const char* seperator = base::consts::kFilePathSeperator) { + const char *filename = fullPath.c_str(); + std::size_t lastSlashAt = fullPath.find_last_of(seperator); + filename += lastSlashAt ? lastSlashAt + 1 : 0; + std::size_t sizeOfFilename = strlen(filename); + if (sizeOfFilename >= limit) { + filename += (sizeOfFilename - limit); + if (filename[0] != '.' && filename[1] != '.') { // prepend if not already + filename += 3; // 3 = '..' + STRCAT(buff, "..", limit); + } + } + STRCAT(buff, filename, limit); + } + }; + /// @brief String utilities helper class used internally. You should not use it. + class Str : base::StaticClass { + public: + /// @brief Checks if character is digit. Dont use libc implementation of it to prevent locale issues. + static inline bool isDigit(char c) { + return c >= '0' && c <= '9'; + } + + /// @brief Matches wildcards, '*' and '?' only supported. + static bool wildCardMatch(const char* str, const char* pattern) { + while (*pattern) { + switch (*pattern) { + case '?': + if (!*str) + return false; + ++str; + ++pattern; + break; + case '*': + if (wildCardMatch(str, pattern + 1)) + return true; + if (*str && wildCardMatch(str + 1, pattern)) + return true; + return false; + break; + default: + if (*str++ != *pattern++) + return false; + break; + } + } + return !*str && !*pattern; + } + + /// @brief Trims string from start + /// @param [in,out] str String to trim + static inline std::string& ltrim(std::string& str) { + str.erase(str.begin(), std::find_if(str.begin(), str.end(), std::not1(std::ptr_fun(&std::isspace)))); + return str; + } + + /// @brief Trim string from end + /// @param [in,out] str String to trim + static inline std::string& rtrim(std::string& str) { + str.erase(std::find_if(str.rbegin(), str.rend(), std::not1(std::ptr_fun(&std::isspace))).base(), str.end()); + return str; + } + + /// @brief Trims string from left and right + /// @param [in,out] str String to trim + static inline std::string& trim(std::string& str) { + return ltrim(rtrim(str)); + } + + /// @brief Determines whether or not str starts with specified string + /// @param str String to check + /// @param start String to check against + /// @return Returns true if starts with specified string, false otherwise + static inline bool startsWith(const std::string& str, const std::string& start) { + return (str.length() >= start.length()) && (str.compare(0, start.length(), start) == 0); + } + + /// @brief Determines whether or not str ends with specified string + /// @param str String to check + /// @param end String to check against + /// @return Returns true if ends with specified string, false otherwise + static inline bool endsWith(const std::string& str, const std::string& end) { + return (str.length() >= end.length()) && (str.compare(str.length() - end.length(), end.length(), end) == 0); + } + + /// @brief Replaces all instances of replaceWhat with 'replaceWith'. Original variable is changed for performance. + /// @param [in,out] str String to replace from + /// @param replaceWhat Character to replace + /// @param replaceWith Character to replace with + /// @return Modified version of str + static inline std::string& replaceAll(std::string& str, char replaceWhat, char replaceWith) { + std::replace(str.begin(), str.end(), replaceWhat, replaceWith); + return str; + } + + /// @brief Replaces all instances of 'replaceWhat' with 'replaceWith'. (String version) Replaces in place + /// @param str String to replace from + /// @param replaceWhat Character to replace + /// @param replaceWith Character to replace with + /// @return Modified (original) str + static inline std::string& replaceAll(std::string& str, const std::string& replaceWhat, // NOLINT + const std::string& replaceWith) { + if (replaceWhat == replaceWith) + return str; + std::size_t foundAt = std::string::npos; + while ((foundAt = str.find(replaceWhat, foundAt + 1)) != std::string::npos) { + str.replace(foundAt, replaceWhat.length(), replaceWith); + } + return str; + } + + static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, // NOLINT + const base::type::string_t& replaceWith) { + std::size_t foundAt = base::type::string_t::npos; + while ((foundAt = str.find(replaceWhat, foundAt + 1)) != base::type::string_t::npos) { + if (foundAt > 0 && str[foundAt - 1] == base::consts::kFormatSpecifierChar) { + str.erase(foundAt > 0 ? foundAt - 1 : 0, 1); + ++foundAt; + } + else { + str.replace(foundAt, replaceWhat.length(), replaceWith); + return; + } + } + } +#if defined(ELPP_UNICODE) + static void replaceFirstWithEscape(base::type::string_t& str, const base::type::string_t& replaceWhat, // NOLINT + const std::string& replaceWith) { + replaceFirstWithEscape(str, replaceWhat, base::type::string_t(replaceWith.begin(), replaceWith.end())); + } +#endif // defined(ELPP_UNICODE) + /// @brief Converts string to uppercase + /// @param str String to convert + /// @return Uppercase string + static inline std::string& toUpper(std::string& str) { + std::transform(str.begin(), str.end(), str.begin(), ::toupper); + return str; + } + + /// @brief Compares cstring equality - uses strcmp + static inline bool cStringEq(const char* s1, const char* s2) { + if (s1 == nullptr && s2 == nullptr) return true; + if (s1 == nullptr || s2 == nullptr) return false; + return strcmp(s1, s2) == 0; + } + + /// @brief Compares cstring equality (case-insensitive) - uses toupper(char) + /// Dont use strcasecmp because of CRT (VC++) + static bool cStringCaseEq(const char* s1, const char* s2) { + if (s1 == nullptr && s2 == nullptr) return true; + if (s1 == nullptr || s2 == nullptr) return false; + if (strlen(s1) != strlen(s2)) return false; + while (*s1 != '\0' && *s2 != '\0') { + if (::toupper(*s1) != ::toupper(*s2)) return false; + ++s1; + ++s2; + } + return true; + } + + /// @brief Returns true if c exist in str + static inline bool contains(const char* str, char c) { + for (; *str; ++str) { + if (*str == c) + return true; + } + return false; + } + + static inline char* convertAndAddToBuff(std::size_t n, int len, char* buf, const char* bufLim, bool zeroPadded = true) { + char localBuff[10] = ""; + char* p = localBuff + sizeof(localBuff) - 2; + if (n > 0) { + for (; n > 0 && p > localBuff && len > 0; n /= 10, --len) + *--p = static_cast(n % 10 + '0'); + } + else { + *--p = '0'; + --len; + } + if (zeroPadded) + while (p > localBuff && len-- > 0) *--p = static_cast('0'); + return addToBuff(p, buf, bufLim); + } + + static inline char* addToBuff(const char* str, char* buf, const char* bufLim) { + while ((buf < bufLim) && ((*buf = *str++) != '\0')) + ++buf; + return buf; + } + + static inline char* clearBuff(char buff[], std::size_t lim) { + STRCPY(buff, "", lim); + ELPP_UNUSED(lim); // For *nix we dont have anything using lim in above STRCPY macro + return buff; + } + + /// @brief Converst wchar* to char* + /// NOTE: Need to free return value after use! + static char* wcharPtrToCharPtr(const wchar_t* line) { + std::size_t len_ = wcslen(line) + 1; + char* buff_ = static_cast(malloc(len_ + 1)); +# if ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) + std::wcstombs(buff_, line, len_); +# elif ELPP_OS_WINDOWS + std::size_t convCount_ = 0; + mbstate_t mbState_; + ::memset(static_cast(&mbState_), 0, sizeof(mbState_)); + wcsrtombs_s(&convCount_, buff_, len_, &line, len_, &mbState_); +# endif // ELPP_OS_UNIX || (ELPP_OS_WINDOWS && !ELPP_CRT_DBG_WARNINGS) + return buff_; + } + }; + /// @brief Operating System helper static class used internally. You should not use it. + class OS : base::StaticClass { + public: +#if ELPP_OS_WINDOWS + /// @brief Gets environment variables for Windows based OS. + /// We are not using getenv(const char*) because of CRT deprecation + /// @param varname Variable name to get environment variable value for + /// @return If variable exist the value of it otherwise nullptr + static const char* getWindowsEnvironmentVariable(const char* varname) { + const DWORD bufferLen = 50; + static char buffer[bufferLen]; + if (GetEnvironmentVariableA(varname, buffer, bufferLen)) { + return buffer; + } + return nullptr; + } +#endif // ELPP_OS_WINDOWS +#if ELPP_OS_ANDROID + /// @brief Reads android property value + static inline std::string getProperty(const char* prop) { + char propVal[PROP_VALUE_MAX + 1]; + int ret = __system_property_get(prop, propVal); + return ret == 0 ? std::string() : std::string(propVal); + } + + /// @brief Reads android device name + static std::string getDeviceName(void) { + std::stringstream ss; + std::string manufacturer = getProperty("ro.product.manufacturer"); + std::string model = getProperty("ro.product.model"); + if (manufacturer.empty() || model.empty()) { + return std::string(); + } + ss << manufacturer << "-" << model; + return ss.str(); + } +#endif // ELPP_OS_ANDROID + + /// @brief Runs command on terminal and returns the output. + /// + /// @detail This is applicable only on unix based systems, for all other OS, an empty string is returned. + /// @param command Bash command + /// @return Result of bash output or empty string if no result found. + static const std::string getBashOutput(const char* command) { +#if (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) + if (command == nullptr) { + return std::string(); + } + FILE* proc = nullptr; + if ((proc = popen(command, "r")) == nullptr) { + ELPP_INTERNAL_ERROR("\nUnable to run command [" << command << "]", true); + return std::string(); + } + char hBuff[4096]; + if (fgets(hBuff, sizeof(hBuff), proc) != nullptr) { + pclose(proc); + if (hBuff[strlen(hBuff) - 1] == '\n') { + hBuff[strlen(hBuff) - 1] = '\0'; + } + return std::string(hBuff); + } + return std::string(); +#else + ELPP_UNUSED(command); + return std::string(); +#endif // (ELPP_OS_UNIX && !ELPP_OS_ANDROID && !ELPP_CYGWIN) + } + + /// @brief Gets environment variable. This is cross-platform and CRT safe (for VC++) + /// @param variableName Environment variable name + /// @param defaultVal If no environment variable or value found the value to return by default + /// @param alternativeBashCommand If environment variable not found what would be alternative bash command + /// in order to look for value user is looking for. E.g, for 'user' alternative command will 'whoami' + static std::string getEnvironmentVariable(const char* variableName, const char* defaultVal, const char* alternativeBashCommand = nullptr) { +#if ELPP_OS_UNIX + const char* val = getenv(variableName); +#elif ELPP_OS_WINDOWS + const char* val = getWindowsEnvironmentVariable(variableName); +#endif // ELPP_OS_UNIX + if ((val == nullptr) || ((strcmp(val, "") == 0))) { +#if ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) + // Try harder on unix-based systems + std::string valBash = base::utils::OS::getBashOutput(alternativeBashCommand); + if (valBash.empty()) { + return std::string(defaultVal); + } + else { + return valBash; + } +#elif ELPP_OS_WINDOWS || ELPP_OS_UNIX + ELPP_UNUSED(alternativeBashCommand); + return std::string(defaultVal); +#endif // ELPP_OS_UNIX && defined(ELPP_FORCE_ENV_VAR_FROM_BASH) + } + return std::string(val); + } + /// @brief Gets current username. + static inline std::string currentUser(void) { +#if ELPP_OS_UNIX && !ELPP_OS_ANDROID + return getEnvironmentVariable("USER", base::consts::kUnknownUser, "whoami"); +#elif ELPP_OS_WINDOWS + return getEnvironmentVariable("USERNAME", base::consts::kUnknownUser); +#elif ELPP_OS_ANDROID + ELPP_UNUSED(base::consts::kUnknownUser); + return std::string("android"); +#else + return std::string(); +#endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID + } + + /// @brief Gets current host name or computer name. + /// + /// @detail For android systems this is device name with its manufacturer and model seperated by hyphen + static inline std::string currentHost(void) { +#if ELPP_OS_UNIX && !ELPP_OS_ANDROID + return getEnvironmentVariable("HOSTNAME", base::consts::kUnknownHost, "hostname"); +#elif ELPP_OS_WINDOWS + return getEnvironmentVariable("COMPUTERNAME", base::consts::kUnknownHost); +#elif ELPP_OS_ANDROID + ELPP_UNUSED(base::consts::kUnknownHost); + return getDeviceName(); +#else + return std::string(); +#endif // ELPP_OS_UNIX && !ELPP_OS_ANDROID + } + /// @brief Whether or not terminal supports colors + static inline bool termSupportsColor(void) { + std::string term = getEnvironmentVariable("TERM", ""); + return term == "xterm" || term == "xterm-color" || term == "xterm-256color" || + term == "screen" || term == "linux" || term == "cygwin"; + } + }; + extern std::string s_currentUser; + extern std::string s_currentHost; + extern bool s_termSupportsColor; +#define ELPP_INITI_BASIC_DECLR \ + namespace el {\ + namespace base {\ + namespace utils {\ + std::string s_currentUser = el::base::utils::OS::currentUser(); \ + std::string s_currentHost = el::base::utils::OS::currentHost(); \ + bool s_termSupportsColor = el::base::utils::OS::termSupportsColor(); \ + }\ + }\ + } + /// @brief Contains utilities for cross-platform date/time. This class make use of el::base::utils::Str + class DateTime : base::StaticClass { + public: + /// @brief Cross platform gettimeofday for Windows and unix platform. This can be used to determine current millisecond. + /// + /// @detail For unix system it uses gettimeofday(timeval*, timezone*) and for Windows, a seperate implementation is provided + /// @param [in,out] tv Pointer that gets updated + static void gettimeofday(struct timeval* tv) { +#if ELPP_OS_WINDOWS + if (tv != nullptr) { +# if ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) + const unsigned __int64 delta_ = 11644473600000000Ui64; +# else + const unsigned __int64 delta_ = 11644473600000000ULL; +# endif // ELPP_COMPILER_MSVC || defined(_MSC_EXTENSIONS) + const double secOffSet = 0.000001; + const unsigned long usecOffSet = 1000000; + FILETIME fileTime; + GetSystemTimeAsFileTime(&fileTime); + unsigned __int64 present = 0; + present |= fileTime.dwHighDateTime; + present = present << 32; + present |= fileTime.dwLowDateTime; + present /= 10; // mic-sec + // Subtract the difference + present -= delta_; + tv->tv_sec = static_cast(present * secOffSet); + tv->tv_usec = static_cast(present % usecOffSet); + } +#else + ::gettimeofday(tv, nullptr); +#endif // ELPP_OS_WINDOWS + } + + /// @brief Gets current date and time with milliseconds. + /// @param format User provided date/time format + /// @param msWidth A pointer to base::MillisecondsWidth from configuration (non-null) + /// @returns string based date time in specified format. + static inline std::string getDateTime(const char* format, const base::MillisecondsWidth* msWidth) { + struct timeval currTime; + gettimeofday(&currTime); + struct ::tm timeInfo; + buildTimeInfo(&currTime, &timeInfo); + const int kBuffSize = 30; + char buff_[kBuffSize] = ""; + parseFormat(buff_, kBuffSize, format, &timeInfo, static_cast(currTime.tv_usec / msWidth->m_offset), msWidth); + return std::string(buff_); + } + + /// @brief Formats time to get unit accordingly, units like second if > 1000 or minutes if > 60000 etc + static base::type::string_t formatTime(unsigned long long time, base::TimestampUnit timestampUnit) { + double result = static_cast(time); + base::type::EnumType start = static_cast(timestampUnit); + const base::type::char_t* unit = base::consts::kTimeFormats[start].unit; + for (base::type::EnumType i = start; i < base::consts::kTimeFormatsCount - 1; ++i) { + if (result <= base::consts::kTimeFormats[i].value) { + break; + } + result /= base::consts::kTimeFormats[i].value; + unit = base::consts::kTimeFormats[i + 1].unit; + } + base::type::stringstream_t ss; + ss << result << " " << unit; + return ss.str(); + } + + /// @brief Gets time difference in milli/micro second depending on timestampUnit + static inline unsigned long long getTimeDifference(const struct timeval& endTime, const struct timeval& startTime, base::TimestampUnit timestampUnit) { + if (timestampUnit == base::TimestampUnit::Microsecond) { + return static_cast(static_cast(1000000 * endTime.tv_sec + endTime.tv_usec) - + static_cast(1000000 * startTime.tv_sec + startTime.tv_usec)); + } + else { + return static_cast((((endTime.tv_sec - startTime.tv_sec) * 1000000) + (endTime.tv_usec - startTime.tv_usec)) / 1000); + } + } + + private: + static inline struct ::tm* buildTimeInfo(struct timeval* currTime, struct ::tm* timeInfo) { +#if ELPP_OS_UNIX + time_t rawTime = currTime->tv_sec; + ::localtime_r(&rawTime, timeInfo); + return timeInfo; +#else +# if ELPP_COMPILER_MSVC + ELPP_UNUSED(currTime); + time_t t; + _time64(&t); + localtime_s(timeInfo, &t); + return timeInfo; +# else + // For any other compilers that don't have CRT warnings issue e.g, MinGW or TDM GCC- we use different method + time_t rawTime = currTime->tv_sec; + struct tm* tmInf = localtime(&rawTime); + *timeInfo = *tmInf; + return timeInfo; +# endif // ELPP_COMPILER_MSVC +#endif // ELPP_OS_UNIX + } + static char* parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, + std::size_t msec, const base::MillisecondsWidth* msWidth) { + const char* bufLim = buf + bufSz; + for (; *format; ++format) { + if (*format == base::consts::kFormatSpecifierChar) { + switch (*++format) { + case base::consts::kFormatSpecifierChar: // Escape + break; + case '\0': // End + --format; + break; + case 'd': // Day + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mday, 2, buf, bufLim); + continue; + case 'a': // Day of week (short) + buf = base::utils::Str::addToBuff(base::consts::kDaysAbbrev[tInfo->tm_wday], buf, bufLim); + continue; + case 'A': // Day of week (long) + buf = base::utils::Str::addToBuff(base::consts::kDays[tInfo->tm_wday], buf, bufLim); + continue; + case 'M': // month + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mon + 1, 2, buf, bufLim); + continue; + case 'b': // month (short) + buf = base::utils::Str::addToBuff(base::consts::kMonthsAbbrev[tInfo->tm_mon], buf, bufLim); + continue; + case 'B': // month (long) + buf = base::utils::Str::addToBuff(base::consts::kMonths[tInfo->tm_mon], buf, bufLim); + continue; + case 'y': // year (two digits) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 2, buf, bufLim); + continue; + case 'Y': // year (four digits) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 4, buf, bufLim); + continue; + case 'h': // hour (12-hour) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour % 12, 2, buf, bufLim); + continue; + case 'H': // hour (24-hour) + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour, 2, buf, bufLim); + continue; + case 'm': // minute + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_min, 2, buf, bufLim); + continue; + case 's': // second + buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_sec, 2, buf, bufLim); + continue; + case 'z': // milliseconds + case 'g': + buf = base::utils::Str::convertAndAddToBuff(msec, msWidth->m_width, buf, bufLim); + continue; + case 'F': // AM/PM + buf = base::utils::Str::addToBuff((tInfo->tm_hour >= 12) ? base::consts::kPm : base::consts::kAm, buf, bufLim); + continue; + default: + continue; + } + } + if (buf == bufLim) break; + *buf++ = *format; + } + return buf; + } + }; + /// @brief Command line arguments for application if specified using el::Helpers::setArgs(..) or START_EASYLOGGINGPP(..) + class CommandLineArgs { + public: + CommandLineArgs(void) { + setArgs(0, static_cast(nullptr)); + } + CommandLineArgs(int argc, const char** argv) { + setArgs(argc, argv); + } + CommandLineArgs(int argc, char** argv) { + setArgs(argc, argv); + } + virtual ~CommandLineArgs(void) {} + /// @brief Sets arguments and parses them + inline void setArgs(int argc, const char** argv) { + setArgs(argc, const_cast(argv)); + } + /// @brief Sets arguments and parses them + inline void setArgs(int argc, char** argv) { + m_params.clear(); + m_paramsWithValue.clear(); + if (argc == 0 || argv == nullptr) { + return; + } + m_argc = argc; + m_argv = argv; + for (int i = 1; i < m_argc; ++i) { + const char* v = (strstr(m_argv[i], "=")); + if (v != nullptr && strlen(v) > 0) { + std::string key = std::string(m_argv[i]); + key = key.substr(0, key.find_first_of('=')); + if (hasParamWithValue(key.c_str())) { + ELPP_INTERNAL_INFO(1, "Skipping [" << key << "] arg since it already has value [" + << getParamValue(key.c_str()) << "]"); + } + else { + m_paramsWithValue.insert(std::make_pair(key, std::string(v + 1))); + } + } + if (v == nullptr) { + if (hasParam(m_argv[i])) { + ELPP_INTERNAL_INFO(1, "Skipping [" << m_argv[i] << "] arg since it already exists"); + } + else { + m_params.push_back(std::string(m_argv[i])); + } + } + } + } + /// @brief Returns true if arguments contain paramKey with a value (seperated by '=') + inline bool hasParamWithValue(const char* paramKey) const { + return m_paramsWithValue.find(std::string(paramKey)) != m_paramsWithValue.end(); + } + /// @brief Returns value of arguments + /// @see hasParamWithValue(const char*) + inline const char* getParamValue(const char* paramKey) const { + return m_paramsWithValue.find(std::string(paramKey))->second.c_str(); + } + /// @brief Return true if arguments has a param (not having a value) i,e without '=' + inline bool hasParam(const char* paramKey) const { + return std::find(m_params.begin(), m_params.end(), std::string(paramKey)) != m_params.end(); + } + /// @brief Returns true if no params available. This exclude argv[0] + inline bool empty(void) const { + return m_params.empty() && m_paramsWithValue.empty(); + } + /// @brief Returns total number of arguments. This exclude argv[0] + inline std::size_t size(void) const { + return m_params.size() + m_paramsWithValue.size(); + } + inline friend base::type::ostream_t& operator<<(base::type::ostream_t& os, const CommandLineArgs& c) { + for (int i = 1; i < c.m_argc; ++i) { + os << ELPP_LITERAL("[") << c.m_argv[i] << ELPP_LITERAL("]"); + if (i < c.m_argc - 1) { + os << ELPP_LITERAL(" "); + } + } + return os; + } + + private: + int m_argc; + char** m_argv; + std::map m_paramsWithValue; + std::vector m_params; + }; + /// @brief Abstract registry (aka repository) that provides basic interface for pointer repository specified by T_Ptr type. + /// + /// @detail Most of the functions are virtual final methods but anything implementing this abstract class should implement + /// unregisterAll() and deepCopy(const AbstractRegistry&) and write registerNew() method according to container + /// and few more methods; get() to find element, unregister() to unregister single entry. + /// Please note that this is thread-unsafe and should also implement thread-safety mechanisms in implementation. + template + class AbstractRegistry : public base::threading::ThreadSafe { + public: + typedef typename Container::iterator iterator; + typedef typename Container::const_iterator const_iterator; + + /// @brief Default constructor + AbstractRegistry(void) {} + + /// @brief Move constructor that is useful for base classes + AbstractRegistry(AbstractRegistry&& sr) { + if (this == &sr) { + return; + } + unregisterAll(); + m_list = std::move(sr.m_list); + } + + bool operator==(const AbstractRegistry& other) { + if (size() != other.size()) { + return false; + } + for (std::size_t i = 0; i < m_list.size(); ++i) { + if (m_list.at(i) != other.m_list.at(i)) { + return false; + } + } + return true; + } + + bool operator!=(const AbstractRegistry& other) { + if (size() != other.size()) { + return true; + } + for (std::size_t i = 0; i < m_list.size(); ++i) { + if (m_list.at(i) != other.m_list.at(i)) { + return true; + } + } + return false; + } + + /// @brief Assignment move operator + AbstractRegistry& operator=(AbstractRegistry&& sr) { + if (this == &sr) { + return *this; + } + unregisterAll(); + m_list = std::move(sr.m_list); + return *this; + } + + virtual ~AbstractRegistry(void) { + } + + /// @return Iterator pointer from start of repository + virtual inline iterator begin(void) ELPP_FINAL { + return m_list.begin(); + } + + /// @return Iterator pointer from end of repository + virtual inline iterator end(void) ELPP_FINAL { + return m_list.end(); + } + + + /// @return Constant iterator pointer from start of repository + virtual inline const_iterator cbegin(void) const ELPP_FINAL { + return m_list.cbegin(); + } + + /// @return End of repository + virtual inline const_iterator cend(void) const ELPP_FINAL { + return m_list.cend(); + } + + /// @return Whether or not repository is empty + virtual inline bool empty(void) const ELPP_FINAL { + return m_list.empty(); + } + + /// @return Size of repository + virtual inline std::size_t size(void) const ELPP_FINAL { + return m_list.size(); + } + + /// @brief Returns underlying container by reference + virtual inline Container& list(void) ELPP_FINAL { + return m_list; + } + + /// @brief Returns underlying container by constant reference. + virtual inline const Container& list(void) const ELPP_FINAL { + return m_list; + } + + /// @brief Unregisters all the pointers from current repository. + virtual void unregisterAll(void) = 0; + + protected: + virtual void deepCopy(const AbstractRegistry&) = 0; + void reinitDeepCopy(const AbstractRegistry& sr) { + unregisterAll(); + deepCopy(sr); + } + + private: + Container m_list; + }; + + /// @brief A pointer registry mechanism to manage memory and provide search functionalities. (non-predicate version) + /// + /// @detail NOTE: This is thread-unsafe implementation (although it contains lock function, it does not use these functions) + /// of AbstractRegistry. Any implementation of this class should be + /// explicitly (by using lock functions) + template + class Registry : public AbstractRegistry> { + public: + typedef typename Registry::iterator iterator; + typedef typename Registry::const_iterator const_iterator; + + Registry(void) {} + + /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. + Registry(const Registry& sr) : AbstractRegistry>() { + if (this == &sr) { + return; + } + this->reinitDeepCopy(sr); + } + + /// @brief Assignment operator that unregisters all the existing registeries and deeply copies each of repo element + /// @see unregisterAll() + /// @see deepCopy(const AbstractRegistry&) + Registry& operator=(const Registry& sr) { + if (this == &sr) { + return *this; + } + this->reinitDeepCopy(sr); + return *this; + } + + virtual ~Registry(void) { + unregisterAll(); + } + + protected: + virtual inline void unregisterAll(void) ELPP_FINAL { + if (!this->empty()) { + for (auto&& curr : this->list()) { + base::utils::safeDelete(curr.second); + } + this->list().clear(); + } + } + + /// @brief Registers new registry to repository. + virtual inline void registerNew(const T_Key& uniqKey, T_Ptr* ptr) ELPP_FINAL { + unregister(uniqKey); + this->list().insert(std::make_pair(uniqKey, ptr)); + } + + /// @brief Unregisters single entry mapped to specified unique key + inline void unregister(const T_Key& uniqKey) { + T_Ptr* existing = get(uniqKey); + if (existing != nullptr) { + base::utils::safeDelete(existing); + this->list().erase(uniqKey); + } + } + + /// @brief Gets pointer from repository. If none found, nullptr is returned. + inline T_Ptr* get(const T_Key& uniqKey) { + iterator it = this->list().find(uniqKey); + return it == this->list().end() + ? nullptr + : it->second; + } + + private: + virtual inline void deepCopy(const AbstractRegistry>& sr) ELPP_FINAL { + for (const_iterator it = sr.cbegin(); it != sr.cend(); ++it) { + registerNew(it->first, new T_Ptr(*it->second)); + } + } + }; + + /// @brief A pointer registry mechanism to manage memory and provide search functionalities. (predicate version) + /// + /// @detail NOTE: This is thread-unsafe implementation of AbstractRegistry. Any implementation of this class + /// should be made thread-safe explicitly + template + class RegistryWithPred : public AbstractRegistry> { + public: + typedef typename RegistryWithPred::iterator iterator; + typedef typename RegistryWithPred::const_iterator const_iterator; + + RegistryWithPred(void) { + } + + virtual ~RegistryWithPred(void) { + unregisterAll(); + } + + /// @brief Copy constructor that is useful for base classes. Try to avoid this constructor, use move constructor. + RegistryWithPred(const RegistryWithPred& sr) : AbstractRegistry>() { + if (this == &sr) { + return; + } + this->reinitDeepCopy(sr); + } + + /// @brief Assignment operator that unregisters all the existing registeries and deeply copies each of repo element + /// @see unregisterAll() + /// @see deepCopy(const AbstractRegistry&) + RegistryWithPred& operator=(const RegistryWithPred& sr) { + if (this == &sr) { + return *this; + } + this->reinitDeepCopy(sr); + return *this; + } + + friend inline base::type::ostream_t& operator<<(base::type::ostream_t& os, const RegistryWithPred& sr) { + for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { + os << ELPP_LITERAL(" ") << **it << ELPP_LITERAL("\n"); + } + return os; + } + + protected: + virtual inline void unregisterAll(void) ELPP_FINAL { + if (!this->empty()) { + for (auto&& curr : this->list()) { + base::utils::safeDelete(curr); + } + this->list().clear(); + } + } + + virtual void unregister(T_Ptr*& ptr) ELPP_FINAL { + if (ptr) { + iterator iter = this->begin(); + for (; iter != this->end(); ++iter) { + if (ptr == *iter) { + break; + } + } + if (iter != this->end() && *iter != nullptr) { + this->list().erase(iter); + base::utils::safeDelete(*iter); + } + } + } + + virtual inline void registerNew(T_Ptr* ptr) ELPP_FINAL { + this->list().push_back(ptr); + } + + /// @brief Gets pointer from repository with speicifed arguments. Arguments are passed to predicate + /// in order to validate pointer. + template + inline T_Ptr* get(const T& arg1, const T2 arg2) { + iterator iter = std::find_if(this->list().begin(), this->list().end(), Pred(arg1, arg2)); + if (iter != this->list().end() && *iter != nullptr) { + return *iter; + } + return nullptr; + } + + private: + virtual inline void deepCopy(const AbstractRegistry>& sr) { + for (const_iterator it = sr.list().begin(); it != sr.list().end(); ++it) { + registerNew(new T_Ptr(**it)); + } + } + }; + + } // namespace utils + } // namespace base + /// @brief Base of Easylogging++ friendly class + /// + /// @detail After inheriting this class publicly, implement pure-virtual function `void log(std::ostream&) const` + class Loggable { + public: + virtual ~Loggable(void) {} + virtual void log(el::base::type::ostream_t&) const = 0; + private: + friend inline el::base::type::ostream_t& operator<<(el::base::type::ostream_t& os, const Loggable& loggable) { + loggable.log(os); + return os; + } + }; + namespace base { + /// @brief Represents log format containing flags and date format. This is used internally to start initial log + class LogFormat : public Loggable { + public: + LogFormat(void) : + m_level(Level::Unknown), + m_userFormat(base::type::string_t()), + m_format(base::type::string_t()), + m_dateTimeFormat(std::string()), + m_flags(0x0) { + } + + LogFormat(Level level, const base::type::string_t& format) + : m_level(level), m_userFormat(format) { + parseFromFormat(m_userFormat); + } + + LogFormat(const LogFormat& logFormat) { + m_level = logFormat.m_level; + m_userFormat = logFormat.m_userFormat; + m_format = logFormat.m_format; + m_dateTimeFormat = logFormat.m_dateTimeFormat; + m_flags = logFormat.m_flags; + } + + LogFormat(LogFormat&& logFormat) { + m_level = std::move(logFormat.m_level); + m_userFormat = std::move(logFormat.m_userFormat); + m_format = std::move(logFormat.m_format); + m_dateTimeFormat = std::move(logFormat.m_dateTimeFormat); + m_flags = std::move(logFormat.m_flags); + } + + LogFormat& operator=(const LogFormat& logFormat) { + m_level = logFormat.m_level; + m_userFormat = logFormat.m_userFormat; + m_dateTimeFormat = logFormat.m_dateTimeFormat; + m_flags = logFormat.m_flags; + return *this; + } + + virtual ~LogFormat(void) { + } + + inline bool operator==(const LogFormat& other) { + return m_level == other.m_level && m_userFormat == other.m_userFormat && m_format == other.m_format && + m_dateTimeFormat == other.m_dateTimeFormat && m_flags == other.m_flags; + } + + /// @brief Updates format to be used while logging. + /// @param userFormat User provided format + void parseFromFormat(const base::type::string_t& userFormat) { + // We make copy because we will be changing the format + // i.e, removing user provided date format from original format + // and then storing it. + base::type::string_t formatCopy = userFormat; + m_flags = 0x0; + auto conditionalAddFlag = [&](const base::type::char_t* specifier, base::FormatFlags flag) { + std::size_t foundAt = base::type::string_t::npos; + while ((foundAt = formatCopy.find(specifier, foundAt + 1)) != base::type::string_t::npos) { + if (foundAt > 0 && formatCopy[foundAt - 1] == base::consts::kFormatSpecifierChar) { + if (hasFlag(flag)) { + // If we already have flag we remove the escape chars so that '%%' is turned to '%' + // even after specifier resolution - this is because we only replaceFirst specifier + formatCopy.erase(foundAt > 0 ? foundAt - 1 : 0, 1); + ++foundAt; + } + } + else { + if (!hasFlag(flag)) addFlag(flag); + } + } + }; + conditionalAddFlag(base::consts::kAppNameFormatSpecifier, base::FormatFlags::AppName); + conditionalAddFlag(base::consts::kSeverityLevelFormatSpecifier, base::FormatFlags::Level); + conditionalAddFlag(base::consts::kSeverityLevelShortFormatSpecifier, base::FormatFlags::LevelShort); + conditionalAddFlag(base::consts::kLoggerIdFormatSpecifier, base::FormatFlags::LoggerId); + conditionalAddFlag(base::consts::kThreadIdFormatSpecifier, base::FormatFlags::ThreadId); + conditionalAddFlag(base::consts::kLogFileFormatSpecifier, base::FormatFlags::File); + conditionalAddFlag(base::consts::kLogFileBaseFormatSpecifier, base::FormatFlags::FileBase); + conditionalAddFlag(base::consts::kLogLineFormatSpecifier, base::FormatFlags::Line); + conditionalAddFlag(base::consts::kLogLocationFormatSpecifier, base::FormatFlags::Location); + conditionalAddFlag(base::consts::kLogFunctionFormatSpecifier, base::FormatFlags::Function); + conditionalAddFlag(base::consts::kCurrentUserFormatSpecifier, base::FormatFlags::User); + conditionalAddFlag(base::consts::kCurrentHostFormatSpecifier, base::FormatFlags::Host); + conditionalAddFlag(base::consts::kMessageFormatSpecifier, base::FormatFlags::LogMessage); + conditionalAddFlag(base::consts::kVerboseLevelFormatSpecifier, base::FormatFlags::VerboseLevel); + // For date/time we need to extract user's date format first + std::size_t dateIndex = std::string::npos; + if ((dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier)) != std::string::npos) { + while (dateIndex > 0 && formatCopy[dateIndex - 1] == base::consts::kFormatSpecifierChar) { + dateIndex = formatCopy.find(base::consts::kDateTimeFormatSpecifier, dateIndex + 1); + } + if (dateIndex != std::string::npos) { + addFlag(base::FormatFlags::DateTime); + updateDateFormat(dateIndex, formatCopy); + } + } + m_format = formatCopy; + updateFormatSpec(); + } + + inline Level level(void) const { + return m_level; + } + + inline const base::type::string_t& userFormat(void) const { + return m_userFormat; + } + + inline const base::type::string_t& format(void) const { + return m_format; + } + + inline const std::string& dateTimeFormat(void) const { + return m_dateTimeFormat; + } + + inline base::type::EnumType flags(void) const { + return m_flags; + } + + inline bool hasFlag(base::FormatFlags flag) const { + return base::utils::hasFlag(flag, m_flags); + } + + virtual void log(el::base::type::ostream_t& os) const { + os << m_format; + } + + protected: + /// @brief Updates date time format if available in currFormat. + /// @param index Index where %datetime, %date or %time was found + /// @param [in,out] currFormat current format that is being used to format + virtual void updateDateFormat(std::size_t index, base::type::string_t& currFormat) ELPP_FINAL { + if (hasFlag(base::FormatFlags::DateTime)) { + index += ELPP_STRLEN(base::consts::kDateTimeFormatSpecifier); + } + const base::type::char_t* ptr = currFormat.c_str() + index; + if ((currFormat.size() > index) && (ptr[0] == '{')) { + // User has provided format for date/time + ++ptr; + int count = 1; // Start by 1 in order to remove starting brace + std::stringstream ss; + for (; *ptr; ++ptr, ++count) { + if (*ptr == '}') { + ++count; // In order to remove ending brace + break; + } + ss << *ptr; + } + currFormat.erase(index, count); + m_dateTimeFormat = ss.str(); + } + else { + // No format provided, use default + if (hasFlag(base::FormatFlags::DateTime)) { + m_dateTimeFormat = std::string(base::consts::kDefaultDateTimeFormat); + } + } + } + + /// @brief Updates %level from format. This is so that we dont have to do it at log-writing-time. It uses m_format and m_level + virtual void updateFormatSpec(void) ELPP_FINAL { + // Do not use switch over strongly typed enums because Intel C++ compilers dont support them yet. + if (m_level == Level::Debug) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kDebugLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kDebugLevelShortLogValue); + } + else if (m_level == Level::Info) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kInfoLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kInfoLevelShortLogValue); + } + else if (m_level == Level::Warning) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kWarningLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kWarningLevelShortLogValue); + } + else if (m_level == Level::Error) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kErrorLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kErrorLevelShortLogValue); + } + else if (m_level == Level::Fatal) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kFatalLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kFatalLevelShortLogValue); + } + else if (m_level == Level::Verbose) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kVerboseLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kVerboseLevelShortLogValue); + } + else if (m_level == Level::Trace) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelFormatSpecifier, + base::consts::kTraceLevelLogValue); + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kSeverityLevelShortFormatSpecifier, + base::consts::kTraceLevelShortLogValue); + } + if (hasFlag(base::FormatFlags::User)) { + std::string s = base::utils::s_currentUser; + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentUserFormatSpecifier, + base::utils::s_currentUser); + } + if (hasFlag(base::FormatFlags::Host)) { + base::utils::Str::replaceFirstWithEscape(m_format, base::consts::kCurrentHostFormatSpecifier, + base::utils::s_currentHost); + } + // Ignore Level::Global and Level::Unknown + } + + inline void addFlag(base::FormatFlags flag) { + base::utils::addFlag(flag, &m_flags); + } + + private: + Level m_level; + base::type::string_t m_userFormat; + base::type::string_t m_format; + std::string m_dateTimeFormat; + base::type::EnumType m_flags; + friend class el::Logger; // To resolve loggerId format specifier easily + }; + } // namespace base + /// @brief Resolving function for format specifier + typedef std::function FormatSpecifierValueResolver; + /// @brief User-provided custom format specifier + /// @see el::Helpers::installCustomFormatSpecifier + /// @see FormatSpecifierValueResolver + class CustomFormatSpecifier { + public: + CustomFormatSpecifier(const char* formatSpecifier, const FormatSpecifierValueResolver& resolver) : + m_formatSpecifier(formatSpecifier), m_resolver(resolver) {} + inline const char* formatSpecifier(void) const { return m_formatSpecifier; } + inline const FormatSpecifierValueResolver& resolver(void) const { return m_resolver; } + inline bool operator==(const char* formatSpecifier) { + return strcmp(m_formatSpecifier, formatSpecifier) == 0; + } + + private: + const char* m_formatSpecifier; + FormatSpecifierValueResolver m_resolver; + }; + /// @brief Represents single configuration that has representing level, configuration type and a string based value. + /// + /// @detail String based value means any value either its boolean, integer or string itself, it will be embedded inside quotes + /// and will be parsed later. + /// + /// Consider some examples below: + /// * el::Configuration confEnabledInfo(el::Level::Info, el::ConfigurationType::Enabled, "true"); + /// * el::Configuration confMaxLogFileSizeInfo(el::Level::Info, el::ConfigurationType::MaxLogFileSize, "2048"); + /// * el::Configuration confFilenameInfo(el::Level::Info, el::ConfigurationType::Filename, "/var/log/my.log"); + class Configuration : public Loggable { + public: + Configuration(const Configuration& c) : + m_level(c.m_level), + m_configurationType(c.m_configurationType), + m_value(c.m_value) { + } + + Configuration& operator=(const Configuration& c) { + m_level = c.m_level; + m_configurationType = c.m_configurationType; + m_value = c.m_value; + return *this; + } + + virtual ~Configuration(void) { + } + + /// @brief Full constructor used to sets value of configuration + Configuration(Level level, ConfigurationType configurationType, const std::string& value) : + m_level(level), + m_configurationType(configurationType), + m_value(value) { + } + + /// @brief Gets level of current configuration + inline Level level(void) const { + return m_level; + } + + /// @brief Gets configuration type of current configuration + inline ConfigurationType configurationType(void) const { + return m_configurationType; + } + + /// @brief Gets string based configuration value + inline const std::string& value(void) const { + return m_value; + } + + /// @brief Set string based configuration value + /// @param value Value to set. Values have to be std::string; For boolean values use "true", "false", for any integral values + /// use them in quotes. They will be parsed when configuring + inline void setValue(const std::string& value) { + m_value = value; + } + + virtual inline void log(el::base::type::ostream_t& os) const { + os << LevelHelper::convertToString(m_level) + << ELPP_LITERAL(" ") << ConfigurationTypeHelper::convertToString(m_configurationType) + << ELPP_LITERAL(" = ") << m_value.c_str(); + } + + /// @brief Used to find configuration from configuration (pointers) repository. Avoid using it. + class Predicate { + public: + Predicate(Level level, ConfigurationType configurationType) : + m_level(level), + m_configurationType(configurationType) { + } + + inline bool operator()(const Configuration* conf) const { + return ((conf != nullptr) && (conf->level() == m_level) && (conf->configurationType() == m_configurationType)); + } + + private: + Level m_level; + ConfigurationType m_configurationType; + }; + + private: + Level m_level; + ConfigurationType m_configurationType; + std::string m_value; + }; + + /// @brief Thread-safe Configuration repository + /// + /// @detail This repository represents configurations for all the levels and configuration type mapped to a value. + class Configurations : public base::utils::RegistryWithPred { + public: + /// @brief Default constructor with empty repository + Configurations(void) : + m_configurationFile(std::string()), + m_isFromFile(false) { + } + + /// @brief Constructor used to set configurations using configuration file. + /// @param configurationFile Full path to configuration file + /// @param useDefaultsForRemaining Lets you set the remaining configurations to default. + /// @param base If provided, this configuration will be based off existing repository that this argument is pointing to. + /// @see parseFromFile(const std::string&, Configurations* base) + /// @see setRemainingToDefault() + Configurations(const std::string& configurationFile, bool useDefaultsForRemaining = true, Configurations* base = nullptr) : + m_configurationFile(configurationFile), + m_isFromFile(false) { + parseFromFile(configurationFile, base); + if (useDefaultsForRemaining) { + setRemainingToDefault(); + } + } + + virtual ~Configurations(void) { + } + + /// @brief Parses configuration from file. + /// @param configurationFile Full path to configuration file + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration file. + /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you + /// do not proceed without successful parse. + inline bool parseFromFile(const std::string& configurationFile, Configurations* base = nullptr) { + // We initial assertion with true because if we have assertion diabled, we want to pass this + // check and if assertion is enabled we will have values re-assigned any way. + bool assertionPassed = true; + ELPP_ASSERT((assertionPassed = base::utils::File::pathExists(configurationFile.c_str(), true)), + "Configuration file [" << configurationFile << "] does not exist!"); + if (!assertionPassed) { + return false; + } + bool success = Parser::parseFromFile(configurationFile, this, base); + m_isFromFile = success; + return success; + } + + /// @brief Parse configurations from configuration string. + /// + /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary + /// new line characters are provided. + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration text. + /// @return True if successfully parsed, false otherwise. You may define 'ELPP_DEBUG_ASSERT_FAILURE' to make sure you + /// do not proceed without successful parse. + inline bool parseFromText(const std::string& configurationsString, Configurations* base = nullptr) { + bool success = Parser::parseFromText(configurationsString, this, base); + if (success) { + m_isFromFile = false; + } + return success; + } + + /// @brief Sets configuration based-off an existing configurations. + /// @param base Pointer to existing configurations. + inline void setFromBase(Configurations* base) { + if (base == nullptr || base == this) { + return; + } + base::threading::ScopedLock scopedLock(base->lock()); + for (Configuration*& conf : base->list()) { + set(conf); + } + } + + /// @brief Determines whether or not specified configuration type exists in the repository. + /// + /// @detail Returns as soon as first level is found. + /// @param configurationType Type of configuration to check existence for. + bool hasConfiguration(ConfigurationType configurationType) { + base::type::EnumType lIndex = LevelHelper::kMinValid; + bool result = false; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + if (hasConfiguration(LevelHelper::castFromInt(lIndex), configurationType)) { + result = true; + } + return result; + }); + return result; + } + + /// @brief Determines whether or not specified configuration type exists for specified level + /// @param level Level to check + /// @param configurationType Type of configuration to check existence for. + inline bool hasConfiguration(Level level, ConfigurationType configurationType) { + base::threading::ScopedLock scopedLock(lock()); +#if ELPP_COMPILER_INTEL + // We cant specify template types here, Intel C++ throws compilation error + // "error: type name is not allowed" + return RegistryWithPred::get(level, configurationType) != nullptr; +#else + return RegistryWithPred::get(level, configurationType) != nullptr; +#endif // ELPP_COMPILER_INTEL + } + + /// @brief Sets value of configuration for specified level. + /// + /// @detail Any existing configuration for specified level will be replaced. Also note that configuration types + /// ConfigurationType::MillisecondsWidth and ConfigurationType::PerformanceTracking will be ignored if not set for + /// Level::Global because these configurations are not dependant on level. + /// @param level Level to set configuration for (el::Level). + /// @param configurationType Type of configuration (el::ConfigurationType) + /// @param value A string based value. Regardless of what the data type of configuration is, it will always be string + /// from users' point of view. This is then parsed later to be used internally. + /// @see Configuration::setValue(const std::string& value) + /// @see el::Level + /// @see el::ConfigurationType + inline void set(Level level, ConfigurationType configurationType, const std::string& value) { + base::threading::ScopedLock scopedLock(lock()); + unsafeSet(level, configurationType, value); // This is not unsafe anymore as we have locked mutex + if (level == Level::Global) { + unsafeSetGlobally(configurationType, value, false); // Again this is not unsafe either + } + } + + /// @brief Sets single configuration based on other single configuration. + /// @see set(Level level, ConfigurationType configurationType, const std::string& value) + inline void set(Configuration* conf) { + if (conf == nullptr) { + return; + } + set(conf->level(), conf->configurationType(), conf->value()); + } + + inline Configuration* get(Level level, ConfigurationType configurationType) { + base::threading::ScopedLock scopedLock(lock()); + return RegistryWithPred::get(level, configurationType); + } + + /// @brief Sets configuration for all levels. + /// @param configurationType Type of configuration + /// @param value String based value + /// @see Configurations::set(Level level, ConfigurationType configurationType, const std::string& value) + inline void setGlobally(ConfigurationType configurationType, const std::string& value) { + setGlobally(configurationType, value, false); + } + + /// @brief Clears repository so that all the configurations are unset + inline void clear(void) { + base::threading::ScopedLock scopedLock(lock()); + unregisterAll(); + } + + /// @brief Gets configuration file used in parsing this configurations. + /// + /// @detail If this repository was set manually or by text this returns empty string. + inline const std::string& configurationFile(void) const { + return m_configurationFile; + } + + /// @brief Sets configurations to "factory based" configurations. + void setToDefault(void) { + setGlobally(ConfigurationType::Enabled, std::string("true"), true); +#if !defined(ELPP_NO_DEFAULT_LOG_FILE) + setGlobally(ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile), true); +#else + ELPP_UNUSED(base::consts::kDefaultLogFile); +#endif // !defined(ELPP_NO_DEFAULT_LOG_FILE) + setGlobally(ConfigurationType::ToFile, std::string("true"), true); + setGlobally(ConfigurationType::ToStandardOutput, std::string("true"), true); + setGlobally(ConfigurationType::MillisecondsWidth, std::string("3"), true); + setGlobally(ConfigurationType::PerformanceTracking, std::string("true"), true); + setGlobally(ConfigurationType::MaxLogFileSize, std::string("0"), true); + setGlobally(ConfigurationType::LogFlushThreshold, std::string("0"), true); + + setGlobally(ConfigurationType::Format, std::string("%datetime %level [%logger] %msg"), true); + set(Level::Debug, ConfigurationType::Format, std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); + // INFO and WARNING are set to default by Level::Global + set(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + set(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + set(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); + set(Level::Trace, ConfigurationType::Format, std::string("%datetime %level [%logger] [%func] [%loc] %msg")); + } + + /// @brief Lets you set the remaining configurations to default. + /// + /// @detail By remaining, it means that the level/type a configuration does not exist for. + /// This function is useful when you want to minimize chances of failures, e.g, if you have a configuration file that sets + /// configuration for all the configurations except for Enabled or not, we use this so that ENABLED is set to default i.e, + /// true. If you dont do this explicitley (either by calling this function or by using second param in Constructor + /// and try to access a value, an error is thrown + void setRemainingToDefault(void) { + base::threading::ScopedLock scopedLock(lock()); + unsafeSetIfNotExist(Level::Global, ConfigurationType::Enabled, std::string("true")); +#if !defined(ELPP_NO_DEFAULT_LOG_FILE) + unsafeSetIfNotExist(Level::Global, ConfigurationType::Filename, std::string(base::consts::kDefaultLogFile)); +#endif // !defined(ELPP_NO_DEFAULT_LOG_FILE) + unsafeSetIfNotExist(Level::Global, ConfigurationType::ToFile, std::string("true")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::ToStandardOutput, std::string("true")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::MillisecondsWidth, std::string("3")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::PerformanceTracking, std::string("true")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::MaxLogFileSize, std::string("0")); + unsafeSetIfNotExist(Level::Global, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Debug, ConfigurationType::Format, + std::string("%datetime %level [%logger] [%user@%host] [%func] [%loc] %msg")); + // INFO and WARNING are set to default by Level::Global + unsafeSetIfNotExist(Level::Error, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Fatal, ConfigurationType::Format, std::string("%datetime %level [%logger] %msg")); + unsafeSetIfNotExist(Level::Verbose, ConfigurationType::Format, std::string("%datetime %level-%vlevel [%logger] %msg")); + unsafeSetIfNotExist(Level::Trace, ConfigurationType::Format, std::string("%datetime %level [%logger] [%func] [%loc] %msg")); + } + + /// @brief Parser used internally to parse configurations from file or text. + /// + /// @detail This class makes use of base::utils::Str. + /// You should not need this unless you are working on some tool for Easylogging++ + class Parser : base::StaticClass { + public: + /// @brief Parses configuration from file. + /// @param configurationFile Full path to configuration file + /// @param sender Sender configurations pointer. Usually 'this' is used from calling class + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration file. + /// @return True if successfully parsed, false otherwise. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you + /// do not proceed without successful parse. + static bool parseFromFile(const std::string& configurationFile, Configurations* sender, Configurations* base = nullptr) { + sender->setFromBase(base); + std::ifstream fileStream_(configurationFile.c_str(), std::ifstream::in); + ELPP_ASSERT(fileStream_.is_open(), "Unable to open configuration file [" << configurationFile << "] for parsing."); + bool parsedSuccessfully = false; + std::string line = std::string(); + Level currLevel = Level::Unknown; + std::string currConfigStr = std::string(); + std::string currLevelStr = std::string(); + while (fileStream_.good()) { + std::getline(fileStream_, line); + parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); + ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); + } + return parsedSuccessfully; + } + + /// @brief Parse configurations from configuration string. + /// + /// @detail This configuration string has same syntax as configuration file contents. Make sure all the necessary + /// new line characters are provided. You may define '_STOP_ON_FIRSTELPP_ASSERTION' to make sure you + /// do not proceed without successful parse (This is recommended) + /// @param configurationsString + /// @param sender Sender configurations pointer. Usually 'this' is used from calling class + /// @param base Configurations to base new configuration repository off. This value is used when you want to use + /// existing Configurations to base all the values and then set rest of configuration via configuration text. + /// @return True if successfully parsed, false otherwise. + static bool parseFromText(const std::string& configurationsString, Configurations* sender, Configurations* base = nullptr) { + sender->setFromBase(base); + bool parsedSuccessfully = false; + std::stringstream ss(configurationsString); + std::string line = std::string(); + Level currLevel = Level::Unknown; + std::string currConfigStr = std::string(); + std::string currLevelStr = std::string(); + while (std::getline(ss, line)) { + parsedSuccessfully = parseLine(&line, &currConfigStr, &currLevelStr, &currLevel, sender); + ELPP_ASSERT(parsedSuccessfully, "Unable to parse configuration line: " << line); + } + return parsedSuccessfully; + } + + private: + friend class el::Loggers; + static void ignoreComments(std::string* line) { + std::size_t foundAt = 0; + std::size_t quotesStart = line->find("\""); + std::size_t quotesEnd = std::string::npos; + if (quotesStart != std::string::npos) { + quotesEnd = line->find("\"", quotesStart + 1); + while (quotesEnd != std::string::npos && line->at(quotesEnd - 1) == '\\') { + // Do not erase slash yet - we will erase it in parseLine(..) while loop + quotesEnd = line->find("\"", quotesEnd + 2); + } + } + if ((foundAt = line->find(base::consts::kConfigurationComment)) != std::string::npos) { + if (foundAt < quotesEnd) { + foundAt = line->find(base::consts::kConfigurationComment, quotesEnd + 1); + } + *line = line->substr(0, foundAt); + } + } + static inline bool isLevel(const std::string& line) { + return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLevel)); + } + + static inline bool isComment(const std::string& line) { + return base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationComment)); + } + + static inline bool isConfig(const std::string& line) { + std::size_t assignment = line.find('='); + return line != "" && + (line[0] >= 65 || line[0] <= 90 || line[0] >= 97 || line[0] <= 122) && + (assignment != std::string::npos) && + (line.size() > assignment); + } + + static bool parseLine(std::string* line, std::string* currConfigStr, std::string* currLevelStr, Level* currLevel, Configurations* conf) { + ConfigurationType currConfig = ConfigurationType::Unknown; + std::string currValue = std::string(); + *line = base::utils::Str::trim(*line); + if (isComment(*line)) return true; + ignoreComments(line); + *line = base::utils::Str::trim(*line); + if (line->empty()) { + // Comment ignored + return true; + } + if (isLevel(*line)) { + if (line->size() <= 2) { + return true; + } + *currLevelStr = line->substr(1, line->size() - 2); + *currLevelStr = base::utils::Str::toUpper(*currLevelStr); + *currLevelStr = base::utils::Str::trim(*currLevelStr); + *currLevel = LevelHelper::convertFromString(currLevelStr->c_str()); + return true; + } + if (isConfig(*line)) { + std::size_t assignment = line->find('='); + *currConfigStr = line->substr(0, assignment); + *currConfigStr = base::utils::Str::toUpper(*currConfigStr); + *currConfigStr = base::utils::Str::trim(*currConfigStr); + currConfig = ConfigurationTypeHelper::convertFromString(currConfigStr->c_str()); + currValue = line->substr(assignment + 1); + currValue = base::utils::Str::trim(currValue); + std::size_t quotesStart = currValue.find("\"", 0); + std::size_t quotesEnd = std::string::npos; + if (quotesStart != std::string::npos) { + quotesEnd = currValue.find("\"", quotesStart + 1); + while (quotesEnd != std::string::npos && currValue.at(quotesEnd - 1) == '\\') { + currValue = currValue.erase(quotesEnd - 1, 1); + quotesEnd = currValue.find("\"", quotesEnd + 2); + } + } + if (quotesStart != std::string::npos && quotesEnd != std::string::npos) { + // Quote provided - check and strip if valid + ELPP_ASSERT((quotesStart < quotesEnd), "Configuration error - No ending quote found in [" + << currConfigStr << "]"); + ELPP_ASSERT((quotesStart + 1 != quotesEnd), "Empty configuration value for [" << currConfigStr << "]"); + if ((quotesStart != quotesEnd) && (quotesStart + 1 != quotesEnd)) { + // Explicit check in case if assertion is disabled + currValue = currValue.substr(quotesStart + 1, quotesEnd - 1); + } + } + } + ELPP_ASSERT(*currLevel != Level::Unknown, "Unrecognized severity level [" << *currLevelStr << "]"); + ELPP_ASSERT(currConfig != ConfigurationType::Unknown, "Unrecognized configuration [" << *currConfigStr << "]"); + if (*currLevel == Level::Unknown || currConfig == ConfigurationType::Unknown) { + return false; // unrecognizable level or config + } + conf->set(*currLevel, currConfig, currValue); + return true; + } + }; + + private: + std::string m_configurationFile; + bool m_isFromFile; + friend class el::Loggers; + + /// @brief Unsafely sets configuration if does not already exist + void unsafeSetIfNotExist(Level level, ConfigurationType configurationType, const std::string& value) { + Configuration* conf = RegistryWithPred::get(level, configurationType); + if (conf == nullptr) { + unsafeSet(level, configurationType, value); + } + } + + /// @brief Thread unsafe set + void unsafeSet(Level level, ConfigurationType configurationType, const std::string& value) { + Configuration* conf = RegistryWithPred::get(level, configurationType); + if (conf == nullptr) { + registerNew(new Configuration(level, configurationType, value)); + } + else { + conf->setValue(value); + } + if (level == Level::Global) { + unsafeSetGlobally(configurationType, value, false); + } + } + + /// @brief Sets configurations for all levels including Level::Global if includeGlobalLevel is true + /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) + void setGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel) { + if (includeGlobalLevel) { + set(Level::Global, configurationType, value); + } + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + set(LevelHelper::castFromInt(lIndex), configurationType, value); + return false; // Do not break lambda function yet as we need to set all levels regardless + }); + } + + /// @brief Sets configurations (Unsafely) for all levels including Level::Global if includeGlobalLevel is true + /// @see Configurations::setGlobally(ConfigurationType configurationType, const std::string& value) + void unsafeSetGlobally(ConfigurationType configurationType, const std::string& value, bool includeGlobalLevel) { + if (includeGlobalLevel) { + unsafeSet(Level::Global, configurationType, value); + } + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + unsafeSet(LevelHelper::castFromInt(lIndex), configurationType, value); + return false; // Do not break lambda function yet as we need to set all levels regardless + }); + } + }; + + namespace base { + typedef std::shared_ptr FileStreamPtr; + typedef std::map LogStreamsReferenceMap; + /// @brief Configurations with data types. + /// + /// @detail el::Configurations have string based values. This is whats used internally in order to read correct configurations. + /// This is to perform faster while writing logs using correct configurations. + /// + /// This is thread safe and final class containing non-virtual destructor (means nothing should inherit this class) + class TypedConfigurations : public base::threading::ThreadSafe { + public: + /// @brief Constructor to initialize (construct) the object off el::Configurations + /// @param configurations Configurations pointer/reference to base this typed configurations off. + /// @param logStreamsReference Use ELPP->registeredLoggers()->logStreamsReference() + TypedConfigurations(Configurations* configurations, base::LogStreamsReferenceMap* logStreamsReference) { + m_configurations = configurations; + m_logStreamsReference = logStreamsReference; + build(m_configurations); + } + + TypedConfigurations(const TypedConfigurations& other) { + this->m_configurations = other.m_configurations; + this->m_logStreamsReference = other.m_logStreamsReference; + build(m_configurations); + } + + virtual ~TypedConfigurations(void) { + } + + const Configurations* configurations(void) const { + return m_configurations; + } + + inline bool enabled(Level level) { + return getConfigByVal(level, &m_enabledMap, "enabled"); + } + + inline bool toFile(Level level) { + return getConfigByVal(level, &m_toFileMap, "toFile"); + } + + inline const std::string& filename(Level level) { + return getConfigByRef(level, &m_filenameMap, "filename"); + } + + inline bool toStandardOutput(Level level) { + return getConfigByVal(level, &m_toStandardOutputMap, "toStandardOutput"); + } + + inline const base::LogFormat& logFormat(Level level) { + return getConfigByRef(level, &m_logFormatMap, "logFormat"); + } + + inline const base::MillisecondsWidth& millisecondsWidth(Level level = Level::Global) { + return getConfigByRef(level, &m_millisecondsWidthMap, "millisecondsWidth"); + } + + inline bool performanceTracking(Level level = Level::Global) { + return getConfigByVal(level, &m_performanceTrackingMap, "performanceTracking"); + } + + inline base::type::fstream_t* fileStream(Level level) { + return getConfigByRef(level, &m_fileStreamMap, "fileStream").get(); + } + + inline std::size_t maxLogFileSize(Level level) { + return getConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); + } + + inline std::size_t logFlushThreshold(Level level) { + return getConfigByVal(level, &m_logFlushThresholdMap, "logFlushThreshold"); + } + + private: + Configurations* m_configurations; + std::map m_enabledMap; + std::map m_toFileMap; + std::map m_filenameMap; + std::map m_toStandardOutputMap; + std::map m_logFormatMap; + std::map m_millisecondsWidthMap; + std::map m_performanceTrackingMap; + std::map m_fileStreamMap; + std::map m_maxLogFileSizeMap; + std::map m_logFlushThresholdMap; + base::LogStreamsReferenceMap* m_logStreamsReference; + + friend class el::Helpers; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::DefaultLogDispatchCallback; + friend class el::base::LogDispatcher; + + template + inline Conf_T getConfigByVal(Level level, const std::map* confMap, const char* confName) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeGetConfigByVal(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope + } + + template + inline Conf_T& getConfigByRef(Level level, std::map* confMap, const char* confName) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeGetConfigByRef(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope + } + + template + inline Conf_T unsafeGetConfigByVal(Level level, const std::map* confMap, const char* confName) { + ELPP_UNUSED(confName); + typename std::map::const_iterator it = confMap->find(level); + if (it == confMap->end()) { + try { + return confMap->at(Level::Global); + } + catch (...) { + ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" + << LevelHelper::convertToString(level) << "]" + << std::endl << "Please ensure you have properly configured logger.", false); + return Conf_T(); + } + } + return it->second; + } + + template + inline Conf_T& unsafeGetConfigByRef(Level level, std::map* confMap, const char* confName) { + ELPP_UNUSED(confName); + typename std::map::iterator it = confMap->find(level); + if (it == confMap->end()) { + try { + return confMap->at(Level::Global); + } + catch (...) { + ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level [" + << LevelHelper::convertToString(level) << "]" + << std::endl << "Please ensure you have properly configured logger.", false); + } + } + return it->second; + } + + template + void setValue(Level level, const Conf_T& value, std::map* confMap, bool includeGlobalLevel = true) { + // If map is empty and we are allowed to add into generic level (Level::Global), do it! + if (confMap->empty() && includeGlobalLevel) { + confMap->insert(std::make_pair(Level::Global, value)); + return; + } + // If same value exist in generic level already, dont add it to explicit level + typename std::map::iterator it = confMap->find(Level::Global); + if (it != confMap->end() && it->second == value) { + return; + } + // Now make sure we dont double up values if we really need to add it to explicit level + it = confMap->find(level); + if (it == confMap->end()) { + // Value not found for level, add new + confMap->insert(std::make_pair(level, value)); + } + else { + // Value found, just update value + confMap->at(level) = value; + } + } + + void build(Configurations* configurations) { + base::threading::ScopedLock scopedLock(lock()); + auto getBool = [](std::string boolStr) -> bool { // Pass by value for trimming + base::utils::Str::trim(boolStr); + return (boolStr == "TRUE" || boolStr == "true" || boolStr == "1"); + }; + std::vector withFileSizeLimit; + for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { + Configuration* conf = *it; + // We cannot use switch on strong enums because Intel C++ dont support them yet + if (conf->configurationType() == ConfigurationType::Enabled) { + setValue(conf->level(), getBool(conf->value()), &m_enabledMap); + } + else if (conf->configurationType() == ConfigurationType::ToFile) { + setValue(conf->level(), getBool(conf->value()), &m_toFileMap); + } + else if (conf->configurationType() == ConfigurationType::ToStandardOutput) { + setValue(conf->level(), getBool(conf->value()), &m_toStandardOutputMap); + } + else if (conf->configurationType() == ConfigurationType::Filename) { + // We do not yet configure filename but we will configure in another + // loop. This is because if file cannot be created, we will force ToFile + // to be false. Because configuring logger is not necessarily performance + // sensative operation, we can live with another loop; (by the way this loop + // is not very heavy either) + } + else if (conf->configurationType() == ConfigurationType::Format) { + setValue(conf->level(), base::LogFormat(conf->level(), + base::type::string_t(conf->value().begin(), conf->value().end())), &m_logFormatMap); + } + else if (conf->configurationType() == ConfigurationType::MillisecondsWidth) { + setValue(Level::Global, + base::MillisecondsWidth(static_cast(getULong(conf->value()))), &m_millisecondsWidthMap); + } + else if (conf->configurationType() == ConfigurationType::PerformanceTracking) { + setValue(Level::Global, getBool(conf->value()), &m_performanceTrackingMap); + } + else if (conf->configurationType() == ConfigurationType::MaxLogFileSize) { + setValue(conf->level(), static_cast(getULong(conf->value())), &m_maxLogFileSizeMap); +#if !defined(ELPP_NO_DEFAULT_LOG_FILE) + withFileSizeLimit.push_back(conf); +#endif // !defined(ELPP_NO_DEFAULT_LOG_FILE) + } + else if (conf->configurationType() == ConfigurationType::LogFlushThreshold) { + setValue(conf->level(), static_cast(getULong(conf->value())), &m_logFlushThresholdMap); + } + } + // As mentioned early, we will now set filename configuration in separate loop to deal with non-existent files + for (Configurations::const_iterator it = configurations->begin(); it != configurations->end(); ++it) { + Configuration* conf = *it; + if (conf->configurationType() == ConfigurationType::Filename) { + insertFile(conf->level(), conf->value()); + } + } + for (std::vector::iterator conf = withFileSizeLimit.begin(); + conf != withFileSizeLimit.end(); ++conf) { + // This is not unsafe as mutex is locked in currect scope + unsafeValidateFileRolling((*conf)->level(), base::defaultPreRollOutCallback); + } + } + + unsigned long getULong(std::string confVal) { + bool valid = true; + base::utils::Str::trim(confVal); + valid = !confVal.empty() && std::find_if(confVal.begin(), confVal.end(), + [](char c) { return !base::utils::Str::isDigit(c); }) == confVal.end(); + if (!valid) { + valid = false; + ELPP_ASSERT(valid, "Configuration value not a valid integer [" << confVal << "]"); + return 0; + } + return atol(confVal.c_str()); + } + + std::string resolveFilename(const std::string& filename) { + std::string resultingFilename = filename; + std::size_t dateIndex = std::string::npos; + std::string dateTimeFormatSpecifierStr = std::string(base::consts::kDateTimeFormatSpecifierForFilename); + if ((dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str())) != std::string::npos) { + while (dateIndex > 0 && resultingFilename[dateIndex - 1] == base::consts::kFormatSpecifierChar) { + dateIndex = resultingFilename.find(dateTimeFormatSpecifierStr.c_str(), dateIndex + 1); + } + if (dateIndex != std::string::npos) { + const char* ptr = resultingFilename.c_str() + dateIndex; + // Goto end of specifier + ptr += dateTimeFormatSpecifierStr.size(); + std::string fmt; + if ((resultingFilename.size() > dateIndex) && (ptr[0] == '{')) { + // User has provided format for date/time + ++ptr; + int count = 1; // Start by 1 in order to remove starting brace + std::stringstream ss; + for (; *ptr; ++ptr, ++count) { + if (*ptr == '}') { + ++count; // In order to remove ending brace + break; + } + ss << *ptr; + } + resultingFilename.erase(dateIndex + dateTimeFormatSpecifierStr.size(), count); + fmt = ss.str(); + } + else { + fmt = std::string(base::consts::kDefaultDateTimeFormatInFilename); + } + base::MillisecondsWidth msWidth(3); + std::string now = base::utils::DateTime::getDateTime(fmt.c_str(), &msWidth); + base::utils::Str::replaceAll(now, '/', '-'); // Replace path element since we are dealing with filename + base::utils::Str::replaceAll(resultingFilename, dateTimeFormatSpecifierStr, now); + } + } + return resultingFilename; + } + + void insertFile(Level level, const std::string& fullFilename) { + std::string resolvedFilename = resolveFilename(fullFilename); + if (resolvedFilename.empty()) { + std::cerr << "Could not load empty file for logging, please re-check your configurations for level [" + << LevelHelper::convertToString(level) << "]"; + } + std::string filePath = base::utils::File::extractPathFromFilename(resolvedFilename, base::consts::kFilePathSeperator); + if (filePath.size() < resolvedFilename.size()) { + base::utils::File::createPath(filePath); + } + auto create = [&](Level level) { + base::LogStreamsReferenceMap::iterator filestreamIter = m_logStreamsReference->find(resolvedFilename); + base::type::fstream_t* fs = nullptr; + if (filestreamIter == m_logStreamsReference->end()) { + // We need a completely new stream, nothing to share with + fs = base::utils::File::newFileStream(resolvedFilename); + m_filenameMap.insert(std::make_pair(level, resolvedFilename)); + m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(fs))); + m_logStreamsReference->insert(std::make_pair(resolvedFilename, base::FileStreamPtr(m_fileStreamMap.at(level)))); + } + else { + // Woops! we have an existing one, share it! + m_filenameMap.insert(std::make_pair(level, filestreamIter->first)); + m_fileStreamMap.insert(std::make_pair(level, base::FileStreamPtr(filestreamIter->second))); + fs = filestreamIter->second.get(); + } + if (fs == nullptr) { + // We display bad file error from newFileStream() + ELPP_INTERNAL_ERROR("Setting [TO_FILE] of [" + << LevelHelper::convertToString(level) << "] to FALSE", false); + setValue(level, false, &m_toFileMap); + } + }; + // If we dont have file conf for any level, create it for Level::Global first + // otherwise create for specified level + create(m_filenameMap.empty() && m_fileStreamMap.empty() ? Level::Global : level); + } + + bool unsafeValidateFileRolling(Level level, const PreRollOutCallback& PreRollOutCallback) { + base::type::fstream_t* fs = unsafeGetConfigByRef(level, &m_fileStreamMap, "fileStream").get(); + if (fs == nullptr) { + return true; + } + std::size_t maxLogFileSize = unsafeGetConfigByVal(level, &m_maxLogFileSizeMap, "maxLogFileSize"); + std::size_t currFileSize = base::utils::File::getSizeOfFile(fs); + if (maxLogFileSize != 0 && currFileSize >= maxLogFileSize) { + std::string fname = unsafeGetConfigByRef(level, &m_filenameMap, "filename"); + ELPP_INTERNAL_INFO(1, "Truncating log file [" << fname << "] as a result of configurations for level [" + << LevelHelper::convertToString(level) << "]"); + fs->close(); + PreRollOutCallback(fname.c_str(), currFileSize); + fs->open(fname, std::fstream::out | std::fstream::trunc); + return true; + } + return false; + } + + bool validateFileRolling(Level level, const PreRollOutCallback& PreRollOutCallback) { + base::threading::ScopedLock scopedLock(lock()); + return unsafeValidateFileRolling(level, PreRollOutCallback); + } + }; + /// @brief Class that keeps record of current line hit for occasional logging + class HitCounter { + public: + HitCounter(void) : + m_filename(""), + m_lineNumber(0), + m_hitCounts(0) { + } + + HitCounter(const char* filename, unsigned long int lineNumber) : + m_filename(filename), + m_lineNumber(lineNumber), + m_hitCounts(0) { + } + + HitCounter(const HitCounter& hitCounter) : + m_filename(hitCounter.m_filename), + m_lineNumber(hitCounter.m_lineNumber), + m_hitCounts(hitCounter.m_hitCounts) { + } + + HitCounter& operator=(const HitCounter& hitCounter) { + m_filename = hitCounter.m_filename; + m_lineNumber = hitCounter.m_lineNumber; + m_hitCounts = hitCounter.m_hitCounts; + return *this; + } + + virtual ~HitCounter(void) { + } + + /// @brief Resets location of current hit counter + inline void resetLocation(const char* filename, unsigned long int lineNumber) { + m_filename = filename; + m_lineNumber = lineNumber; + } + + /// @brief Validates hit counts and resets it if necessary + inline void validateHitCounts(std::size_t n) { + if (m_hitCounts >= base::consts::kMaxLogPerCounter) { + m_hitCounts = (n >= 1 ? base::consts::kMaxLogPerCounter % n : 0); + } + ++m_hitCounts; + } + + inline const char* filename(void) const { + return m_filename; + } + + inline unsigned long int lineNumber(void) const { + return m_lineNumber; + } + + inline std::size_t hitCounts(void) const { + return m_hitCounts; + } + + inline void increment(void) { + ++m_hitCounts; + } + + class Predicate { + public: + Predicate(const char* filename, unsigned long int lineNumber) + : m_filename(filename), + m_lineNumber(lineNumber) { + } + inline bool operator()(const HitCounter* counter) { + return ((counter != nullptr) && + (strcmp(counter->m_filename, m_filename) == 0) && + (counter->m_lineNumber == m_lineNumber)); + } + + private: + const char* m_filename; + unsigned long int m_lineNumber; + }; + + private: + const char* m_filename; + unsigned long int m_lineNumber; + std::size_t m_hitCounts; + }; + /// @brief Repository for hit counters used across the application + class RegisteredHitCounters : public base::utils::RegistryWithPred { + public: + /// @brief Validates counter for every N, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateEveryN(const char* filename, unsigned long int lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + counter->validateHitCounts(n); + bool result = (n >= 1 && counter->hitCounts() != 0 && counter->hitCounts() % n == 0); + return result; + } + + /// @brief Validates counter for hits >= N, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateAfterN(const char* filename, unsigned long int lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + // Do not use validateHitCounts here since we do not want to reset counter here + // Note the >= instead of > because we are incrementing + // after this check + if (counter->hitCounts() >= n) + return true; + counter->increment(); + return false; + } + + /// @brief Validates counter for hits are <= n, i.e, registers new if does not exist otherwise updates original one + /// @return True if validation resulted in triggering hit. Meaning logs should be written everytime true is returned + bool validateNTimes(const char* filename, unsigned long int lineNumber, std::size_t n) { + base::threading::ScopedLock scopedLock(lock()); + base::HitCounter* counter = get(filename, lineNumber); + if (counter == nullptr) { + registerNew(counter = new base::HitCounter(filename, lineNumber)); + } + counter->increment(); + // Do not use validateHitCounts here since we do not want to reset counter here + if (counter->hitCounts() <= n) + return true; + return false; + } + + /// @brief Gets hit counter registered at specified position + inline const base::HitCounter* getCounter(const char* filename, unsigned long int lineNumber) { + base::threading::ScopedLock scopedLock(lock()); + return get(filename, lineNumber); + } + }; + /// @brief Action to be taken for dispatching + enum class DispatchAction : base::type::EnumType { + None = 1, NormalLog = 2, SysLog = 4 + }; + } // namespace base + template + class Callback : protected base::threading::ThreadSafe { + public: + Callback(void) : m_enabled(true) {} + inline bool enabled(void) const { return m_enabled; } + inline void setEnabled(bool enabled) { + base::threading::ScopedLock scopedLock(lock()); + m_enabled = enabled; + } + protected: + virtual void handle(const T* handlePtr) = 0; + private: + bool m_enabled; + }; + class LogDispatchData { + public: + LogDispatchData() : m_logMessage(nullptr), m_dispatchAction(base::DispatchAction::None) {} + inline const LogMessage* logMessage(void) const { return m_logMessage; } + inline base::DispatchAction dispatchAction(void) const { return m_dispatchAction; } + private: + LogMessage* m_logMessage; + base::DispatchAction m_dispatchAction; + friend class base::LogDispatcher; + + inline void setLogMessage(LogMessage* logMessage) { m_logMessage = logMessage; } + inline void setDispatchAction(base::DispatchAction dispatchAction) { m_dispatchAction = dispatchAction; } + }; + class LogDispatchCallback : public Callback { + private: + friend class base::LogDispatcher; + }; + class PerformanceTrackingCallback : public Callback { + private: + friend class base::PerformanceTracker; + }; + class LogBuilder : base::NoCopy { + public: + virtual ~LogBuilder(void) { ELPP_INTERNAL_INFO(3, "Destroying log builder...") } + virtual base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const = 0; + void convertToColoredOutput(base::type::string_t* logLine, Level level) { + if (!base::utils::s_termSupportsColor) return; + const base::type::char_t* resetColor = ELPP_LITERAL("\x1b[0m"); + if (level == Level::Error || level == Level::Fatal) + *logLine = ELPP_LITERAL("\x1b[31m") + *logLine + resetColor; + else if (level == Level::Warning) + *logLine = ELPP_LITERAL("\x1b[33m") + *logLine + resetColor; + } + private: + friend class el::base::DefaultLogDispatchCallback; + }; + typedef std::shared_ptr LogBuilderPtr; + /// @brief Represents a logger holding ID and configurations we need to write logs + /// + /// @detail This class does not write logs itself instead its used by writer to read configuations from. + class Logger : public base::threading::ThreadSafe, public Loggable { + public: + Logger(const std::string& id, base::LogStreamsReferenceMap* logStreamsReference) : + m_id(id), + m_typedConfigurations(nullptr), + m_parentApplicationName(std::string()), + m_isConfigured(false), + m_logStreamsReference(logStreamsReference) { + initUnflushedCount(); + } + + Logger(const std::string& id, const Configurations& configurations, base::LogStreamsReferenceMap* logStreamsReference) : + m_id(id), + m_typedConfigurations(nullptr), + m_parentApplicationName(std::string()), + m_isConfigured(false), + m_logStreamsReference(logStreamsReference) { + initUnflushedCount(); + configure(configurations); + } + + Logger(const Logger& logger) { + base::utils::safeDelete(m_typedConfigurations); + m_id = logger.m_id; + m_typedConfigurations = logger.m_typedConfigurations; + m_parentApplicationName = logger.m_parentApplicationName; + m_isConfigured = logger.m_isConfigured; + m_configurations = logger.m_configurations; + m_unflushedCount = logger.m_unflushedCount; + m_logStreamsReference = logger.m_logStreamsReference; + } + + Logger& operator=(const Logger& logger) { + base::utils::safeDelete(m_typedConfigurations); + m_id = logger.m_id; + m_typedConfigurations = logger.m_typedConfigurations; + m_parentApplicationName = logger.m_parentApplicationName; + m_isConfigured = logger.m_isConfigured; + m_configurations = logger.m_configurations; + m_unflushedCount = logger.m_unflushedCount; + m_logStreamsReference = logger.m_logStreamsReference; + return *this; + } + + virtual ~Logger(void) { + base::utils::safeDelete(m_typedConfigurations); + } + + virtual inline void log(el::base::type::ostream_t& os) const { + os << m_id.c_str(); + } + + /// @brief Configures the logger using specified configurations. + void configure(const Configurations& configurations) { + m_isConfigured = false; // we set it to false in case if we fail + initUnflushedCount(); + if (m_typedConfigurations != nullptr) { + Configurations* c = const_cast(m_typedConfigurations->configurations()); + if (c->hasConfiguration(Level::Global, ConfigurationType::Filename)) { + // This check is definitely needed for cases like ELPP_NO_DEFAULT_LOG_FILE + flush(); + } + } + base::threading::ScopedLock scopedLock(lock()); + if (m_configurations != configurations) { + m_configurations.setFromBase(const_cast(&configurations)); + } + base::utils::safeDelete(m_typedConfigurations); + m_typedConfigurations = new base::TypedConfigurations(&m_configurations, m_logStreamsReference); + resolveLoggerFormatSpec(); + m_isConfigured = true; + } + + /// @brief Reconfigures logger using existing configurations + inline void reconfigure(void) { + ELPP_INTERNAL_INFO(1, "Reconfiguring logger [" << m_id << "]"); + configure(m_configurations); + } + + inline const std::string& id(void) const { + return m_id; + } + + inline const std::string& parentApplicationName(void) const { + return m_parentApplicationName; + } + + inline void setParentApplicationName(const std::string& parentApplicationName) { + m_parentApplicationName = parentApplicationName; + } + + inline Configurations* configurations(void) { + return &m_configurations; + } + + inline base::TypedConfigurations* typedConfigurations(void) { + return m_typedConfigurations; + } + + static inline bool isValidId(const std::string& id) { + for (std::string::const_iterator it = id.begin(); it != id.end(); ++it) { + if (!base::utils::Str::contains(base::consts::kValidLoggerIdSymbols, *it)) { + return false; + } + } + return true; + } + /// @brief Flushes logger to sync all log files for all levels + inline void flush(void) { + ELPP_INTERNAL_INFO(3, "Flushing logger [" << m_id << "] all levels"); + base::threading::ScopedLock scopedLock(lock()); + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + flush(LevelHelper::castFromInt(lIndex), nullptr); + return false; + }); + } + + inline void flush(Level level, base::type::fstream_t* fs) { + if (fs == nullptr && m_typedConfigurations->toFile(level)) { + fs = m_typedConfigurations->fileStream(level); + } + if (fs != nullptr) { + fs->flush(); + m_unflushedCount.find(level)->second = 0; + } + } + + inline bool isFlushNeeded(Level level) { + return ++m_unflushedCount.find(level)->second >= m_typedConfigurations->logFlushThreshold(level); + } + + inline LogBuilder* logBuilder(void) const { + return m_logBuilder.get(); + } + + inline void setLogBuilder(const LogBuilderPtr& logBuilder) { + m_logBuilder = logBuilder; + } + + inline bool enabled(Level level) const { + return m_typedConfigurations->enabled(level); + } + +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED +# define LOGGER_LEVEL_WRITERS_SIGNATURES(FUNCTION_NAME)\ + template \ + inline void FUNCTION_NAME(const char*, const T&, const Args&...);\ + template \ + inline void FUNCTION_NAME(const T&); + + template + inline void verbose(int, const char*, const T&, const Args&...); + + template + inline void verbose(int, const T&); + + LOGGER_LEVEL_WRITERS_SIGNATURES(info) + LOGGER_LEVEL_WRITERS_SIGNATURES(debug) + LOGGER_LEVEL_WRITERS_SIGNATURES(warn) + LOGGER_LEVEL_WRITERS_SIGNATURES(error) + LOGGER_LEVEL_WRITERS_SIGNATURES(fatal) + LOGGER_LEVEL_WRITERS_SIGNATURES(trace) +# undef LOGGER_LEVEL_WRITERS_SIGNATURES +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED + private: + std::string m_id; + base::TypedConfigurations* m_typedConfigurations; + base::type::stringstream_t m_stream; + std::string m_parentApplicationName; + bool m_isConfigured; + Configurations m_configurations; + std::map m_unflushedCount; + base::LogStreamsReferenceMap* m_logStreamsReference; + LogBuilderPtr m_logBuilder; + + friend class el::LogMessage; + friend class el::Loggers; + friend class el::Helpers; + friend class el::base::RegisteredLoggers; + friend class el::base::DefaultLogDispatchCallback; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::PErrorWriter; + friend class el::base::Storage; + friend class el::base::PerformanceTracker; + friend class el::base::LogDispatcher; + + Logger(void); + +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED + template + void log_(Level, int, const char*, const T&, const Args&...); + + template + inline void log_(Level, int, const T&); + + template + void log(Level, const char*, const T&, const Args&...); + + template + inline void log(Level, const T&); +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED + + void initUnflushedCount(void) { + m_unflushedCount.clear(); + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + m_unflushedCount.insert(std::make_pair(LevelHelper::castFromInt(lIndex), 0)); + return false; + }); + } + + inline base::type::stringstream_t& stream(void) { + return m_stream; + } + + void resolveLoggerFormatSpec(void) const { + base::type::EnumType lIndex = LevelHelper::kMinValid; + LevelHelper::forEachLevel(&lIndex, [&](void) -> bool { + base::LogFormat* logFormat = + const_cast(&m_typedConfigurations->logFormat(LevelHelper::castFromInt(lIndex))); + base::utils::Str::replaceFirstWithEscape(logFormat->m_format, base::consts::kLoggerIdFormatSpecifier, m_id); + return false; + }); + } + }; + namespace base { + /// @brief Loggers repository + class RegisteredLoggers : public base::utils::Registry { + public: + explicit RegisteredLoggers(const LogBuilderPtr& defaultLogBuilder) : + m_defaultLogBuilder(defaultLogBuilder) { + m_defaultConfigurations.setToDefault(); + } + + virtual ~RegisteredLoggers(void) { + flushAll(); + } + + inline void setDefaultConfigurations(const Configurations& configurations) { + base::threading::ScopedLock scopedLock(lock()); + m_defaultConfigurations.setFromBase(const_cast(&configurations)); + } + + inline Configurations* defaultConfigurations(void) { + return &m_defaultConfigurations; + } + + Logger* get(const std::string& id, bool forceCreation = true) { + base::threading::ScopedLock scopedLock(lock()); + Logger* logger_ = base::utils::Registry::get(id); + if (logger_ == nullptr && forceCreation) { + bool validId = Logger::isValidId(id); + if (!validId) { + ELPP_ASSERT(validId, "Invalid logger ID [" << id << "]. Not registering this logger."); + return nullptr; + } + logger_ = new Logger(id, m_defaultConfigurations, &m_logStreamsReference); + logger_->m_logBuilder = m_defaultLogBuilder; + registerNew(id, logger_); + } + return logger_; + } + + bool remove(const std::string& id) { + if (id == "default") { + return false; + } + Logger* logger = base::utils::Registry::get(id); + if (logger != nullptr) { + unregister(logger); + } + return true; + } + + inline bool has(const std::string& id) { + return get(id, false) != nullptr; + } + + inline void unregister(Logger*& logger) { + base::threading::ScopedLock scopedLock(lock()); + base::utils::Registry::unregister(logger->id()); + } + + inline base::LogStreamsReferenceMap* logStreamsReference(void) { + return &m_logStreamsReference; + } + + inline void flushAll(void) { + ELPP_INTERNAL_INFO(1, "Flushing all log files"); + base::threading::ScopedLock scopedLock(lock()); + for (base::LogStreamsReferenceMap::iterator it = m_logStreamsReference.begin(); + it != m_logStreamsReference.end(); ++it) { + if (it->second.get() == nullptr) continue; + it->second->flush(); + } + } + + private: + LogBuilderPtr m_defaultLogBuilder; + Configurations m_defaultConfigurations; + base::LogStreamsReferenceMap m_logStreamsReference; + friend class el::base::Storage; + }; + /// @brief Represents registries for verbose logging + class VRegistry : base::NoCopy, public base::threading::ThreadSafe { + public: + explicit VRegistry(base::type::VerboseLevel level, base::type::EnumType* pFlags) : m_level(level), m_pFlags(pFlags) { + } + + /// @brief Sets verbose level. Accepted range is 0-9 + inline void setLevel(base::type::VerboseLevel level) { + base::threading::ScopedLock scopedLock(lock()); + if (level < 0) + m_level = 0; + else if (level > 9) + m_level = base::consts::kMaxVerboseLevel; + else + m_level = level; + } + + inline base::type::VerboseLevel level(void) const { + return m_level; + } + + inline void clearModules(void) { + base::threading::ScopedLock scopedLock(lock()); + m_modules.clear(); + } + + void setModules(const char* modules) { + base::threading::ScopedLock scopedLock(lock()); + auto addSuffix = [](std::stringstream& ss, const char* sfx, const char* prev) { + if (prev != nullptr && base::utils::Str::endsWith(ss.str(), std::string(prev))) { + std::string chr(ss.str().substr(0, ss.str().size() - strlen(prev))); + ss.str(std::string("")); + ss << chr; + } + if (base::utils::Str::endsWith(ss.str(), std::string(sfx))) { + std::string chr(ss.str().substr(0, ss.str().size() - strlen(sfx))); + ss.str(std::string("")); + ss << chr; + } + ss << sfx; + }; + auto insert = [&](std::stringstream& ss, base::type::VerboseLevel level) { + if (!base::utils::hasFlag(LoggingFlag::DisableVModulesExtensions, *m_pFlags)) { + addSuffix(ss, ".h", nullptr); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".c", ".h"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cpp", ".c"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cc", ".cpp"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".cxx", ".cc"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".-inl.h", ".cxx"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hxx", ".-inl.h"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hpp", ".hxx"); + m_modules.insert(std::make_pair(ss.str(), level)); + addSuffix(ss, ".hh", ".hpp"); + } + m_modules.insert(std::make_pair(ss.str(), level)); + }; + bool isMod = true; + bool isLevel = false; + std::stringstream ss; + int level = -1; + for (; *modules; ++modules) { + switch (*modules) { + case '=': + isLevel = true; + isMod = false; + break; + case ',': + isLevel = false; + isMod = true; + if (!ss.str().empty() && level != -1) { + insert(ss, level); + ss.str(std::string("")); + level = -1; + } + break; + default: + if (isMod) { + ss << *modules; + } + else if (isLevel) { + if (isdigit(*modules)) { + level = static_cast(*modules) - 48; + } + } + break; + } + } + if (!ss.str().empty() && level != -1) { + insert(ss, level); + } + } + + bool allowed(base::type::VerboseLevel vlevel, const char* file) { + base::threading::ScopedLock scopedLock(lock()); + if (m_modules.empty() || file == nullptr) { + return vlevel <= m_level; + } + else { + std::map::iterator it = m_modules.begin(); + for (; it != m_modules.end(); ++it) { + if (base::utils::Str::wildCardMatch(file, it->first.c_str())) { + return vlevel <= it->second; + } + } + if (base::utils::hasFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified, *m_pFlags)) { + return true; + } + return false; + } + } + + inline const std::map& modules(void) const { + return m_modules; + } + + void setFromArgs(const base::utils::CommandLineArgs* commandLineArgs) { + if (commandLineArgs->hasParam("-v") || commandLineArgs->hasParam("--verbose") || + commandLineArgs->hasParam("-V") || commandLineArgs->hasParam("--VERBOSE")) { + setLevel(base::consts::kMaxVerboseLevel); + } + else if (commandLineArgs->hasParamWithValue("--v")) { + setLevel(atoi(commandLineArgs->getParamValue("--v"))); + } + else if (commandLineArgs->hasParamWithValue("--V")) { + setLevel(atoi(commandLineArgs->getParamValue("--V"))); + } + else if ((commandLineArgs->hasParamWithValue("-vmodule")) && vModulesEnabled()) { + setModules(commandLineArgs->getParamValue("-vmodule")); + } + else if (commandLineArgs->hasParamWithValue("-VMODULE") && vModulesEnabled()) { + setModules(commandLineArgs->getParamValue("-VMODULE")); + } + } + + /// @brief Whether or not vModules enabled + inline bool vModulesEnabled(void) { + return !base::utils::hasFlag(LoggingFlag::DisableVModules, *m_pFlags); + } + + private: + base::type::VerboseLevel m_level; + base::type::EnumType* m_pFlags; + std::map m_modules; + }; + } // namespace base + class LogMessage { + public: + LogMessage(Level level, const std::string& file, unsigned long int line, const std::string& func, + base::type::VerboseLevel verboseLevel, Logger* logger) : + m_level(level), m_file(file), m_line(line), m_func(func), + m_verboseLevel(verboseLevel), m_logger(logger), m_message(std::move(logger->stream().str())) { + } + inline Level level(void) const { return m_level; } + inline const std::string& file(void) const { return m_file; } + inline unsigned long int line(void) const { return m_line; } // NOLINT + inline const std::string& func(void) const { return m_func; } + inline base::type::VerboseLevel verboseLevel(void) const { return m_verboseLevel; } + inline Logger* logger(void) const { return m_logger; } + inline const base::type::string_t& message(void) const { return m_message; } + private: + Level m_level; + std::string m_file; + unsigned long int m_line; + std::string m_func; + base::type::VerboseLevel m_verboseLevel; + Logger* m_logger; + base::type::string_t m_message; + }; + namespace base { +#if ELPP_ASYNC_LOGGING + class AsyncLogItem { + public: + explicit AsyncLogItem(const LogMessage& logMessage, const LogDispatchData& data, const base::type::string_t& logLine) + : m_logMessage(logMessage), m_dispatchData(data), m_logLine(logLine) {} + virtual ~AsyncLogItem() {} + inline LogMessage* logMessage(void) { return &m_logMessage; } + inline LogDispatchData* data(void) { return &m_dispatchData; } + inline base::type::string_t logLine(void) { return m_logLine; } + private: + LogMessage m_logMessage; + LogDispatchData m_dispatchData; + base::type::string_t m_logLine; + }; + class AsyncLogQueue : public base::threading::ThreadSafe { + public: + virtual ~AsyncLogQueue() { + ELPP_INTERNAL_INFO(6, "~AsyncLogQueue"); + } + + inline AsyncLogItem next(void) { + base::threading::ScopedLock scopedLock(lock()); + AsyncLogItem result = m_queue.front(); + m_queue.pop(); + return result; + } + + inline void push(const AsyncLogItem& item) { + base::threading::ScopedLock scopedLock(lock()); + m_queue.push(item); + } + inline void pop(void) { + base::threading::ScopedLock scopedLock(lock()); + m_queue.pop(); + } + inline AsyncLogItem front(void) { + base::threading::ScopedLock scopedLock(lock()); + return m_queue.front(); + } + inline bool empty(void) { + base::threading::ScopedLock scopedLock(lock()); + return m_queue.empty(); + } + private: + std::queue m_queue; + }; + class IWorker { + public: + virtual ~IWorker() {} + virtual void start() = 0; + }; +#endif // ELPP_ASYNC_LOGGING + /// @brief Easylogging++ management storage + class Storage : base::NoCopy, public base::threading::ThreadSafe { + public: +#if ELPP_ASYNC_LOGGING + Storage(const LogBuilderPtr& defaultLogBuilder, base::IWorker* asyncDispatchWorker) : +#else + explicit Storage(const LogBuilderPtr& defaultLogBuilder) : +#endif // ELPP_ASYNC_LOGGING + m_registeredHitCounters(new base::RegisteredHitCounters()), + m_registeredLoggers(new base::RegisteredLoggers(defaultLogBuilder)), + m_flags(0x0), + m_vRegistry(new base::VRegistry(0, &m_flags)), +#if ELPP_ASYNC_LOGGING + m_asyncLogQueue(new base::AsyncLogQueue()), + m_asyncDispatchWorker(asyncDispatchWorker), +#endif // ELPP_ASYNC_LOGGING + m_preRollOutCallback(base::defaultPreRollOutCallback) { + // Register default logger + m_registeredLoggers->get(std::string(base::consts::kDefaultLoggerId)); + // Register performance logger and reconfigure format + Logger* performanceLogger = m_registeredLoggers->get(std::string(base::consts::kPerformanceLoggerId)); + performanceLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%datetime %level %msg")); + performanceLogger->reconfigure(); +#if defined(ELPP_SYSLOG) + // Register syslog logger and reconfigure format + Logger* sysLogLogger = m_registeredLoggers->get(std::string(base::consts::kSysLogLoggerId)); + sysLogLogger->configurations()->setGlobally(ConfigurationType::Format, std::string("%level: %msg")); + sysLogLogger->reconfigure(); +#else + ELPP_UNUSED(base::consts::kSysLogLoggerId); +#endif // defined(ELPP_SYSLOG) + addFlag(LoggingFlag::AllowVerboseIfModuleNotSpecified); +#if ELPP_ASYNC_LOGGING + installLogDispatchCallback(std::string("AsyncLogDispatchCallback")); +#else + installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); +#endif // ELPP_ASYNC_LOGGING + installPerformanceTrackingCallback(std::string("DefaultPerformanceTrackingCallback")); + ELPP_INTERNAL_INFO(1, "Easylogging++ has been initialized"); +#if ELPP_ASYNC_LOGGING + m_asyncDispatchWorker->start(); +#endif // ELPP_ASYNC_LOGGING + } + + virtual ~Storage(void) { + ELPP_INTERNAL_INFO(4, "Destroying storage"); +#if ELPP_ASYNC_LOGGING + ELPP_INTERNAL_INFO(5, "Replacing log dispatch callback to synchronous"); + uninstallLogDispatchCallback(std::string("AsyncLogDispatchCallback")); + installLogDispatchCallback(std::string("DefaultLogDispatchCallback")); + ELPP_INTERNAL_INFO(5, "Destroying asyncDispatchWorker"); + base::utils::safeDelete(m_asyncDispatchWorker); + ELPP_INTERNAL_INFO(5, "Destroying asyncLogQueue"); + base::utils::safeDelete(m_asyncLogQueue); +#endif // ELPP_ASYNC_LOGGING + ELPP_INTERNAL_INFO(5, "Destroying registeredHitCounters"); + base::utils::safeDelete(m_registeredHitCounters); + ELPP_INTERNAL_INFO(5, "Destroying registeredLoggers"); + base::utils::safeDelete(m_registeredLoggers); + ELPP_INTERNAL_INFO(5, "Destroying vRegistry"); + base::utils::safeDelete(m_vRegistry); + } + + inline bool validateEveryNCounter(const char* filename, unsigned long int lineNumber, std::size_t occasion) { + return hitCounters()->validateEveryN(filename, lineNumber, occasion); + } + + inline bool validateAfterNCounter(const char* filename, unsigned long int lineNumber, std::size_t n) { // NOLINT + return hitCounters()->validateAfterN(filename, lineNumber, n); + } + + inline bool validateNTimesCounter(const char* filename, unsigned long int lineNumber, std::size_t n) { // NOLINT + return hitCounters()->validateNTimes(filename, lineNumber, n); + } + + inline base::RegisteredHitCounters* hitCounters(void) const { + return m_registeredHitCounters; + } + + inline base::RegisteredLoggers* registeredLoggers(void) const { + return m_registeredLoggers; + } + + inline base::VRegistry* vRegistry(void) const { + return m_vRegistry; + } + +#if ELPP_ASYNC_LOGGING + inline base::AsyncLogQueue* asyncLogQueue(void) const { + return m_asyncLogQueue; + } +#endif // ELPP_ASYNC_LOGGING + + inline const base::utils::CommandLineArgs* commandLineArgs(void) const { + return &m_commandLineArgs; + } + + inline void addFlag(LoggingFlag flag) { + base::utils::addFlag(flag, &m_flags); + } + + inline void removeFlag(LoggingFlag flag) { + base::utils::removeFlag(flag, &m_flags); + } + + inline bool hasFlag(LoggingFlag flag) const { + return base::utils::hasFlag(flag, m_flags); + } + + inline base::type::EnumType flags(void) const { + return m_flags; + } + + inline void setFlags(base::type::EnumType flags) { + m_flags = flags; + } + + inline void setPreRollOutCallback(const PreRollOutCallback& callback) { + m_preRollOutCallback = callback; + } + + inline void unsetPreRollOutCallback(void) { + m_preRollOutCallback = base::defaultPreRollOutCallback; + } + + inline PreRollOutCallback& preRollOutCallback(void) { + return m_preRollOutCallback; + } + + inline bool hasCustomFormatSpecifier(const char* formatSpecifier) { + base::threading::ScopedLock scopedLock(lock()); + return std::find(m_customFormatSpecifiers.begin(), m_customFormatSpecifiers.end(), + formatSpecifier) != m_customFormatSpecifiers.end(); + } + + inline void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { + if (hasCustomFormatSpecifier(customFormatSpecifier.formatSpecifier())) { + return; + } + base::threading::ScopedLock scopedLock(lock()); + m_customFormatSpecifiers.push_back(customFormatSpecifier); + } + + inline bool uninstallCustomFormatSpecifier(const char* formatSpecifier) { + base::threading::ScopedLock scopedLock(lock()); + std::vector::iterator it = std::find(m_customFormatSpecifiers.begin(), + m_customFormatSpecifiers.end(), formatSpecifier); + if (it != m_customFormatSpecifiers.end() && strcmp(formatSpecifier, it->formatSpecifier()) == 0) { + m_customFormatSpecifiers.erase(it); + return true; + } + return false; + } + + const std::vector* customFormatSpecifiers(void) const { + return &m_customFormatSpecifiers; + } + + inline void setLoggingLevel(Level level) { + m_loggingLevel = level; + } + + template + inline bool installLogDispatchCallback(const std::string& id) { + return installCallback(id, &m_logDispatchCallbacks); + } + + template + inline void uninstallLogDispatchCallback(const std::string& id) { + uninstallCallback(id, &m_logDispatchCallbacks); + } + template + inline T* logDispatchCallback(const std::string& id) { + return callback(id, &m_logDispatchCallbacks); + } + + template + inline bool installPerformanceTrackingCallback(const std::string& id) { + return installCallback(id, &m_performanceTrackingCallbacks); + } + + template + inline void uninstallPerformanceTrackingCallback(const std::string& id) { + uninstallCallback(id, &m_performanceTrackingCallbacks); + } + + template + inline T* performanceTrackingCallback(const std::string& id) { + return callback(id, &m_performanceTrackingCallbacks); + } + private: + base::RegisteredHitCounters* m_registeredHitCounters; + base::RegisteredLoggers* m_registeredLoggers; + base::type::EnumType m_flags; + base::VRegistry* m_vRegistry; +#if ELPP_ASYNC_LOGGING + base::AsyncLogQueue* m_asyncLogQueue; + base::IWorker* m_asyncDispatchWorker; +#endif // ELPP_ASYNC_LOGGING + base::utils::CommandLineArgs m_commandLineArgs; + PreRollOutCallback m_preRollOutCallback; + std::map m_logDispatchCallbacks; + std::map m_performanceTrackingCallbacks; + std::vector m_customFormatSpecifiers; + Level m_loggingLevel; + + friend class el::Helpers; + friend class el::base::DefaultLogDispatchCallback; + friend class el::LogBuilder; + friend class el::base::MessageBuilder; + friend class el::base::Writer; + friend class el::base::PerformanceTracker; + friend class el::base::LogDispatcher; + + void setApplicationArguments(int argc, char** argv) { + m_commandLineArgs.setArgs(argc, argv); + m_vRegistry->setFromArgs(commandLineArgs()); + // default log file +#if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) + if (m_commandLineArgs.hasParamWithValue(base::consts::kDefaultLogFileParam)) { + Configurations c; + c.setGlobally(ConfigurationType::Filename, std::string(m_commandLineArgs.getParamValue(base::consts::kDefaultLogFileParam))); + registeredLoggers()->setDefaultConfigurations(c); + for (base::RegisteredLoggers::iterator it = registeredLoggers()->begin(); + it != registeredLoggers()->end(); ++it) { + it->second->configure(c); + } + } +#endif // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG) +#if defined(ELPP_LOGGING_FLAGS_FROM_ARG) + if (m_commandLineArgs.hasParamWithValue(base::consts::kLoggingFlagsParam)) { + m_flags = atoi(m_commandLineArgs.getParamValue(base::consts::kLoggingFlagsParam)); + } +#endif // defined(ELPP_LOGGING_FLAGS_FROM_ARG) + } + + inline void setApplicationArguments(int argc, const char** argv) { + setApplicationArguments(argc, const_cast(argv)); + } + + template + inline bool installCallback(const std::string& id, std::map* mapT) { + if (mapT->find(id) == mapT->end()) { + mapT->insert(std::make_pair(id, TPtr(new T()))); + return true; + } + return false; + } + + template + inline void uninstallCallback(const std::string& id, std::map* mapT) { + if (mapT->find(id) != mapT->end()) { + mapT->erase(id); + } + } + + template + inline T* callback(const std::string& id, std::map* mapT) { + typename std::map::iterator iter = mapT->find(id); + if (iter != mapT->end()) { + return static_cast(iter->second.get()); + } + return nullptr; + } + }; + extern ELPP_EXPORT base::type::StoragePointer elStorage; +#define ELPP el::base::elStorage + class DefaultLogDispatchCallback : public LogDispatchCallback { + protected: + void handle(const LogDispatchData* data) { + m_data = data; + dispatch(std::move(m_data->logMessage()->logger()->logBuilder()->build(m_data->logMessage(), + m_data->dispatchAction() == base::DispatchAction::NormalLog))); + } + private: + const LogDispatchData* m_data; + void dispatch(base::type::string_t&& logLine) { + if (m_data->dispatchAction() == base::DispatchAction::NormalLog) { + if (m_data->logMessage()->logger()->m_typedConfigurations->toFile(m_data->logMessage()->level())) { + base::type::fstream_t* fs = m_data->logMessage()->logger()->m_typedConfigurations->fileStream(m_data->logMessage()->level()); + if (fs != nullptr) { + fs->write(logLine.c_str(), logLine.size()); + if (fs->fail()) { + ELPP_INTERNAL_ERROR("Unable to write log to file [" + << m_data->logMessage()->logger()->m_typedConfigurations->filename(m_data->logMessage()->level()) << "].\n" + << "Few possible reasons (could be something else):\n" << " * Permission denied\n" + << " * Disk full\n" << " * Disk is not writable", true); + } + else { + if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) || (m_data->logMessage()->logger()->isFlushNeeded(m_data->logMessage()->level()))) { + m_data->logMessage()->logger()->flush(m_data->logMessage()->level(), fs); + } + } + } + else { + ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(m_data->logMessage()->level()) << "] " + << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " + << m_data->logMessage()->logger()->id() << "]", false); + } + } + if (m_data->logMessage()->logger()->m_typedConfigurations->toStandardOutput(m_data->logMessage()->level())) { + if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) + m_data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, m_data->logMessage()->level()); + ELPP_COUT << ELPP_COUT_LINE(logLine); + } + } +#if defined(ELPP_SYSLOG) + else if (m_data->dispatchAction() == base::DispatchAction::SysLog) { + // Determine syslog priority + int sysLogPriority = 0; + if (m_data->logMessage()->level() == Level::Fatal) + sysLogPriority = LOG_EMERG; + else if (m_data->logMessage()->level() == Level::Error) + sysLogPriority = LOG_ERR; + else if (m_data->logMessage()->level() == Level::Warning) + sysLogPriority = LOG_WARNING; + else if (m_data->logMessage()->level() == Level::Info) + sysLogPriority = LOG_INFO; + else if (m_data->logMessage()->level() == Level::Debug) + sysLogPriority = LOG_DEBUG; + else + sysLogPriority = LOG_NOTICE; +# if defined(ELPP_UNICODE) + char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); + syslog(sysLogPriority, "%s", line); + free(line); +# else + syslog(sysLogPriority, "%s", logLine.c_str()); +# endif + } +#endif // defined(ELPP_SYSLOG) + } + }; +#if ELPP_ASYNC_LOGGING + class AsyncLogDispatchCallback : public LogDispatchCallback { + protected: + void handle(const LogDispatchData* data) { + base::type::string_t logLine = data->logMessage()->logger()->logBuilder()->build(data->logMessage(), data->dispatchAction() == base::DispatchAction::NormalLog); + if (data->dispatchAction() == base::DispatchAction::NormalLog && data->logMessage()->logger()->typedConfigurations()->toStandardOutput(data->logMessage()->level())) { + if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput)) + data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, data->logMessage()->level()); + ELPP_COUT << ELPP_COUT_LINE(logLine); + } + // Save resources and only queue if we want to write to file otherwise just ignore handler + if (data->logMessage()->logger()->typedConfigurations()->toFile(data->logMessage()->level())) { + ELPP->asyncLogQueue()->push(AsyncLogItem(*(data->logMessage()), *data, logLine)); + } + } + }; + class AsyncDispatchWorker : public base::IWorker, public base::threading::ThreadSafe { + public: + AsyncDispatchWorker() { + setContinueRunning(false); + } + + virtual ~AsyncDispatchWorker() { + setContinueRunning(false); + ELPP_INTERNAL_INFO(6, "Stopping dispatch worker - Cleaning log queue"); + clean(); + ELPP_INTERNAL_INFO(6, "Log queue cleaned"); + } + + inline bool clean() { + std::mutex m; + std::unique_lock lk(m); + cv.wait(lk, [] { return !ELPP->asyncLogQueue()->empty(); }); + emptyQueue(); + lk.unlock(); + cv.notify_one(); + return ELPP->asyncLogQueue()->empty(); + } + + inline void emptyQueue() { + while (!ELPP->asyncLogQueue()->empty()) { + AsyncLogItem data = ELPP->asyncLogQueue()->next(); + handle(&data); + base::threading::msleep(100); + } + } + + virtual inline void start() { + base::threading::msleep(5000); // Wait extra few seconds + setContinueRunning(true); + std::thread t1(&AsyncDispatchWorker::runner, this); + t1.join(); + } + + void handle(AsyncLogItem* logItem) { + LogDispatchData* data = logItem->data(); + LogMessage* logMessage = logItem->logMessage(); + Logger* logger = logMessage->logger(); + base::TypedConfigurations* conf = logger->typedConfigurations(); + base::type::string_t logLine = logItem->logLine(); + if (data->dispatchAction() == base::DispatchAction::NormalLog) { + if (conf->toFile(logMessage->level())) { + base::type::fstream_t* fs = conf->fileStream(logMessage->level()); + if (fs != nullptr) { + fs->write(logLine.c_str(), logLine.size()); + if (fs->fail()) { + ELPP_INTERNAL_ERROR("Unable to write log to file [" + << conf->filename(logMessage->level()) << "].\n" + << "Few possible reasons (could be something else):\n" << " * Permission denied\n" + << " * Disk full\n" << " * Disk is not writable", true); + } + else { + if (ELPP->hasFlag(LoggingFlag::ImmediateFlush) || (logger->isFlushNeeded(logMessage->level()))) { + logger->flush(logMessage->level(), fs); + } + } + } + else { + ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(logMessage->level()) << "] " + << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: " << logger->id() << "]", false); + } + } + } +# if defined(ELPP_SYSLOG) + else if (data->dispatchAction() == base::DispatchAction::SysLog) { + // Determine syslog priority + int sysLogPriority = 0; + if (logMessage->level() == Level::Fatal) + sysLogPriority = LOG_EMERG; + else if (logMessage->level() == Level::Error) + sysLogPriority = LOG_ERR; + else if (logMessage->level() == Level::Warning) + sysLogPriority = LOG_WARNING; + else if (logMessage->level() == Level::Info) + sysLogPriority = LOG_INFO; + else if (logMessage->level() == Level::Debug) + sysLogPriority = LOG_DEBUG; + else + sysLogPriority = LOG_NOTICE; +# if defined(ELPP_UNICODE) + char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str()); + syslog(sysLogPriority, "%s", line); + free(line); +# else + syslog(sysLogPriority, "%s", logLine.c_str()); +# endif + } +# endif // defined(ELPP_SYSLOG) + } + + void run() { + while (continueRunning()) { + emptyQueue(); + base::threading::msleep(10); // 10ms + } + } + + static void* runner(void *context) { + static_cast(context)->run(); + return NULL; + } + + void setContinueRunning(bool value) { + base::threading::ScopedLock scopedLock(m_continueRunningMutex); + m_continueRunning = value; + } + bool continueRunning(void) { + return m_continueRunning; + } + private: + std::condition_variable cv; + bool m_continueRunning; + base::threading::Mutex m_continueRunningMutex; + }; +#endif // ELPP_ASYNC_LOGGING + } // namespace base + namespace base { + class DefaultLogBuilder : public LogBuilder { + public: + base::type::string_t build(const LogMessage* logMessage, bool appendNewLine) const { + base::TypedConfigurations* tc = logMessage->logger()->typedConfigurations(); + const base::LogFormat* logFormat = &tc->logFormat(logMessage->level()); + base::type::string_t logLine = logFormat->format(); + char buff[base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength] = ""; + const char* bufLim = buff + sizeof(buff); + if (logFormat->hasFlag(base::FormatFlags::AppName)) { + // App name + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kAppNameFormatSpecifier, + logMessage->logger()->parentApplicationName()); + } + if (logFormat->hasFlag(base::FormatFlags::ThreadId)) { + // Thread ID + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kThreadIdFormatSpecifier, + base::threading::getCurrentThreadId()); + } + if (logFormat->hasFlag(base::FormatFlags::DateTime)) { + // DateTime + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kDateTimeFormatSpecifier, + base::utils::DateTime::getDateTime(logFormat->dateTimeFormat().c_str(), + &tc->millisecondsWidth(logMessage->level()))); + } + if (logFormat->hasFlag(base::FormatFlags::Function)) { + // Function + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFunctionFormatSpecifier, logMessage->func()); + } + if (logFormat->hasFlag(base::FormatFlags::File)) { + // File + char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + buf = base::utils::Str::addToBuff(buff, buf, bufLim); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::FileBase)) { + // FileBase + char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceFilenameMaxLength); + base::utils::File::buildBaseFilename(logMessage->file(), buff); + buf = base::utils::Str::addToBuff(buff, buf, bufLim); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogFileBaseFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::Line)) { + // Line + char* buf = base::utils::Str::clearBuff(buff, base::consts::kSourceLineMaxLength); + buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), + base::consts::kSourceLineMaxLength, buf, bufLim, false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLineFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::Location)) { + // Location + char* buf = base::utils::Str::clearBuff(buff, + base::consts::kSourceFilenameMaxLength + base::consts::kSourceLineMaxLength); + base::utils::File::buildStrippedFilename(logMessage->file().c_str(), buff); + buf = base::utils::Str::addToBuff(buff, buf, bufLim); + buf = base::utils::Str::addToBuff(":", buf, bufLim); + buf = base::utils::Str::convertAndAddToBuff(logMessage->line(), + base::consts::kSourceLineMaxLength, buf, bufLim, false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kLogLocationFormatSpecifier, std::string(buff)); + } + if (logMessage->level() == Level::Verbose && logFormat->hasFlag(base::FormatFlags::VerboseLevel)) { + // Verbose level + char* buf = base::utils::Str::clearBuff(buff, 1); + buf = base::utils::Str::convertAndAddToBuff(logMessage->verboseLevel(), 1, buf, bufLim, false); + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kVerboseLevelFormatSpecifier, std::string(buff)); + } + if (logFormat->hasFlag(base::FormatFlags::LogMessage)) { + // Log message + base::utils::Str::replaceFirstWithEscape(logLine, base::consts::kMessageFormatSpecifier, logMessage->message()); + } +#if !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) + for (std::vector::const_iterator it = ELPP->customFormatSpecifiers()->begin(); + it != ELPP->customFormatSpecifiers()->end(); ++it) { + std::string fs(it->formatSpecifier()); + base::type::string_t wcsFormatSpecifier(fs.begin(), fs.end()); + base::utils::Str::replaceFirstWithEscape(logLine, wcsFormatSpecifier, std::string(it->resolver()())); + } +#endif // !defined(ELPP_DISABLE_CUSTOM_FORMAT_SPECIFIERS) + if (appendNewLine) logLine += ELPP_LITERAL("\n"); + return logLine; + } + }; + /// @brief Dispatches log messages + class LogDispatcher : base::NoCopy { + public: + LogDispatcher(bool proceed, LogMessage&& logMessage, base::DispatchAction dispatchAction) : + m_proceed(proceed), + m_logMessage(std::move(logMessage)), + m_dispatchAction(std::move(dispatchAction)) { + } + + void dispatch(void) { + if (m_proceed && m_dispatchAction == base::DispatchAction::None) { + m_proceed = false; + } + if (!m_proceed) { + return; + } + // We minimize the time of ELPP's lock - this lock is released after log is written + base::threading::ScopedLock scopedLock(ELPP->lock()); + base::TypedConfigurations* tc = m_logMessage.logger()->m_typedConfigurations; + if (ELPP->hasFlag(LoggingFlag::StrictLogFileSizeCheck)) { + tc->validateFileRolling(m_logMessage.level(), ELPP->preRollOutCallback()); + } + LogDispatchCallback* callback = nullptr; + LogDispatchData data; + for (const std::pair& h + : ELPP->m_logDispatchCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + data.setLogMessage(&m_logMessage); + data.setDispatchAction(m_dispatchAction); + callback->acquireLock(); + callback->handle(&data); + callback->releaseLock(); + } + } + } + + private: + bool m_proceed; + LogMessage m_logMessage; + base::DispatchAction m_dispatchAction; + }; +#if defined(ELPP_STL_LOGGING) + /// @brief Workarounds to write some STL logs + /// + /// @detail There is workaround needed to loop through some stl containers. In order to do that, we need iterable containers + /// of same type and provide iterator interface and pass it on to writeIterator(). + /// Remember, this is passed by value in constructor so that we dont change original containers. + /// This operation is as expensive as Big-O(std::min(class_.size(), base::consts::kMaxLogPerContainer)) + namespace workarounds { + /// @brief Abstract IterableContainer template that provides interface for iterable classes of type T + template + class IterableContainer { + public: + typedef typename Container::iterator iterator; + typedef typename Container::const_iterator const_iterator; + IterableContainer(void) {} + virtual ~IterableContainer(void) {} + iterator begin(void) { return getContainer().begin(); } + iterator end(void) { return getContainer().end(); } + private: + virtual Container& getContainer(void) = 0; + }; + /// @brief Implements IterableContainer and provides iterable std::priority_queue class + template, typename Comparator = std::less> + class IterablePriorityQueue : public IterableContainer, public std::priority_queue { + public: + IterablePriorityQueue(std::priority_queue queue_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { + this->push(queue_.top()); + queue_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } + }; + /// @brief Implements IterableContainer and provides iterable std::queue class + template> + class IterableQueue : public IterableContainer, public std::queue { + public: + IterableQueue(std::queue queue_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !queue_.empty()) { + this->push(queue_.front()); + queue_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } + }; + /// @brief Implements IterableContainer and provides iterable std::stack class + template> + class IterableStack : public IterableContainer, public std::stack { + public: + IterableStack(std::stack stack_) { + std::size_t count_ = 0; + while (++count_ < base::consts::kMaxLogPerContainer && !stack_.empty()) { + this->push(stack_.top()); + stack_.pop(); + } + } + private: + inline Container& getContainer(void) { + return this->c; + } + }; + } // namespace workarounds +#endif // defined(ELPP_STL_LOGGING) + // Log message builder + class MessageBuilder { + public: + MessageBuilder(void) : m_logger(nullptr), m_containerLogSeperator(ELPP_LITERAL("")) {} + void initialize(Logger* logger) { + m_logger = logger; + m_containerLogSeperator = ELPP->hasFlag(LoggingFlag::NewLineForContainer) ? + ELPP_LITERAL("\n ") : ELPP_LITERAL(", "); + } + +# define ELPP_SIMPLE_LOG(LOG_TYPE)\ + inline MessageBuilder& operator<<(LOG_TYPE msg) {\ + m_logger->stream() << msg;\ + if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) {\ + m_logger->stream() << " ";\ + }\ + return *this;\ + } + + inline MessageBuilder& operator<<(const std::string& msg) { + return operator<<(msg.c_str()); + } + ELPP_SIMPLE_LOG(char) + ELPP_SIMPLE_LOG(bool) + ELPP_SIMPLE_LOG(signed short) + ELPP_SIMPLE_LOG(unsigned short) + ELPP_SIMPLE_LOG(signed int) + ELPP_SIMPLE_LOG(unsigned int) + ELPP_SIMPLE_LOG(signed long) + ELPP_SIMPLE_LOG(unsigned long) + ELPP_SIMPLE_LOG(float) + ELPP_SIMPLE_LOG(double) + ELPP_SIMPLE_LOG(char*) + ELPP_SIMPLE_LOG(const char*) + ELPP_SIMPLE_LOG(const void*) + ELPP_SIMPLE_LOG(long double) + inline MessageBuilder& operator<<(const std::wstring& msg) { + return operator<<(msg.c_str()); + } + inline MessageBuilder& operator<<(const wchar_t* msg) { + if (msg == nullptr) { + m_logger->stream() << base::consts::kNullPointer; + return *this; + } +# if defined(ELPP_UNICODE) + m_logger->stream() << msg; +# else + char* buff_ = base::utils::Str::wcharPtrToCharPtr(msg); + m_logger->stream() << buff_; + free(buff_); +# endif + if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { + m_logger->stream() << " "; + } + return *this; + } + // ostream manipulators + inline MessageBuilder& operator<<(std::ostream& (*OStreamMani)(std::ostream&)) { + m_logger->stream() << OStreamMani; + return *this; + } +#define ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(temp) \ + template \ + inline MessageBuilder& operator<<(const temp& template_inst) { \ + return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ + } +#define ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(temp) \ + template \ + inline MessageBuilder& operator<<(const temp& template_inst) { \ + return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ + } +#define ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(temp) \ + template \ + inline MessageBuilder& operator<<(const temp& template_inst) { \ + return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ + } +#define ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(temp) \ + template \ + inline MessageBuilder& operator<<(const temp& template_inst) { \ + return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ + } +#define ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(temp) \ + template \ + inline MessageBuilder& operator<<(const temp& template_inst) { \ + return writeIterator(template_inst.begin(), template_inst.end(), template_inst.size()); \ + } + +#if defined(ELPP_STL_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::list) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(std::deque) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::set) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(std::multiset) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::map) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::multimap) + template + inline MessageBuilder& operator<<(const std::queue& queue_) { + base::workarounds::IterableQueue iterableQueue_ = + static_cast >(queue_); + return writeIterator(iterableQueue_.begin(), iterableQueue_.end(), iterableQueue_.size()); + } + template + inline MessageBuilder& operator<<(const std::stack& stack_) { + base::workarounds::IterableStack iterableStack_ = + static_cast >(stack_); + return writeIterator(iterableStack_.begin(), iterableStack_.end(), iterableStack_.size()); + } + template + inline MessageBuilder& operator<<(const std::priority_queue& priorityQueue_) { + base::workarounds::IterablePriorityQueue iterablePriorityQueue_ = + static_cast >(priorityQueue_); + return writeIterator(iterablePriorityQueue_.begin(), iterablePriorityQueue_.end(), iterablePriorityQueue_.size()); + } + template + inline MessageBuilder& operator<<(const std::pair& pair_) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(pair_.first)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(pair_.second)); + m_logger->stream() << ELPP_LITERAL(")"); + return *this; + } + template + inline MessageBuilder& operator<<(const std::bitset& bitset_) { + m_logger->stream() << ELPP_LITERAL("["); + operator << (bitset_.to_string()); + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } +# if defined(ELPP_LOG_STD_ARRAY) + template + inline MessageBuilder& operator<<(const std::array& array) { + return writeIterator(array.begin(), array.end(), array.size()); + } +# endif // defined(ELPP_LOG_STD_ARRAY) +# if defined(ELPP_LOG_UNORDERED_MAP) + ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_map) + ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG(std::unordered_multimap) +# endif // defined(ELPP_LOG_UNORDERED_MAP) +# if defined(ELPP_LOG_UNORDERED_SET) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_set) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(std::unordered_multiset) +# endif // defined(ELPP_LOG_UNORDERED_SET) +#endif // defined(ELPP_STL_LOGGING) +#if defined(ELPP_QT_LOGGING) + inline MessageBuilder& operator<<(const QString& msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << msg.toStdWString(); +# else + m_logger->stream() << msg.toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(const QByteArray& msg) { + return operator << (QString(msg)); + } + inline MessageBuilder& operator<<(const QStringRef& msg) { + return operator<<(msg.toString()); + } + inline MessageBuilder& operator<<(qint64 msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << QString::number(msg).toStdWString(); +# else + m_logger->stream() << QString::number(msg).toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(quint64 msg) { +# if defined(ELPP_UNICODE) + m_logger->stream() << QString::number(msg).toStdWString(); +# else + m_logger->stream() << QString::number(msg).toStdString(); +# endif // defined(ELPP_UNICODE) + return *this; + } + inline MessageBuilder& operator<<(QChar msg) { + m_logger->stream() << msg.toLatin1(); + return *this; + } + inline MessageBuilder& operator<<(const QLatin1String& msg) { + m_logger->stream() << msg.latin1(); + return *this; + } + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QList) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QVector) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QQueue) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QSet) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QLinkedList) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(QStack) + template + inline MessageBuilder& operator<<(const QPair& pair_) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(pair_.first)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(pair_.second)); + m_logger->stream() << ELPP_LITERAL(")"); + return *this; + } + template + inline MessageBuilder& operator<<(const QMap& map_) { + m_logger->stream() << ELPP_LITERAL("["); + QList keys = map_.keys(); + typename QList::const_iterator begin = keys.begin(); + typename QList::const_iterator end = keys.end(); + int max_ = static_cast(base::consts::kMaxLogPerContainer); // to prevent warning + for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(*begin)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(map_.value(*begin))); + m_logger->stream() << ELPP_LITERAL(")"); + m_logger->stream() << ((index_ < keys.size() - 1) ? m_containerLogSeperator : ELPP_LITERAL("")); + } + if (begin != end) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } + template + inline MessageBuilder& operator<<(const QMultiMap& map_) { + operator << (static_cast>(map_)); + return *this; + } + template + inline MessageBuilder& operator<<(const QHash& hash_) { + m_logger->stream() << ELPP_LITERAL("["); + QList keys = hash_.keys(); + typename QList::const_iterator begin = keys.begin(); + typename QList::const_iterator end = keys.end(); + int max_ = static_cast(base::consts::kMaxLogPerContainer); // prevent type warning + for (int index_ = 0; begin != end && index_ < max_; ++index_, ++begin) { + m_logger->stream() << ELPP_LITERAL("("); + operator << (static_cast(*begin)); + m_logger->stream() << ELPP_LITERAL(", "); + operator << (static_cast(hash_.value(*begin))); + m_logger->stream() << ELPP_LITERAL(")"); + m_logger->stream() << ((index_ < keys.size() - 1) ? m_containerLogSeperator : ELPP_LITERAL("")); + } + if (begin != end) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + return *this; + } + template + inline MessageBuilder& operator<<(const QMultiHash& multiHash_) { + operator << (static_cast>(multiHash_)); + return *this; + } +#endif // defined(ELPP_QT_LOGGING) +#if defined(ELPP_BOOST_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::stable_vector) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::list) + ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG(boost::container::deque) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::map) + ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG(boost::container::flat_map) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::set) + ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG(boost::container::flat_set) +#endif // defined(ELPP_BOOST_LOGGING) + + /// @brief Macro used internally that can be used externally to make containers easylogging++ friendly + /// + /// @detail This macro expands to write an ostream& operator<< for container. This container is expected to + /// have begin() and end() methods that return respective iterators + /// @param ContainerType Type of container e.g, MyList from WX_DECLARE_LIST(int, MyList); in wxwidgets + /// @param SizeMethod Method used to get size of container. + /// @param ElementInstance Instance of element to be fed out. Insance name is "elem". See WXELPP_ENABLED macro + /// for an example usage +#define MAKE_CONTAINERELPP_FRIENDLY(ContainerType, SizeMethod, ElementInstance) \ + el::base::type::ostream_t& operator<<(el::base::type::ostream_t& ss, const ContainerType& container) {\ + const el::base::type::char_t* sep = ELPP->hasFlag(el::LoggingFlag::NewLineForContainer) ? \ + ELPP_LITERAL("\n ") : ELPP_LITERAL(", ");\ + ContainerType::const_iterator elem = container.begin();\ + ContainerType::const_iterator endElem = container.end();\ + std::size_t size_ = container.SizeMethod; \ + ss << ELPP_LITERAL("[");\ + for (std::size_t i = 0; elem != endElem && i < el::base::consts::kMaxLogPerContainer; ++i, ++elem) { \ + ss << ElementInstance;\ + ss << ((i < size_ - 1) ? sep : ELPP_LITERAL(""));\ + }\ + if (elem != endElem) {\ + ss << ELPP_LITERAL("...");\ + }\ + ss << ELPP_LITERAL("]");\ + return ss;\ + } +#if defined(ELPP_WXWIDGETS_LOGGING) + ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG(wxVector) +# define ELPP_WX_PTR_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), *(*elem)) +# define ELPP_WX_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), (*elem)) +# define ELPP_WX_HASH_MAP_ENABLED(ContainerType) MAKE_CONTAINERELPP_FRIENDLY(ContainerType, size(), \ + ELPP_LITERAL("(") << elem->first << ELPP_LITERAL(", ") << elem->second << ELPP_LITERAL(")") +#else +# define ELPP_WX_PTR_ENABLED(ContainerType) +# define ELPP_WX_ENABLED(ContainerType) +# define ELPP_WX_HASH_MAP_ENABLED(ContainerType) +#endif // defined(ELPP_WXWIDGETS_LOGGING) + // Other classes + template + ELPP_SIMPLE_LOG(const Class&) +#undef ELPP_SIMPLE_LOG +#undef ELPP_ITERATOR_CONTAINER_LOG_ONE_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_TWO_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_THREE_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_FOUR_ARG +#undef ELPP_ITERATOR_CONTAINER_LOG_FIVE_ARG + private: + Logger* m_logger; + const base::type::char_t* m_containerLogSeperator; + + template + inline MessageBuilder& writeIterator(Iterator begin_, Iterator end_, std::size_t size_) { + m_logger->stream() << ELPP_LITERAL("["); + for (std::size_t i = 0; begin_ != end_ && i < base::consts::kMaxLogPerContainer; ++i, ++begin_) { + operator << (*begin_); + m_logger->stream() << ((i < size_ - 1) ? m_containerLogSeperator : ELPP_LITERAL("")); + } + if (begin_ != end_) { + m_logger->stream() << ELPP_LITERAL("..."); + } + m_logger->stream() << ELPP_LITERAL("]"); + if (ELPP->hasFlag(LoggingFlag::AutoSpacing)) { + m_logger->stream() << " "; + } + return *this; + } + }; + /// @brief Writes nothing - Used when certain log is disabled + class NullWriter : base::NoCopy { + public: + NullWriter(void) {} + + // Null manipulator + inline NullWriter& operator<<(std::ostream& (*)(std::ostream&)) { + return *this; + } + + template + inline NullWriter& operator<<(const T&) { + return *this; + } + }; + /// @brief Main entry point of each logging + class Writer : base::NoCopy { + public: + Writer(Level level, const char* file, unsigned long int line, + const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, + base::type::VerboseLevel verboseLevel = 0) : + m_level(level), m_file(file), m_line(line), m_func(func), m_verboseLevel(verboseLevel), + m_proceed(false), m_dispatchAction(dispatchAction) { + } + + virtual ~Writer(void) { + processDispatch(); + } + + template + inline Writer& operator<<(const T& log) { +#if ELPP_LOGGING_ENABLED + if (m_proceed) { + m_messageBuilder << log; + } +#endif // ELPP_LOGGING_ENABLED + return *this; + } + + inline Writer& operator<<(std::ostream& (*log)(std::ostream&)) { +#if ELPP_LOGGING_ENABLED + if (m_proceed) { + m_messageBuilder << log; + } +#endif // ELPP_LOGGING_ENABLED + return *this; + } + + Writer& construct(Logger* logger, bool needLock = true) { + m_logger = logger; + initializeLogger(logger->id(), false, needLock); + m_messageBuilder.initialize(m_logger); + return *this; + } + + Writer& construct(int count, const char* loggerIds, ...) { + if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { + va_list loggersList; + va_start(loggersList, loggerIds); + const char* id = loggerIds; + for (int i = 0; i < count; ++i) { + m_loggerIds.push_back(std::string(id)); + id = va_arg(loggersList, const char*); + } + va_end(loggersList); + initializeLogger(m_loggerIds.at(0)); + } + else { + initializeLogger(std::string(loggerIds)); + } + m_messageBuilder.initialize(m_logger); + return *this; + } + protected: + Level m_level; + const char* m_file; + const unsigned long int m_line; + const char* m_func; + base::type::VerboseLevel m_verboseLevel; + Logger* m_logger; + bool m_proceed; + base::MessageBuilder m_messageBuilder; + base::DispatchAction m_dispatchAction; + std::vector m_loggerIds; + friend class el::Helpers; + + void initializeLogger(const std::string& loggerId, bool lookup = true, bool needLock = true) { + if (lookup) { + m_logger = ELPP->registeredLoggers()->get(loggerId, ELPP->hasFlag(LoggingFlag::CreateLoggerAutomatically)); + } + if (m_logger == nullptr) { + ELPP->acquireLock(); + if (!ELPP->registeredLoggers()->has(std::string(base::consts::kDefaultLoggerId))) { + // Somehow default logger has been unregistered. Not good! Register again + ELPP->registeredLoggers()->get(std::string(base::consts::kDefaultLoggerId)); + } + ELPP->releaseLock(); // Need to unlock it for next writer + Writer(Level::Debug, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) + << "Logger [" << loggerId << "] is not registered yet!"; + m_proceed = false; + } + else { + if (needLock) { + m_logger->acquireLock(); // This should not be unlocked by checking m_proceed because + // m_proceed can be changed by lines below + } + if (ELPP->hasFlag(LoggingFlag::HierarchicalLogging)) { + m_proceed = m_level == Level::Verbose ? m_logger->enabled(m_level) : + LevelHelper::castToInt(m_level) >= LevelHelper::castToInt(ELPP->m_loggingLevel); + } + else { + m_proceed = m_logger->enabled(m_level); + } + } + } + + void processDispatch() { +#if ELPP_LOGGING_ENABLED + if (ELPP->hasFlag(LoggingFlag::MultiLoggerSupport)) { + bool firstDispatched = false; + base::type::string_t logMessage; + std::size_t i = 0; + do { + if (m_proceed) { + if (firstDispatched) { + m_logger->stream() << logMessage; + } + else { + firstDispatched = true; + if (m_loggerIds.size() > 1) { + logMessage = m_logger->stream().str(); + } + } + triggerDispatch(); + } + else if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + if (i + 1 < m_loggerIds.size()) { + initializeLogger(m_loggerIds.at(i + 1)); + } + } while (++i < m_loggerIds.size()); + } + else { + if (m_proceed) { + triggerDispatch(); + } + else if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + } +#else + if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } +#endif // ELPP_LOGGING_ENABLED + } + + void triggerDispatch(void) { + if (m_proceed) { + base::LogDispatcher(m_proceed, LogMessage(m_level, m_file, m_line, m_func, m_verboseLevel, + m_logger), m_dispatchAction).dispatch(); + } + if (m_logger != nullptr) { + m_logger->stream().str(ELPP_LITERAL("")); + m_logger->releaseLock(); + } + if (m_proceed && m_level == Level::Fatal + && !ELPP->hasFlag(LoggingFlag::DisableApplicationAbortOnFatalLog)) { + base::Writer(Level::Warning, m_file, m_line, m_func).construct(1, base::consts::kDefaultLoggerId) + << "Aborting application. Reason: Fatal log at [" << m_file << ":" << m_line << "]"; + std::stringstream reasonStream; + reasonStream << "Fatal log at [" << m_file << ":" << m_line << "]" + << " If you wish to disable 'abort on fatal log' please use " + << "el::Helpers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog)"; + base::utils::abort(1, reasonStream.str()); + } + m_proceed = false; + } + }; + class PErrorWriter : public base::Writer { + public: + PErrorWriter(Level level, const char* file, unsigned long int line, + const char* func, base::DispatchAction dispatchAction = base::DispatchAction::NormalLog, + base::type::VerboseLevel verboseLevel = 0) : + base::Writer(level, file, line, func, dispatchAction, verboseLevel) { + } + + virtual ~PErrorWriter(void) { + if (m_proceed) { +#if ELPP_COMPILER_MSVC + char buff[256]; + strerror_s(buff, 256, errno); + m_logger->stream() << ": " << buff << " [" << errno << "]"; +#else + m_logger->stream() << ": " << strerror(errno) << " [" << errno << "]"; +#endif + } + } + }; + } // namespace base + // Logging from Logger class. Why this is here? Because we have Storage and Writer class available +#if ELPP_VARIADIC_TEMPLATES_SUPPORTED + template + void Logger::log_(Level level, int vlevel, const char* s, const T& value, const Args&... args) { + base::MessageBuilder b; + b.initialize(this); + while (*s) { + if (*s == base::consts::kFormatSpecifierChar) { + if (*(s + 1) == base::consts::kFormatSpecifierChar) { + ++s; + } + else { + if (*(s + 1) == base::consts::kFormatSpecifierCharValue) { + ++s; + b << value; + log_(level, vlevel, ++s, args...); + return; + } + } + } + b << *s++; + } + ELPP_INTERNAL_ERROR("Too many arguments provided. Unable to handle. Please provide more format specifiers", false); + } + template + inline void Logger::log_(Level level, int vlevel, const T& log) { + if (level == Level::Verbose) { + if (ELPP->vRegistry()->allowed(vlevel, __FILE__)) { + base::Writer(Level::Verbose, "FILE", 0, "FUNCTION", + base::DispatchAction::NormalLog, vlevel).construct(this, false) << log; + } + else { + stream().str(ELPP_LITERAL("")); + } + } + else { + base::Writer(level, "FILE", 0, "FUNCTION").construct(this, false) << log; + } + } + template + void Logger::log(Level level, const char* s, const T& value, const Args&... args) { + base::threading::ScopedLock scopedLock(lock()); + log_(level, 0, s, value, args...); + } + template + inline void Logger::log(Level level, const T& log) { + base::threading::ScopedLock scopedLock(lock()); + log_(level, 0, log); + } +# if ELPP_VERBOSE_LOG + template + inline void Logger::verbose(int vlevel, const char* s, const T& value, const Args&... args) { + base::threading::ScopedLock scopedLock(lock()); + log_(el::Level::Verbose, vlevel, s, value, args...); + } + template + inline void Logger::verbose(int vlevel, const T& log) { + base::threading::ScopedLock scopedLock(lock()); + log_(el::Level::Verbose, vlevel, log); + } +# else + template + inline void Logger::verbose(int, const char*, const T&, const Args&...) { + return; + } + template + inline void Logger::verbose(int, const T&) { + return; + } +# endif // ELPP_VERBOSE_LOG +# define LOGGER_LEVEL_WRITERS(FUNCTION_NAME, LOG_LEVEL)\ + template \ + inline void Logger::FUNCTION_NAME(const char* s, const T& value, const Args&... args) {\ + log(LOG_LEVEL, s, value, args...);\ + }\ + template \ + inline void Logger::FUNCTION_NAME(const T& value) {\ + log(LOG_LEVEL, value);\ + } +# define LOGGER_LEVEL_WRITERS_DISABLED(FUNCTION_NAME, LOG_LEVEL)\ + template \ + inline void Logger::FUNCTION_NAME(const char*, const T&, const Args&...) {\ + return;\ + }\ + template \ + inline void Logger::FUNCTION_NAME(const T&) {\ + return;\ + } + +# if ELPP_INFO_LOG + LOGGER_LEVEL_WRITERS(info, Level::Info) +# else + LOGGER_LEVEL_WRITERS_DISABLED(info, Level::Info) +# endif // ELPP_INFO_LOG +# if ELPP_DEBUG_LOG + LOGGER_LEVEL_WRITERS(debug, Level::Debug) +# else + LOGGER_LEVEL_WRITERS_DISABLED(debug, Level::Debug) +# endif // ELPP_DEBUG_LOG +# if ELPP_WARNING_LOG + LOGGER_LEVEL_WRITERS(warn, Level::Warning) +# else + LOGGER_LEVEL_WRITERS_DISABLED(warn, Level::Warning) +# endif // ELPP_WARNING_LOG +# if ELPP_ERROR_LOG + LOGGER_LEVEL_WRITERS(error, Level::Error) +# else + LOGGER_LEVEL_WRITERS_DISABLED(error, Level::Error) +# endif // ELPP_ERROR_LOG +# if ELPP_FATAL_LOG + LOGGER_LEVEL_WRITERS(fatal, Level::Fatal) +# else + LOGGER_LEVEL_WRITERS_DISABLED(fatal, Level::Fatal) +# endif // ELPP_FATAL_LOG +# if ELPP_TRACE_LOG + LOGGER_LEVEL_WRITERS(trace, Level::Trace) +# else + LOGGER_LEVEL_WRITERS_DISABLED(trace, Level::Trace) +# endif // ELPP_TRACE_LOG +# undef LOGGER_LEVEL_WRITERS +# undef LOGGER_LEVEL_WRITERS_DISABLED +#endif // ELPP_VARIADIC_TEMPLATES_SUPPORTED +#if ELPP_COMPILER_MSVC +# define ELPP_VARIADIC_FUNC_MSVC(variadicFunction, variadicArgs) variadicFunction variadicArgs +# define ELPP_VARIADIC_FUNC_MSVC_RUN(variadicFunction, ...) ELPP_VARIADIC_FUNC_MSVC(variadicFunction, (__VA_ARGS__)) +# define el_getVALength(...) ELPP_VARIADIC_FUNC_MSVC_RUN(el_resolveVALength, 0, ## __VA_ARGS__,\ + 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#else +# if ELPP_COMPILER_CLANG +# define el_getVALength(...) el_resolveVALength(0, __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +# else +# define el_getVALength(...) el_resolveVALength(0, ## __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +# endif // ELPP_COMPILER_CLANG +#endif // ELPP_COMPILER_MSVC +#define el_resolveVALength(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N +#define ELPP_WRITE_LOG(writer, level, dispatchAction, ...) \ + writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_IF(writer, condition, level, dispatchAction, ...) if (condition) \ + writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_EVERY_N(writer, occasion, level, dispatchAction, ...) \ + if (ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion)) \ + writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_AFTER_N(writer, n, level, dispatchAction, ...) \ + if (ELPP->validateAfterNCounter(__FILE__, __LINE__, n)) \ + writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#define ELPP_WRITE_LOG_N_TIMES(writer, n, level, dispatchAction, ...) \ + if (ELPP->validateNTimesCounter(__FILE__, __LINE__, n)) \ + writer(level, __FILE__, __LINE__, ELPP_FUNC, dispatchAction).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#undef ELPP_CURR_FILE_PERFORMANCE_LOGGER +#if defined(ELPP_PERFORMANCE_LOGGER) +# define ELPP_CURR_FILE_PERFORMANCE_LOGGER ELPP_PERFORMANCE_LOGGER +#else +# define ELPP_CURR_FILE_PERFORMANCE_LOGGER el::base::consts::kPerformanceLoggerId +#endif + class PerformanceTrackingData { + public: + enum class DataType : base::type::EnumType { + Checkpoint = 1, Complete = 2 + }; + // Do not use constructor, will run into multiple definition error, use init(PerformanceTracker*) + explicit PerformanceTrackingData(DataType dataType) : m_performanceTracker(nullptr), + m_dataType(dataType), m_file(""), m_line(0), m_func("") {} + inline const std::string* blockName(void) const; + inline const struct timeval* startTime(void) const; + inline const struct timeval* endTime(void) const; + inline const struct timeval* lastCheckpointTime(void) const; + inline const base::PerformanceTracker* performanceTracker(void) const { return m_performanceTracker; } + inline PerformanceTrackingData::DataType dataType(void) const { return m_dataType; } + inline bool firstCheckpoint(void) const { return m_firstCheckpoint; } + inline std::string checkpointId(void) const { return m_checkpointId; } + inline const char* file(void) const { return m_file; } + inline unsigned long int line(void) const { return m_line; } + inline const char* func(void) const { return m_func; } + inline const base::type::string_t* formattedTimeTaken() const { return &m_formattedTimeTaken; } + inline const std::string& loggerId(void) const; + private: + base::PerformanceTracker* m_performanceTracker; + base::type::string_t m_formattedTimeTaken; + PerformanceTrackingData::DataType m_dataType; + bool m_firstCheckpoint; + std::string m_checkpointId; + const char* m_file; + unsigned long int m_line; + const char* m_func; + inline void init(base::PerformanceTracker* performanceTracker, bool firstCheckpoint = false) { + m_performanceTracker = performanceTracker; + m_firstCheckpoint = firstCheckpoint; + } + + friend class el::base::PerformanceTracker; + }; + namespace base { + /// @brief Represents performanceTracker block of code that conditionally adds performance status to log + /// either when goes outside the scope of when checkpoint() is called + class PerformanceTracker : public base::threading::ThreadSafe, public Loggable { + public: + PerformanceTracker(const std::string& blockName, + base::TimestampUnit timestampUnit = base::TimestampUnit::Millisecond, + const std::string& loggerId = std::string(ELPP_CURR_FILE_PERFORMANCE_LOGGER), + bool scopedLog = true, Level level = base::consts::kPerformanceTrackerDefaultLevel) : + m_blockName(blockName), m_timestampUnit(timestampUnit), m_loggerId(loggerId), m_scopedLog(scopedLog), + m_level(level), m_hasChecked(false), m_lastCheckpointId(std::string()), m_enabled(false) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + // We store it locally so that if user happen to change configuration by the end of scope + // or before calling checkpoint, we still depend on state of configuraton at time of construction + el::Logger* loggerPtr = ELPP->registeredLoggers()->get(loggerId, false); + m_enabled = loggerPtr != nullptr && loggerPtr->m_typedConfigurations->performanceTracking(m_level); + if (m_enabled) { + base::utils::DateTime::gettimeofday(&m_startTime); + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + } + /// @brief Copy constructor + PerformanceTracker(const PerformanceTracker& t) : + m_blockName(t.m_blockName), m_timestampUnit(t.m_timestampUnit), m_loggerId(t.m_loggerId), m_scopedLog(t.m_scopedLog), + m_level(t.m_level), m_hasChecked(t.m_hasChecked), m_lastCheckpointId(t.m_lastCheckpointId), m_enabled(t.m_enabled), + m_startTime(t.m_startTime), m_endTime(t.m_endTime), m_lastCheckpointTime(t.m_lastCheckpointTime) { + } + virtual ~PerformanceTracker(void) { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + if (m_enabled) { + base::threading::ScopedLock scopedLock(lock()); + if (m_scopedLog) { + base::utils::DateTime::gettimeofday(&m_endTime); + base::type::string_t formattedTime = getFormattedTimeTaken(); + PerformanceTrackingData data(PerformanceTrackingData::DataType::Complete); + data.init(this); + data.m_formattedTimeTaken = formattedTime; + PerformanceTrackingCallback* callback = nullptr; + for (const std::pair& h + : ELPP->m_performanceTrackingCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->acquireLock(); + callback->handle(&data); + callback->releaseLock(); + } + } + } + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) + } + /// @brief A checkpoint for current performanceTracker block. + void checkpoint(const std::string& id = std::string(), const char* file = __FILE__, unsigned long int line = __LINE__, const char* func = "") { +#if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + if (m_enabled) { + base::threading::ScopedLock scopedLock(lock()); + base::utils::DateTime::gettimeofday(&m_endTime); + base::type::string_t formattedTime = m_hasChecked ? getFormattedTimeTaken(m_lastCheckpointTime) : ELPP_LITERAL(""); + PerformanceTrackingData data(PerformanceTrackingData::DataType::Checkpoint); + data.init(this); + data.m_checkpointId = id; + data.m_file = file; + data.m_line = line; + data.m_func = func; + data.m_formattedTimeTaken = formattedTime; + PerformanceTrackingCallback* callback = nullptr; + for (const std::pair& h + : ELPP->m_performanceTrackingCallbacks) { + callback = h.second.get(); + if (callback != nullptr && callback->enabled()) { + callback->acquireLock(); + callback->handle(&data); + callback->releaseLock(); + } + } + base::utils::DateTime::gettimeofday(&m_lastCheckpointTime); + m_hasChecked = true; + m_lastCheckpointId = id; + } +#endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED + ELPP_UNUSED(id); + ELPP_UNUSED(file); + ELPP_UNUSED(line); + ELPP_UNUSED(func); + } + inline Level level(void) const { return m_level; } + private: + std::string m_blockName; + base::TimestampUnit m_timestampUnit; + std::string m_loggerId; + bool m_scopedLog; + Level m_level; + bool m_hasChecked; + std::string m_lastCheckpointId; + bool m_enabled; + struct timeval m_startTime, m_endTime, m_lastCheckpointTime; + + PerformanceTracker(void); + + friend class el::PerformanceTrackingData; + friend class base::DefaultPerformanceTrackingCallback; + + const inline base::type::string_t getFormattedTimeTaken() const { + return getFormattedTimeTaken(m_startTime); + } + + const base::type::string_t getFormattedTimeTaken(struct timeval startTime) const { + if (ELPP->hasFlag(LoggingFlag::FixedTimeFormat)) { + base::type::stringstream_t ss; + ss << base::utils::DateTime::getTimeDifference(m_endTime, + startTime, m_timestampUnit) << " " << base::consts::kTimeFormats[static_cast(m_timestampUnit)].unit; + return ss.str(); + } + return base::utils::DateTime::formatTime(base::utils::DateTime::getTimeDifference(m_endTime, + startTime, m_timestampUnit), m_timestampUnit); + } + + virtual inline void log(el::base::type::ostream_t& os) const { + os << getFormattedTimeTaken(); + } + }; + class DefaultPerformanceTrackingCallback : public PerformanceTrackingCallback { + protected: + void handle(const PerformanceTrackingData* data) { + m_data = data; + base::type::stringstream_t ss; + if (m_data->dataType() == PerformanceTrackingData::DataType::Complete) { + ss << ELPP_LITERAL("Executed [") << m_data->blockName()->c_str() << ELPP_LITERAL("] in [") << *m_data->formattedTimeTaken() << ELPP_LITERAL("]"); + } + else { + ss << ELPP_LITERAL("Performance checkpoint"); + if (!m_data->checkpointId().empty()) { + ss << ELPP_LITERAL(" [") << m_data->checkpointId().c_str() << ELPP_LITERAL("]"); + } + ss << ELPP_LITERAL(" for block [") << m_data->blockName()->c_str() << ELPP_LITERAL("] : [") << *m_data->performanceTracker(); + if (!ELPP->hasFlag(LoggingFlag::DisablePerformanceTrackingCheckpointComparison) && m_data->performanceTracker()->m_hasChecked) { + ss << ELPP_LITERAL(" ([") << *m_data->formattedTimeTaken() << ELPP_LITERAL("] from "); + if (m_data->performanceTracker()->m_lastCheckpointId.empty()) { + ss << ELPP_LITERAL("last checkpoint"); + } + else { + ss << ELPP_LITERAL("checkpoint '") << m_data->performanceTracker()->m_lastCheckpointId.c_str() << ELPP_LITERAL("'"); + } + ss << ELPP_LITERAL(")]"); + } + else { + ss << ELPP_LITERAL("]"); + } + } + el::base::Writer(m_data->performanceTracker()->level(), m_data->file(), m_data->line(), m_data->func()).construct(1, m_data->loggerId().c_str()) << ss.str(); + } + private: + const PerformanceTrackingData* m_data; + }; + } // namespace base + inline const std::string* PerformanceTrackingData::blockName() const { + return const_cast(&m_performanceTracker->m_blockName); + } + inline const struct timeval* PerformanceTrackingData::startTime() const { + return const_cast(&m_performanceTracker->m_startTime); + } + inline const struct timeval* PerformanceTrackingData::endTime() const { + return const_cast(&m_performanceTracker->m_endTime); + } + inline const struct timeval* PerformanceTrackingData::lastCheckpointTime() const { + return const_cast(&m_performanceTracker->m_lastCheckpointTime); + } + inline const std::string& PerformanceTrackingData::loggerId(void) const { return m_performanceTracker->m_loggerId; } + namespace base { + /// @brief Contains some internal debugging tools like crash handler and stack tracer + namespace debug { + class StackTrace : base::NoCopy { + public: + static const std::size_t kMaxStack = 64; + static const std::size_t kStackStart = 2; // We want to skip c'tor and StackTrace::generateNew() + class StackTraceEntry { + public: + StackTraceEntry(std::size_t index, const char* loc, const char* demang, const char* hex, const char* addr) { + m_index = index; + m_location = std::string(loc); + m_demangled = std::string(demang); + m_hex = std::string(hex); + m_addr = std::string(addr); + } + StackTraceEntry(std::size_t index, char* loc) { + m_index = index; + m_location = std::string(loc); + } + std::size_t m_index; + std::string m_location; + std::string m_demangled; + std::string m_hex; + std::string m_addr; + friend std::ostream& operator<<(std::ostream& ss, const StackTraceEntry& si) { + ss << "[" << si.m_index << "] " << si.m_location << (si.m_demangled.empty() ? "" : ":") << si.m_demangled + << (si.m_hex.empty() ? "" : "+") << si.m_hex << si.m_addr; + return ss; + } + + private: + StackTraceEntry(void); + }; + + StackTrace(void) { + generateNew(); + } + + virtual ~StackTrace(void) { + } + + inline std::vector& getLatestStack(void) { + return m_stack; + } + + friend inline std::ostream& operator<<(std::ostream& os, const StackTrace& st) { + std::vector::const_iterator it = st.m_stack.begin(); + while (it != st.m_stack.end()) { + os << " " << *it++ << "\n"; + } + return os; + } + + private: + std::vector m_stack; + + void generateNew(void) { +#if ELPP_STACKTRACE + m_stack.clear(); + void* stack[kMaxStack]; + std::size_t size = backtrace(stack, kMaxStack); + char** strings = backtrace_symbols(stack, size); + if (size > kStackStart) { // Skip StackTrace c'tor and generateNew + for (std::size_t i = kStackStart; i < size; ++i) { + char* mangName = nullptr; + char* hex = nullptr; + char* addr = nullptr; + for (char* c = strings[i]; *c; ++c) { + switch (*c) { + case '(': + mangName = c; + break; + case '+': + hex = c; + break; + case ')': + addr = c; + break; + } + } + // Perform demangling if parsed properly + if (mangName != nullptr && hex != nullptr && addr != nullptr && mangName < hex) { + *mangName++ = '\0'; + *hex++ = '\0'; + *addr++ = '\0'; + int status = 0; + char* demangName = abi::__cxa_demangle(mangName, 0, 0, &status); + // if demangling is successful, output the demangled function name + if (status == 0) { + // Success (see http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html) + StackTraceEntry entry(i - 1, strings[i], demangName, hex, addr); + m_stack.push_back(entry); + } + else { + // Not successful - we will use mangled name + StackTraceEntry entry(i - 1, strings[i], mangName, hex, addr); + m_stack.push_back(entry); + } + free(demangName); + } + else { + StackTraceEntry entry(i - 1, strings[i]); + m_stack.push_back(entry); + } + } + } + free(strings); +#else + ELPP_INTERNAL_INFO(1, "Stacktrace generation not supported for selected compiler"); +#endif // ELPP_STACKTRACE + } + }; + static std::string crashReason(int sig) { + std::stringstream ss; + bool foundReason = false; + for (int i = 0; i < base::consts::kCrashSignalsCount; ++i) { + if (base::consts::kCrashSignals[i].numb == sig) { + ss << "Application has crashed due to [" << base::consts::kCrashSignals[i].name << "] signal"; + if (ELPP->hasFlag(el::LoggingFlag::LogDetailedCrashReason)) { + ss << std::endl << + " " << base::consts::kCrashSignals[i].brief << std::endl << + " " << base::consts::kCrashSignals[i].detail; + } + foundReason = true; + } + } + if (!foundReason) { + ss << "Application has crashed due to unknown signal [" << sig << "]"; + } + return ss.str(); + } + /// @brief Logs reason of crash from sig + static void logCrashReason(int sig, bool stackTraceIfAvailable, Level level, const char* logger) { + std::stringstream ss; + ss << "CRASH HANDLED; "; + ss << crashReason(sig); +#if ELPP_STACKTRACE + if (stackTraceIfAvailable) { + ss << std::endl << " ======= Backtrace: =========" << std::endl << base::debug::StackTrace(); + } +#else + ELPP_UNUSED(stackTraceIfAvailable); +#endif // ELPP_STACKTRACE + ELPP_WRITE_LOG(el::base::Writer, level, base::DispatchAction::NormalLog, logger) << ss.str(); + } + static inline void crashAbort(int sig) { + base::utils::abort(sig); + } + /// @brief Default application crash handler + /// + /// @detail This function writes log using 'default' logger, prints stack trace for GCC based compilers and aborts program. + static inline void defaultCrashHandler(int sig) { + base::debug::logCrashReason(sig, true, Level::Fatal, base::consts::kDefaultLoggerId); + base::debug::crashAbort(sig); + } + /// @brief Handles unexpected crashes + class CrashHandler : base::NoCopy { + public: + typedef void(*Handler)(int); + + explicit CrashHandler(bool useDefault) { + if (useDefault) { + setHandler(defaultCrashHandler); + } + } + explicit CrashHandler(const Handler& cHandler) { + setHandler(cHandler); + } + void setHandler(const Handler& cHandler) { + m_handler = cHandler; +#if defined(ELPP_HANDLE_SIGABRT) + int i = 0; // SIGABRT is at base::consts::kCrashSignals[0] +#else + int i = 1; +#endif // defined(ELPP_HANDLE_SIGABRT) + for (; i < base::consts::kCrashSignalsCount; ++i) { + m_handler = signal(base::consts::kCrashSignals[i].numb, cHandler); + } + } + + private: + Handler m_handler; + }; + } // namespace debug + } // namespace base + extern base::debug::CrashHandler elCrashHandler; +#define MAKE_LOGGABLE(ClassType, ClassInstance, OutputStreamInstance) \ + el::base::type::ostream_t& operator<<(el::base::type::ostream_t& OutputStreamInstance, const ClassType& ClassInstance) + /// @brief Initializes syslog with process ID, options and facility. calls closelog() on d'tor + class SysLogInitializer { + public: + SysLogInitializer(const char* processIdent, int options = 0, int facility = 0) { +#if defined(ELPP_SYSLOG) + openlog(processIdent, options, facility); +#else + ELPP_UNUSED(processIdent); + ELPP_UNUSED(options); + ELPP_UNUSED(facility); +#endif // defined(ELPP_SYSLOG) + } + virtual ~SysLogInitializer(void) { +#if defined(ELPP_SYSLOG) + closelog(); +#endif // defined(ELPP_SYSLOG) + } + }; +#define ELPP_INITIALIZE_SYSLOG(id, opt, fac) el::SysLogInitializer elSyslogInit(id, opt, fac) + /// @brief Static helpers for developers + class Helpers : base::StaticClass { + public: + /// @brief Shares logging repository (base::Storage) + static inline void setStorage(base::type::StoragePointer storage) { + ELPP = storage; + } + /// @return Main storage repository + static inline base::type::StoragePointer storage() { + return ELPP; + } + /// @brief Sets application arguments and figures out whats active for logging and whats not. + static inline void setArgs(int argc, char** argv) { + ELPP->setApplicationArguments(argc, argv); + } + /// @copydoc setArgs(int argc, char** argv) + static inline void setArgs(int argc, const char** argv) { + ELPP->setApplicationArguments(argc, const_cast(argv)); + } + /// @brief Overrides default crash handler and installs custom handler. + /// @param crashHandler A functor with no return type that takes single int argument. + /// Handler is a typedef with specification: void (*Handler)(int) + static inline void setCrashHandler(const el::base::debug::CrashHandler::Handler& crashHandler) { + el::elCrashHandler.setHandler(crashHandler); + } + /// @brief Abort due to crash with signal in parameter + /// @param sig Crash signal + static inline void crashAbort(int sig, const char* sourceFile = "", unsigned int long line = 0) { + std::stringstream ss; + ss << base::debug::crashReason(sig).c_str(); + ss << " - [Called el::Helpers::crashAbort(" << sig << ")]"; + if (sourceFile != nullptr && strlen(sourceFile) > 0) { + ss << " - Source: " << sourceFile; + if (line > 0) + ss << ":" << line; + else + ss << " (line number not specified)"; + } + base::utils::abort(sig, ss.str()); + } + /// @brief Logs reason of crash as per sig + /// @param sig Crash signal + /// @param stackTraceIfAvailable Includes stack trace if available + /// @param level Logging level + /// @param logger Logger to use for logging + static inline void logCrashReason(int sig, bool stackTraceIfAvailable = false, + Level level = Level::Fatal, const char* logger = base::consts::kDefaultLoggerId) { + el::base::debug::logCrashReason(sig, stackTraceIfAvailable, level, logger); + } + /// @brief Installs pre rollout callback, this callback is triggered when log file is about to be rolled out + /// (can be useful for backing up) + static inline void installPreRollOutCallback(const PreRollOutCallback& callback) { + ELPP->setPreRollOutCallback(callback); + } + /// @brief Uninstalls pre rollout callback + static inline void uninstallPreRollOutCallback(void) { + ELPP->unsetPreRollOutCallback(); + } + /// @brief Installs post log dispatch callback, this callback is triggered when log is dispatched + template + static inline bool installLogDispatchCallback(const std::string& id) { + return ELPP->installLogDispatchCallback(id); + } + /// @brief Uninstalls log dispatch callback + template + static inline void uninstallLogDispatchCallback(const std::string& id) { + ELPP->uninstallLogDispatchCallback(id); + } + template + static inline T* logDispatchCallback(const std::string& id) { + return ELPP->logDispatchCallback(id); + } + /// @brief Installs post performance tracking callback, this callback is triggered when performance tracking is finished + template + static inline bool installPerformanceTrackingCallback(const std::string& id) { + return ELPP->installPerformanceTrackingCallback(id); + } + /// @brief Uninstalls post performance tracking handler + template + static inline void uninstallPerformanceTrackingCallback(const std::string& id) { + ELPP->uninstallPerformanceTrackingCallback(id); + } + template + static inline T* performanceTrackingCallback(const std::string& id) { + return ELPP->performanceTrackingCallback(id); + } + /// @brief Converts template to std::string - useful for loggable classes to log containers within log(std::ostream&) const + template + static std::string convertTemplateToStdString(const T& templ) { + el::Logger* logger = + ELPP->registeredLoggers()->get(el::base::consts::kDefaultLoggerId); + if (logger == nullptr) { + return std::string(); + } + base::MessageBuilder b; + b.initialize(logger); + logger->acquireLock(); + b << templ; +#if defined(ELPP_UNICODE) + std::string s = std::string(logger->stream().str().begin(), logger->stream().str().end()); +#else + std::string s = logger->stream().str(); +#endif // defined(ELPP_UNICODE) + logger->stream().str(ELPP_LITERAL("")); + logger->releaseLock(); + return s; + } + /// @brief Returns command line arguments (pointer) provided to easylogging++ + static inline const el::base::utils::CommandLineArgs* commandLineArgs(void) { + return ELPP->commandLineArgs(); + } + /// @brief Installs user defined format specifier and handler + static inline void installCustomFormatSpecifier(const CustomFormatSpecifier& customFormatSpecifier) { + ELPP->installCustomFormatSpecifier(customFormatSpecifier); + } + /// @brief Uninstalls user defined format specifier and handler + static inline bool uninstallCustomFormatSpecifier(const char* formatSpecifier) { + return ELPP->uninstallCustomFormatSpecifier(formatSpecifier); + } + /// @brief Returns true if custom format specifier is installed + static inline bool hasCustomFormatSpecifier(const char* formatSpecifier) { + return ELPP->hasCustomFormatSpecifier(formatSpecifier); + } + static inline void validateFileRolling(Logger* logger, Level level) { + if (logger == nullptr) return; + logger->m_typedConfigurations->validateFileRolling(level, ELPP->preRollOutCallback()); + } + }; + /// @brief Static helpers to deal with loggers and their configurations + class Loggers : base::StaticClass { + public: + /// @brief Gets existing or registers new logger + static inline Logger* getLogger(const std::string& identity, bool registerIfNotAvailable = true) { + base::threading::ScopedLock scopedLock(ELPP->lock()); + return ELPP->registeredLoggers()->get(identity, registerIfNotAvailable); + } + /// @brief Unregisters logger - use it only when you know what you are doing, you may unregister + /// loggers initialized / used by third-party libs. + static inline bool unregisterLogger(const std::string& identity) { + base::threading::ScopedLock scopedLock(ELPP->lock()); + return ELPP->registeredLoggers()->remove(identity); + } + /// @brief Whether or not logger with id is registered + static inline bool hasLogger(const std::string& identity) { + base::threading::ScopedLock scopedLock(ELPP->lock()); + return ELPP->registeredLoggers()->has(identity); + } + /// @brief Reconfigures specified logger with new configurations + static inline Logger* reconfigureLogger(Logger* logger, const Configurations& configurations) { + if (!logger) return nullptr; + logger->configure(configurations); + return logger; + } + /// @brief Reconfigures logger with new configurations after looking it up using identity + static inline Logger* reconfigureLogger(const std::string& identity, const Configurations& configurations) { + return Loggers::reconfigureLogger(Loggers::getLogger(identity), configurations); + } + /// @brief Reconfigures logger's single configuration + static inline Logger* reconfigureLogger(const std::string& identity, ConfigurationType configurationType, + const std::string& value) { + Logger* logger = Loggers::getLogger(identity); + if (logger == nullptr) { + return nullptr; + } + logger->configurations()->set(Level::Global, configurationType, value); + logger->reconfigure(); + return logger; + } + /// @brief Reconfigures all the existing loggers with new configurations + static inline void reconfigureAllLoggers(const Configurations& configurations) { + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); + it != ELPP->registeredLoggers()->end(); ++it) { + Loggers::reconfigureLogger(it->second, configurations); + } + } + /// @brief Reconfigures single configuration for all the loggers + static inline void reconfigureAllLoggers(ConfigurationType configurationType, const std::string& value) { + reconfigureAllLoggers(Level::Global, configurationType, value); + } + /// @brief Reconfigures single configuration for all the loggers for specified level + static inline void reconfigureAllLoggers(Level level, ConfigurationType configurationType, + const std::string& value) { + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->begin(); + it != ELPP->registeredLoggers()->end(); ++it) { + Logger* logger = it->second; + logger->configurations()->set(level, configurationType, value); + logger->reconfigure(); + } + } + /// @brief Sets default configurations. This configuration is used for future (and conditionally for existing) loggers + static inline void setDefaultConfigurations(const Configurations& configurations, bool reconfigureExistingLoggers = false) { + ELPP->registeredLoggers()->setDefaultConfigurations(configurations); + if (reconfigureExistingLoggers) { + Loggers::reconfigureAllLoggers(configurations); + } + } + /// @brief Returns current default + static inline const Configurations* defaultConfigurations(void) { + return ELPP->registeredLoggers()->defaultConfigurations(); + } + /// @brief Returns log stream reference pointer if needed by user + static inline const base::LogStreamsReferenceMap* logStreamsReference(void) { + return ELPP->registeredLoggers()->logStreamsReference(); + } + /// @brief Default typed configuration based on existing defaultConf + static base::TypedConfigurations defaultTypedConfigurations(void) { + return base::TypedConfigurations( + ELPP->registeredLoggers()->defaultConfigurations(), + ELPP->registeredLoggers()->logStreamsReference()); + } + /// @brief Populates all logger IDs in current repository. + /// @param [out] targetList List of fill up. + static inline std::vector* populateAllLoggerIds(std::vector* targetList) { + targetList->clear(); + for (base::RegisteredLoggers::iterator it = ELPP->registeredLoggers()->list().begin(); + it != ELPP->registeredLoggers()->list().end(); ++it) { + targetList->push_back(it->first); + } + return targetList; + } + /// @brief Sets configurations from global configuration file. + static void configureFromGlobal(const char* globalConfigurationFilePath) { + std::ifstream gcfStream(globalConfigurationFilePath, std::ifstream::in); + ELPP_ASSERT(gcfStream.is_open(), "Unable to open global configuration file [" << globalConfigurationFilePath + << "] for parsing."); + std::string line = std::string(); + std::stringstream ss; + Logger* logger = nullptr; + auto configure = [&](void) { + ELPP_INTERNAL_INFO(8, "Configuring logger: '" << logger->id() << "' with configurations \n" << ss.str() + << "\n--------------"); + Configurations c; + c.parseFromText(ss.str()); + logger->configure(c); + }; + while (gcfStream.good()) { + std::getline(gcfStream, line); + ELPP_INTERNAL_INFO(1, "Parsing line: " << line); + base::utils::Str::trim(line); + if (Configurations::Parser::isComment(line)) continue; + Configurations::Parser::ignoreComments(&line); + base::utils::Str::trim(line); + if (line.size() > 2 && base::utils::Str::startsWith(line, std::string(base::consts::kConfigurationLoggerId))) { + if (!ss.str().empty() && logger != nullptr) { + configure(); + } + ss.str(std::string("")); + line = line.substr(2); + base::utils::Str::trim(line); + if (line.size() > 1) { + ELPP_INTERNAL_INFO(1, "Getting logger: '" << line << "'"); + logger = getLogger(line); + } + } + else { + ss << line << "\n"; + } + } + if (!ss.str().empty() && logger != nullptr) { + configure(); + } + } + /// @brief Configures loggers using command line arg. Ensure you have already set command line args, + /// @return False if invalid argument or argument with no value provided, true if attempted to configure logger. + /// If true is returned that does not mean it has been configured successfully, it only means that it + /// has attempeted to configure logger using configuration file provided in argument + static inline bool configureFromArg(const char* argKey) { +#if defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) + ELPP_UNUSED(argKey); +#else + if (!Helpers::commandLineArgs()->hasParamWithValue(argKey)) { + return false; + } + configureFromGlobal(Helpers::commandLineArgs()->getParamValue(argKey)); +#endif // defined(ELPP_DISABLE_CONFIGURATION_FROM_PROGRAM_ARGS) + return true; + } + /// @brief Flushes all loggers for all levels - Be careful if you dont know how many loggers are registered + static inline void flushAll(void) { + ELPP->registeredLoggers()->flushAll(); + } + /// @brief Adds logging flag used internally. + static inline void addFlag(LoggingFlag flag) { + ELPP->addFlag(flag); + } + /// @brief Removes logging flag used internally. + static inline void removeFlag(LoggingFlag flag) { + ELPP->removeFlag(flag); + } + /// @brief Determines whether or not certain flag is active + static inline bool hasFlag(LoggingFlag flag) { + return ELPP->hasFlag(flag); + } + /// @brief Adds flag and removes it when scope goes out + class ScopedAddFlag { + public: + ScopedAddFlag(LoggingFlag flag) : m_flag(flag) { Loggers::addFlag(m_flag); } + ~ScopedAddFlag(void) { Loggers::removeFlag(m_flag); } + private: + LoggingFlag m_flag; + }; + /// @brief Removes flag and add it when scope goes out + class ScopedRemoveFlag { + public: + ScopedRemoveFlag(LoggingFlag flag) : m_flag(flag) { Loggers::removeFlag(m_flag); } + ~ScopedRemoveFlag(void) { Loggers::addFlag(m_flag); } + private: + LoggingFlag m_flag; + }; + /// @brief Sets hierarchy for logging. Needs to enable logging flag (HierarchicalLogging) + static inline void setLoggingLevel(Level level) { + ELPP->setLoggingLevel(level); + } + /// @brief Sets verbose level on the fly + static inline void setVerboseLevel(base::type::VerboseLevel level) { + ELPP->vRegistry()->setLevel(level); + } + /// @brief Gets current verbose level + static inline base::type::VerboseLevel verboseLevel(void) { + return ELPP->vRegistry()->level(); + } + /// @brief Sets vmodules as specified (on the fly) + static inline void setVModules(const char* modules) { + if (ELPP->vRegistry()->vModulesEnabled()) { + ELPP->vRegistry()->setModules(modules); + } + } + /// @brief Clears vmodules + static inline void clearVModules(void) { + ELPP->vRegistry()->clearModules(); + } + }; + class VersionInfo : base::StaticClass { + public: + /// @brief Current version number + static inline const std::string version(void) { return std::string("9.80"); } + /// @brief Release date of current version + static inline const std::string releaseDate(void) { return std::string("08-01-2015 0850hrs"); } + }; +} // namespace el +#undef VLOG_IS_ON + /// @brief Determines whether verbose logging is on for specified level current file. +#define VLOG_IS_ON(verboseLevel) (ELPP->vRegistry()->allowed(verboseLevel, __FILE__)) +#undef TIMED_BLOCK +#undef TIMED_SCOPE +#undef TIMED_FUNC +#undef ELPP_MIN_UNIT +#if defined(ELPP_PERFORMANCE_MICROSECONDS) +# define ELPP_MIN_UNIT el::base::TimestampUnit::Microsecond +#else +# define ELPP_MIN_UNIT el::base::TimestampUnit::Millisecond +#endif // (defined(ELPP_PERFORMANCE_MICROSECONDS)) + /// @brief Performance tracked scope. Performance gets written when goes out of scope using + /// 'performance' logger. + /// + /// @detail Please note in order to check the performance at a certain time you can use obj.checkpoint(); + /// @see el::base::PerformanceTracker + /// @see el::base::PerformanceTracker::checkpoint + // Note: Do not surround this definition with null macro because of obj instance +#define TIMED_SCOPE(obj, blockname) el::base::PerformanceTracker obj(blockname, ELPP_MIN_UNIT) +#define TIMED_BLOCK(obj, blockName) for (struct { int i; el::base::PerformanceTracker timer; } obj = { 0, \ + el::base::PerformanceTracker(blockName, ELPP_MIN_UNIT) }; obj.i < 1; ++obj.i) + /// @brief Performance tracked function. Performance gets written when goes out of scope using + /// 'performance' logger. + /// + /// @detail Please note in order to check the performance at a certain time you can use obj.checkpoint(); + /// @see el::base::PerformanceTracker + /// @see el::base::PerformanceTracker::checkpoint +#define TIMED_FUNC(obj) TIMED_SCOPE(obj, ELPP_FUNC) +#undef PERFORMANCE_CHECKPOINT +#undef PERFORMANCE_CHECKPOINT_WITH_ID +#define PERFORMANCE_CHECKPOINT(obj) obj.checkpoint(std::string(), __FILE__, __LINE__, ELPP_FUNC) +#define PERFORMANCE_CHECKPOINT_WITH_ID(obj, id) obj.checkpoint(id, __FILE__, __LINE__, ELPP_FUNC) +#undef ELPP_COUNTER +#undef ELPP_COUNTER_POS + /// @brief Gets hit counter for file/line +#define ELPP_COUNTER (ELPP->hitCounters()->getCounter(__FILE__, __LINE__)) + /// @brief Gets hit counter position for file/line, -1 if not registered yet +#define ELPP_COUNTER_POS (ELPP_COUNTER == nullptr ? -1 : ELPP_COUNTER->hitCounts()) + // Undef levels to support LOG(LEVEL) +#undef INFO +#undef WARNING +#undef DEBUG +#undef ERROR +#undef FATAL +#undef TRACE +#undef VERBOSE + // Undef existing +#undef CINFO +#undef CWARNING +#undef CDEBUG +#undef CFATAL +#undef CERROR +#undef CTRACE +#undef CVERBOSE +#undef CINFO_IF +#undef CWARNING_IF +#undef CDEBUG_IF +#undef CERROR_IF +#undef CFATAL_IF +#undef CTRACE_IF +#undef CVERBOSE_IF +#undef CINFO_EVERY_N +#undef CWARNING_EVERY_N +#undef CDEBUG_EVERY_N +#undef CERROR_EVERY_N +#undef CFATAL_EVERY_N +#undef CTRACE_EVERY_N +#undef CVERBOSE_EVERY_N +#undef CINFO_AFTER_N +#undef CWARNING_AFTER_N +#undef CDEBUG_AFTER_N +#undef CERROR_AFTER_N +#undef CFATAL_AFTER_N +#undef CTRACE_AFTER_N +#undef CVERBOSE_AFTER_N +#undef CINFO_N_TIMES +#undef CWARNING_N_TIMES +#undef CDEBUG_N_TIMES +#undef CERROR_N_TIMES +#undef CFATAL_N_TIMES +#undef CTRACE_N_TIMES +#undef CVERBOSE_N_TIMES + // Normal logs +#if ELPP_INFO_LOG +# define CINFO(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE(writer, dispatchAction, ...) ELPP_WRITE_LOG(writer, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE(writer, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE(writer, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel)) writer(\ + el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#else +# define CVERBOSE(writer, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG + // Conditional logs +#if ELPP_INFO_LOG +# define CINFO_IF(writer, condition_, dispatchAction, ...) \ + ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_IF(writer, condition_, dispatchAction, ...)\ + ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_IF(writer, condition_, dispatchAction, ...)\ + ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_IF(writer, condition_, dispatchAction, ...)\ + ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_IF(writer, condition_, dispatchAction, ...)\ + ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_IF(writer, condition_, dispatchAction, ...)\ + ELPP_WRITE_LOG_IF(writer, (condition_), el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_IF(writer, condition_, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) if (VLOG_IS_ON(vlevel) && (condition_)) writer( \ + el::Level::Verbose, __FILE__, __LINE__, ELPP_FUNC, dispatchAction, vlevel).construct(el_getVALength(__VA_ARGS__), __VA_ARGS__) +#else +# define CVERBOSE_IF(writer, condition_, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG + // Occasional logs +#if ELPP_INFO_LOG +# define CINFO_EVERY_N(writer, occasion, dispatchAction, ...)\ + ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...)\ + ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...)\ + ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_EVERY_N(writer, occasion, dispatchAction, ...)\ + ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...)\ + ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...)\ + ELPP_WRITE_LOG_EVERY_N(writer, occasion, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_EVERY_N(writer, occasion, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...)\ + CVERBOSE_IF(writer, ELPP->validateEveryNCounter(__FILE__, __LINE__, occasion), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_EVERY_N(writer, occasion, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG + // After N logs +#if ELPP_INFO_LOG +# define CINFO_AFTER_N(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_AFTER_N(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_AFTER_N(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_AFTER_N(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_AFTER_N(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_AFTER_N(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_AFTER_N(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_AFTER_N(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...)\ + CVERBOSE_IF(writer, ELPP->validateAfterNCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_AFTER_N(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG + // N Times logs +#if ELPP_INFO_LOG +# define CINFO_N_TIMES(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Info, dispatchAction, __VA_ARGS__) +#else +# define CINFO_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_INFO_LOG +#if ELPP_WARNING_LOG +# define CWARNING_N_TIMES(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Warning, dispatchAction, __VA_ARGS__) +#else +# define CWARNING_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_WARNING_LOG +#if ELPP_DEBUG_LOG +# define CDEBUG_N_TIMES(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Debug, dispatchAction, __VA_ARGS__) +#else +# define CDEBUG_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_DEBUG_LOG +#if ELPP_ERROR_LOG +# define CERROR_N_TIMES(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Error, dispatchAction, __VA_ARGS__) +#else +# define CERROR_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_ERROR_LOG +#if ELPP_FATAL_LOG +# define CFATAL_N_TIMES(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Fatal, dispatchAction, __VA_ARGS__) +#else +# define CFATAL_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_FATAL_LOG +#if ELPP_TRACE_LOG +# define CTRACE_N_TIMES(writer, n, dispatchAction, ...)\ + ELPP_WRITE_LOG_N_TIMES(writer, n, el::Level::Trace, dispatchAction, __VA_ARGS__) +#else +# define CTRACE_N_TIMES(writer, n, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_TRACE_LOG +#if ELPP_VERBOSE_LOG +# define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...)\ + CVERBOSE_IF(writer, ELPP->validateNTimesCounter(__FILE__, __LINE__, n), vlevel, dispatchAction, __VA_ARGS__) +#else +# define CVERBOSE_N_TIMES(writer, n, vlevel, dispatchAction, ...) el::base::NullWriter() +#endif // ELPP_VERBOSE_LOG + // + // Custom Loggers - Requires (level, dispatchAction, loggerId/s) + // + // undef existing +#undef CLOG +#undef CLOG_VERBOSE +#undef CVLOG +#undef CLOG_IF +#undef CLOG_VERBOSE_IF +#undef CVLOG_IF +#undef CLOG_EVERY_N +#undef CVLOG_EVERY_N +#undef CLOG_AFTER_N +#undef CVLOG_AFTER_N +#undef CLOG_N_TIMES +#undef CVLOG_N_TIMES + // Normal logs +#define CLOG(LEVEL, ...)\ + C##LEVEL(el::base::Writer, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG(vlevel, ...) CVERBOSE(el::base::Writer, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) + // Conditional logs +#define CLOG_IF(condition, LEVEL, ...)\ + C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_IF(condition, vlevel, ...)\ + CVERBOSE_IF(el::base::Writer, condition, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) + // Hit counts based logs +#define CLOG_EVERY_N(n, LEVEL, ...)\ + C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_EVERY_N(n, vlevel, ...)\ + CVERBOSE_EVERY_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CLOG_AFTER_N(n, LEVEL, ...)\ + C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_AFTER_N(n, vlevel, ...)\ + CVERBOSE_AFTER_N(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CLOG_N_TIMES(n, LEVEL, ...)\ + C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CVLOG_N_TIMES(n, vlevel, ...)\ + CVERBOSE_N_TIMES(el::base::Writer, n, vlevel, el::base::DispatchAction::NormalLog, __VA_ARGS__) + // + // Default Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros + // + // undef existing +#undef LOG +#undef VLOG +#undef LOG_IF +#undef VLOG_IF +#undef LOG_EVERY_N +#undef VLOG_EVERY_N +#undef LOG_AFTER_N +#undef VLOG_AFTER_N +#undef LOG_N_TIMES +#undef VLOG_N_TIMES +#undef ELPP_CURR_FILE_LOGGER_ID +#if defined(ELPP_DEFAULT_LOGGER) +# define ELPP_CURR_FILE_LOGGER_ID ELPP_DEFAULT_LOGGER +#else +# define ELPP_CURR_FILE_LOGGER_ID el::base::consts::kDefaultLoggerId +#endif +#undef ELPP_TRACE +#define ELPP_TRACE CLOG(TRACE, ELPP_CURR_FILE_LOGGER_ID) + // Normal logs +#define LOG(LEVEL) CLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG(vlevel) CVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) + // Conditional logs +#define LOG_IF(condition, LEVEL) CLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_IF(condition, vlevel) CVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) + // Hit counts based logs +#define LOG_EVERY_N(n, LEVEL) CLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_EVERY_N(n, vlevel) CVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define LOG_AFTER_N(n, LEVEL) CLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_AFTER_N(n, vlevel) CVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define LOG_N_TIMES(n, LEVEL) CLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define VLOG_N_TIMES(n, vlevel) CVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) + // Generic PLOG() +#undef CPLOG +#undef CPLOG_IF +#undef PLOG +#undef PLOG_IF +#undef DCPLOG +#undef DCPLOG_IF +#undef DPLOG +#undef DPLOG_IF +#define CPLOG(LEVEL, ...)\ + C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define CPLOG_IF(condition, LEVEL, ...)\ + C##LEVEL##_IF(el::base::PErrorWriter, condition, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define DCPLOG(LEVEL, ...)\ + if (ELPP_DEBUG_LOG) C##LEVEL(el::base::PErrorWriter, el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define DCPLOG_IF(condition, LEVEL, ...)\ + C##LEVEL##_IF(el::base::PErrorWriter, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::NormalLog, __VA_ARGS__) +#define PLOG(LEVEL) CPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define PLOG_IF(condition, LEVEL) CPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DPLOG(LEVEL) DCPLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DPLOG_IF(condition, LEVEL) DCPLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) + // Generic SYSLOG() +#undef CSYSLOG +#undef CSYSLOG_IF +#undef CSYSLOG_EVERY_N +#undef CSYSLOG_AFTER_N +#undef CSYSLOG_N_TIMES +#undef SYSLOG +#undef SYSLOG_IF +#undef SYSLOG_EVERY_N +#undef SYSLOG_AFTER_N +#undef SYSLOG_N_TIMES +#undef DCSYSLOG +#undef DCSYSLOG_IF +#undef DCSYSLOG_EVERY_N +#undef DCSYSLOG_AFTER_N +#undef DCSYSLOG_N_TIMES +#undef DSYSLOG +#undef DSYSLOG_IF +#undef DSYSLOG_EVERY_N +#undef DSYSLOG_AFTER_N +#undef DSYSLOG_N_TIMES +#if defined(ELPP_SYSLOG) +# define CSYSLOG(LEVEL, ...)\ + C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_IF(condition, LEVEL, ...)\ + C##LEVEL##_IF(el::base::Writer, condition, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_EVERY_N(n, LEVEL, ...) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_AFTER_N(n, LEVEL, ...) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define CSYSLOG_N_TIMES(n, LEVEL, ...) C##LEVEL##_N_TIMES(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define SYSLOG(LEVEL) CSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_IF(condition, LEVEL) CSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_EVERY_N(n, LEVEL) CSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_AFTER_N(n, LEVEL) CSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define SYSLOG_N_TIMES(n, LEVEL) CSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DCSYSLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) C##LEVEL(el::base::Writer, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_IF(condition, LEVEL, ...)\ + C##LEVEL##_IF(el::base::Writer, (ELPP_DEBUG_LOG) && (condition), el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_EVERY_N(n, LEVEL, ...)\ + if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_AFTER_N(n, LEVEL, ...)\ + if (ELPP_DEBUG_LOG) C##LEVEL##_AFTER_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DCSYSLOG_N_TIMES(n, LEVEL, ...)\ + if (ELPP_DEBUG_LOG) C##LEVEL##_EVERY_N(el::base::Writer, n, el::base::DispatchAction::SysLog, __VA_ARGS__) +# define DSYSLOG(LEVEL) DCSYSLOG(LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_IF(condition, LEVEL) DCSYSLOG_IF(condition, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_EVERY_N(n, LEVEL) DCSYSLOG_EVERY_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_AFTER_N(n, LEVEL) DCSYSLOG_AFTER_N(n, LEVEL, el::base::consts::kSysLogLoggerId) +# define DSYSLOG_N_TIMES(n, LEVEL) DCSYSLOG_N_TIMES(n, LEVEL, el::base::consts::kSysLogLoggerId) +#else +# define CSYSLOG(LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() +# define CSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() +# define SYSLOG(LEVEL) el::base::NullWriter() +# define SYSLOG_IF(condition, LEVEL) el::base::NullWriter() +# define SYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() +# define SYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() +# define SYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() +# define DCSYSLOG(LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_IF(condition, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_EVERY_N(n, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_AFTER_N(n, LEVEL, ...) el::base::NullWriter() +# define DCSYSLOG_N_TIMES(n, LEVEL, ...) el::base::NullWriter() +# define DSYSLOG(LEVEL) el::base::NullWriter() +# define DSYSLOG_IF(condition, LEVEL) el::base::NullWriter() +# define DSYSLOG_EVERY_N(n, LEVEL) el::base::NullWriter() +# define DSYSLOG_AFTER_N(n, LEVEL) el::base::NullWriter() +# define DSYSLOG_N_TIMES(n, LEVEL) el::base::NullWriter() +#endif // defined(ELPP_SYSLOG) + // + // Custom Debug Only Loggers - Requires (level, loggerId/s) + // + // undef existing +#undef DCLOG +#undef DCVLOG +#undef DCLOG_IF +#undef DCVLOG_IF +#undef DCLOG_EVERY_N +#undef DCVLOG_EVERY_N +#undef DCLOG_AFTER_N +#undef DCVLOG_AFTER_N +#undef DCLOG_N_TIMES +#undef DCVLOG_N_TIMES + // Normal logs +#define DCLOG(LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG(LEVEL, __VA_ARGS__) +#define DCLOG_VERBOSE(vlevel, ...) if (ELPP_DEBUG_LOG) CLOG_VERBOSE(vlevel, __VA_ARGS__) +#define DCVLOG(vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG(vlevel, __VA_ARGS__) + // Conditional logs +#define DCLOG_IF(condition, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_IF(condition, LEVEL, __VA_ARGS__) +#define DCVLOG_IF(condition, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_IF(condition, vlevel, __VA_ARGS__) + // Hit counts based logs +#define DCLOG_EVERY_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_EVERY_N(n, LEVEL, __VA_ARGS__) +#define DCVLOG_EVERY_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_EVERY_N(n, vlevel, __VA_ARGS__) +#define DCLOG_AFTER_N(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_AFTER_N(n, LEVEL, __VA_ARGS__) +#define DCVLOG_AFTER_N(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_AFTER_N(n, vlevel, __VA_ARGS__) +#define DCLOG_N_TIMES(n, LEVEL, ...) if (ELPP_DEBUG_LOG) CLOG_N_TIMES(n, LEVEL, __VA_ARGS__) +#define DCVLOG_N_TIMES(n, vlevel, ...) if (ELPP_DEBUG_LOG) CVLOG_N_TIMES(n, vlevel, __VA_ARGS__) + // + // Default Debug Only Loggers macro using CLOG(), CLOG_VERBOSE() and CVLOG() macros + // + // undef existing +#undef DLOG +#undef DVLOG +#undef DLOG_IF +#undef DVLOG_IF +#undef DLOG_EVERY_N +#undef DVLOG_EVERY_N +#undef DLOG_AFTER_N +#undef DVLOG_AFTER_N +#undef DLOG_N_TIMES +#undef DVLOG_N_TIMES + // Normal logs +#define DLOG(LEVEL) DCLOG(LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG(vlevel) DCVLOG(vlevel, ELPP_CURR_FILE_LOGGER_ID) + // Conditional logs +#define DLOG_IF(condition, LEVEL) DCLOG_IF(condition, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_IF(condition, vlevel) DCVLOG_IF(condition, vlevel, ELPP_CURR_FILE_LOGGER_ID) + // Hit counts based logs +#define DLOG_EVERY_N(n, LEVEL) DCLOG_EVERY_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_EVERY_N(n, vlevel) DCVLOG_EVERY_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define DLOG_AFTER_N(n, LEVEL) DCLOG_AFTER_N(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_AFTER_N(n, vlevel) DCVLOG_AFTER_N(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) +#define DLOG_N_TIMES(n, LEVEL) DCLOG_N_TIMES(n, LEVEL, ELPP_CURR_FILE_LOGGER_ID) +#define DVLOG_N_TIMES(n, vlevel) DCVLOG_N_TIMES(n, vlevel, ELPP_CURR_FILE_LOGGER_ID) + // Check macros +#undef CCHECK +#undef CPCHECK +#undef CCHECK_EQ +#undef CCHECK_NE +#undef CCHECK_LT +#undef CCHECK_GT +#undef CCHECK_LE +#undef CCHECK_GE +#undef CCHECK_BOUNDS +#undef CCHECK_NOTNULL +#undef CCHECK_STRCASEEQ +#undef CCHECK_STRCASENE +#undef CHECK +#undef PCHECK +#undef CHECK_EQ +#undef CHECK_NE +#undef CHECK_LT +#undef CHECK_GT +#undef CHECK_LE +#undef CHECK_GE +#undef CHECK_BOUNDS +#undef CHECK_NOTNULL +#undef CHECK_STRCASEEQ +#undef CHECK_STRCASENE +#define CCHECK(condition, ...) CLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " +#define CPCHECK(condition, ...) CPLOG_IF(!(condition), FATAL, __VA_ARGS__) << "Check failed: [" << #condition << "] " +#define CHECK(condition) CCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define PCHECK(condition) CPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define CCHECK_EQ(a, b, ...) CCHECK(a == b, __VA_ARGS__) +#define CCHECK_NE(a, b, ...) CCHECK(a != b, __VA_ARGS__) +#define CCHECK_LT(a, b, ...) CCHECK(a < b, __VA_ARGS__) +#define CCHECK_GT(a, b, ...) CCHECK(a > b, __VA_ARGS__) +#define CCHECK_LE(a, b, ...) CCHECK(a <= b, __VA_ARGS__) +#define CCHECK_GE(a, b, ...) CCHECK(a >= b, __VA_ARGS__) +#define CCHECK_BOUNDS(val, min, max, ...) CCHECK(val >= min && val <= max, __VA_ARGS__) +#define CHECK_EQ(a, b) CCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_NE(a, b) CCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_LT(a, b) CCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_GT(a, b) CCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_LE(a, b) CCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_GE(a, b) CCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_BOUNDS(val, min, max) CCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) +namespace el { + namespace base { + namespace utils { + template + static T* checkNotNull(T* ptr, const char* name, const char* loggers, ...) { + CLOG_IF(ptr == nullptr, FATAL, loggers) << "Check failed: [" << name << " != nullptr]"; + return ptr; + } + } // namespace utils + } // namespace base +} // namespace el +#define CCHECK_NOTNULL(ptr, ...) el::base::utils::checkNotNull(ptr, #ptr, __VA_ARGS__) +#define CCHECK_STREQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ + << "Check failed: [" << #str1 << " == " << #str2 << "] " +#define CCHECK_STRNE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringEq(str1, str2), FATAL, __VA_ARGS__) \ + << "Check failed: [" << #str1 << " != " << #str2 << "] " +#define CCHECK_STRCASEEQ(str1, str2, ...) CLOG_IF(!el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ + << "Check failed: [" << #str1 << " == " << #str2 << "] " +#define CCHECK_STRCASENE(str1, str2, ...) CLOG_IF(el::base::utils::Str::cStringCaseEq(str1, str2), FATAL, __VA_ARGS__) \ + << "Check failed: [" << #str1 << " != " << #str2 << "] " +#define CHECK_NOTNULL(ptr) CCHECK_NOTNULL(ptr, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STREQ(str1, str2) CCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRNE(str1, str2) CCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRCASEEQ(str1, str2) CCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define CHECK_STRCASENE(str1, str2) CCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#undef DCCHECK +#undef DCCHECK_EQ +#undef DCCHECK_NE +#undef DCCHECK_LT +#undef DCCHECK_GT +#undef DCCHECK_LE +#undef DCCHECK_GE +#undef DCCHECK_BOUNDS +#undef DCCHECK_NOTNULL +#undef DCCHECK_STRCASEEQ +#undef DCCHECK_STRCASENE +#undef DCPCHECK +#undef DCHECK +#undef DCHECK_EQ +#undef DCHECK_NE +#undef DCHECK_LT +#undef DCHECK_GT +#undef DCHECK_LE +#undef DCHECK_GE +#undef DCHECK_BOUNDS_ +#undef DCHECK_NOTNULL +#undef DCHECK_STRCASEEQ +#undef DCHECK_STRCASENE +#undef DPCHECK +#define DCCHECK(condition, ...) if (ELPP_DEBUG_LOG) CCHECK(condition, __VA_ARGS__) +#define DCCHECK_EQ(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_EQ(a, b, __VA_ARGS__) +#define DCCHECK_NE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_NE(a, b, __VA_ARGS__) +#define DCCHECK_LT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LT(a, b, __VA_ARGS__) +#define DCCHECK_GT(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GT(a, b, __VA_ARGS__) +#define DCCHECK_LE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_LE(a, b, __VA_ARGS__) +#define DCCHECK_GE(a, b, ...) if (ELPP_DEBUG_LOG) CCHECK_GE(a, b, __VA_ARGS__) +#define DCCHECK_BOUNDS(val, min, max, ...) if (ELPP_DEBUG_LOG) CCHECK_BOUNDS(val, min, max, __VA_ARGS__) +#define DCCHECK_NOTNULL(ptr, ...) if (ELPP_DEBUG_LOG) CCHECK_NOTNULL(ptr, __VA_ARGS__) +#define DCCHECK_STREQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STREQ(str1, str2, __VA_ARGS__) +#define DCCHECK_STRNE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRNE(str1, str2, __VA_ARGS__) +#define DCCHECK_STRCASEEQ(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASEEQ(str1, str2, __VA_ARGS__) +#define DCCHECK_STRCASENE(str1, str2, ...) if (ELPP_DEBUG_LOG) CCHECK_STRCASENE(str1, str2, __VA_ARGS__) +#define DCPCHECK(condition, ...) if (ELPP_DEBUG_LOG) CPCHECK(condition, __VA_ARGS__) +#define DCHECK(condition) DCCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_EQ(a, b) DCCHECK_EQ(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_NE(a, b) DCCHECK_NE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_LT(a, b) DCCHECK_LT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_GT(a, b) DCCHECK_GT(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_LE(a, b) DCCHECK_LE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_GE(a, b) DCCHECK_GE(a, b, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_BOUNDS(val, min, max) DCCHECK_BOUNDS(val, min, max, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_NOTNULL(ptr) DCCHECK_NOTNULL(ptr, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STREQ(str1, str2) DCCHECK_STREQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRNE(str1, str2) DCCHECK_STRNE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRCASEEQ(str1, str2) DCCHECK_STRCASEEQ(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DCHECK_STRCASENE(str1, str2) DCCHECK_STRCASENE(str1, str2, ELPP_CURR_FILE_LOGGER_ID) +#define DPCHECK(condition) DCPCHECK(condition, ELPP_CURR_FILE_LOGGER_ID) +#if defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) +# define ELPP_USE_DEF_CRASH_HANDLER false +#else +# define ELPP_USE_DEF_CRASH_HANDLER true +#endif // defined(ELPP_DISABLE_DEFAULT_CRASH_HANDLING) +#define ELPP_CRASH_HANDLER_INIT +#define ELPP_INIT_EASYLOGGINGPP(val)\ + ELPP_INITI_BASIC_DECLR\ + namespace el {\ + namespace base {\ + el::base::type::StoragePointer elStorage(val);\ + }\ + el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ + } + +#if ELPP_ASYNC_LOGGING +# define INITIALIZE_EASYLOGGINGPP\ + ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()),\ + new el::base::AsyncDispatchWorker()))\ + +#else +# define INITIALIZE_EASYLOGGINGPP\ + ELPP_INIT_EASYLOGGINGPP(new el::base::Storage(el::LogBuilderPtr(new el::base::DefaultLogBuilder()))) +#endif // ELPP_ASYNC_LOGGING +#define INITIALIZE_NULL_EASYLOGGINGPP\ + ELPP_INITI_BASIC_DECLR\ + namespace el {\ + namespace base {\ + el::base::type::StoragePointer elStorage;\ + }\ + el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ + } + // NOTE: no ELPP_INITI_BASIC_DECLR when sharing - causes double free corruption on external symbols +#define SHARE_EASYLOGGINGPP(initializedStorage)\ + namespace el {\ + namespace base {\ + el::base::type::StoragePointer elStorage(initializedStorage);\ + }\ + el::base::debug::CrashHandler elCrashHandler(ELPP_USE_DEF_CRASH_HANDLER);\ + } + +#if defined(ELPP_UNICODE) +# define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv); std::locale::global(std::locale("")) +#else +# define START_EASYLOGGINGPP(argc, argv) el::Helpers::setArgs(argc, argv) +#endif // defined(ELPP_UNICODE) +#endif // EASYLOGGINGPP_H \ No newline at end of file diff --git a/extensions/common/glm/CMakeLists.txt b/extensions/common/glm/CMakeLists.txt new file mode 100644 index 0000000000..fe28b5d975 --- /dev/null +++ b/extensions/common/glm/CMakeLists.txt @@ -0,0 +1,43 @@ +set(NAME glm_dummy) + +file(GLOB ROOT_SOURCE *.cpp) +file(GLOB ROOT_INLINE *.inl) +file(GLOB ROOT_HEADER *.hpp) +file(GLOB ROOT_TEXT ../*.txt) +file(GLOB ROOT_NAT ../util/glm.natvis) + +file(GLOB_RECURSE CORE_SOURCE ./detail/*.cpp) +file(GLOB_RECURSE CORE_INLINE ./detail/*.inl) +file(GLOB_RECURSE CORE_HEADER ./detail/*.hpp) + +file(GLOB_RECURSE GTC_SOURCE ./gtc/*.cpp) +file(GLOB_RECURSE GTC_INLINE ./gtc/*.inl) +file(GLOB_RECURSE GTC_HEADER ./gtc/*.hpp) + +file(GLOB_RECURSE GTX_SOURCE ./gtx/*.cpp) +file(GLOB_RECURSE GTX_INLINE ./gtx/*.inl) +file(GLOB_RECURSE GTX_HEADER ./gtx/*.hpp) + +source_group("Text Files" FILES ${ROOT_TEXT}) +source_group("Core Files" FILES ${CORE_SOURCE}) +source_group("Core Files" FILES ${CORE_INLINE}) +source_group("Core Files" FILES ${CORE_HEADER}) +source_group("GTC Files" FILES ${GTC_SOURCE}) +source_group("GTC Files" FILES ${GTC_INLINE}) +source_group("GTC Files" FILES ${GTC_HEADER}) +source_group("GTX Files" FILES ${GTX_SOURCE}) +source_group("GTX Files" FILES ${GTX_INLINE}) +source_group("GTX Files" FILES ${GTX_HEADER}) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..) + +if(GLM_TEST_ENABLE) + add_executable(${NAME} ${ROOT_TEXT} ${ROOT_NAT} + ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER} + ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER} + ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} + ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER}) +endif(GLM_TEST_ENABLE) + +#add_library(glm STATIC glm.cpp) +#add_library(glm_shared SHARED glm.cpp) diff --git a/extensions/common/glm/common.hpp b/extensions/common/glm/common.hpp new file mode 100644 index 0000000000..57beb106a9 --- /dev/null +++ b/extensions/common/glm/common.hpp @@ -0,0 +1,35 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/common.hpp +/// @date 2013-12-24 / 2013-12-24 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "detail/func_common.hpp" diff --git a/extensions/common/glm/detail/_features.hpp b/extensions/common/glm/detail/_features.hpp new file mode 100644 index 0000000000..ce2a35d9c1 --- /dev/null +++ b/extensions/common/glm/detail/_features.hpp @@ -0,0 +1,428 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/_features.hpp +/// @date 2013-02-20 / 2013-02-20 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +// #define GLM_CXX98_EXCEPTIONS +// #define GLM_CXX98_RTTI + +// #define GLM_CXX11_RVALUE_REFERENCES +// Rvalue references - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html + +// GLM_CXX11_TRAILING_RETURN +// Rvalue references for *this - GCC not supported +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm + +// GLM_CXX11_NONSTATIC_MEMBER_INIT +// Initialization of class objects by rvalues - GCC any +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html + +// GLM_CXX11_NONSTATIC_MEMBER_INIT +// Non-static data member initializers - GCC 4.7 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm + +// #define GLM_CXX11_VARIADIC_TEMPLATE +// Variadic templates - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf + +// +// Extending variadic template template parameters - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf + +// #define GLM_CXX11_GENERALIZED_INITIALIZERS +// Initializer lists - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm + +// #define GLM_CXX11_STATIC_ASSERT +// Static assertions - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html + +// #define GLM_CXX11_AUTO_TYPE +// auto-typed variables - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf + +// #define GLM_CXX11_AUTO_TYPE +// Multi-declarator auto - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf + +// #define GLM_CXX11_AUTO_TYPE +// Removal of auto as a storage-class specifier - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm + +// #define GLM_CXX11_AUTO_TYPE +// New function declarator syntax - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm + +// #define GLM_CXX11_LAMBDAS +// New wording for C++0x lambdas - GCC 4.5 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf + +// #define GLM_CXX11_DECLTYPE +// Declared type of an expression - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf + +// +// Right angle brackets - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html + +// +// Default template arguments for function templates DR226 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226 + +// +// Solving the SFINAE problem for expressions DR339 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html + +// #define GLM_CXX11_ALIAS_TEMPLATE +// Template aliases N2258 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf + +// +// Extern templates N1987 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm + +// #define GLM_CXX11_NULLPTR +// Null pointer constant N2431 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf + +// #define GLM_CXX11_STRONG_ENUMS +// Strongly-typed enums N2347 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf + +// +// Forward declarations for enums N2764 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf + +// +// Generalized attributes N2761 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf + +// +// Generalized constant expressions N2235 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf + +// +// Alignment support N2341 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf + +// #define GLM_CXX11_DELEGATING_CONSTRUCTORS +// Delegating constructors N1986 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf + +// +// Inheriting constructors N2540 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm + +// #define GLM_CXX11_EXPLICIT_CONVERSIONS +// Explicit conversion operators N2437 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf + +// +// New character types N2249 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html + +// +// Unicode string literals N2442 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm + +// +// Raw string literals N2442 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm + +// +// Universal character name literals N2170 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html + +// #define GLM_CXX11_USER_LITERALS +// User-defined literals N2765 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf + +// +// Standard Layout Types N2342 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm + +// #define GLM_CXX11_DEFAULTED_FUNCTIONS +// #define GLM_CXX11_DELETED_FUNCTIONS +// Defaulted and deleted functions N2346 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm + +// +// Extended friend declarations N1791 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf + +// +// Extending sizeof N2253 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html + +// #define GLM_CXX11_INLINE_NAMESPACES +// Inline namespaces N2535 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm + +// #define GLM_CXX11_UNRESTRICTED_UNIONS +// Unrestricted unions N2544 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf + +// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS +// Local and unnamed types as template arguments N2657 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm + +// #define GLM_CXX11_RANGE_FOR +// Range-based for N2930 GCC 4.6 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html + +// #define GLM_CXX11_OVERRIDE_CONTROL +// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm + +// +// Minimal support for garbage collection and reachability-based leak detection N2670 No +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm + +// #define GLM_CXX11_NOEXCEPT +// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only) +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html + +// +// Defining move special member functions N3053 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html + +// +// Sequence points N2239 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html + +// +// Atomic operations N2427 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html + +// +// Strong Compare and Exchange N2748 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html + +// +// Bidirectional Fences N2752 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm + +// +// Memory model N2429 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm + +// +// Data-dependency ordering: atomics and memory model N2664 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm + +// +// Propagating exceptions N2179 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html + +// +// Abandoning a process and at_quick_exit N2440 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm + +// +// Allow atomics use in signal handlers N2547 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm + +// +// Thread-local storage N2659 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm + +// +// Dynamic initialization and destruction with concurrency N2660 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm + +// +// __func__ predefined identifier N2340 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm + +// +// C99 preprocessor N1653 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm + +// +// long long N1811 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf + +// +// Extended integral types N1988 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf + +#if(GLM_COMPILER & GLM_COMPILER_GCC) + +# if(GLM_COMPILER >= GLM_COMPILER_GCC43) +# define GLM_CXX11_STATIC_ASSERT +# endif + +#elif(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM)) +# if(__has_feature(cxx_exceptions)) +# define GLM_CXX98_EXCEPTIONS +# endif + +# if(__has_feature(cxx_rtti)) +# define GLM_CXX98_RTTI +# endif + +# if(__has_feature(cxx_access_control_sfinae)) +# define GLM_CXX11_ACCESS_CONTROL_SFINAE +# endif + +# if(__has_feature(cxx_alias_templates)) +# define GLM_CXX11_ALIAS_TEMPLATE +# endif + +# if(__has_feature(cxx_alignas)) +# define GLM_CXX11_ALIGNAS +# endif + +# if(__has_feature(cxx_attributes)) +# define GLM_CXX11_ATTRIBUTES +# endif + +# if(__has_feature(cxx_constexpr)) +# define GLM_CXX11_CONSTEXPR +# endif + +# if(__has_feature(cxx_decltype)) +# define GLM_CXX11_DECLTYPE +# endif + +# if(__has_feature(cxx_default_function_template_args)) +# define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS +# endif + +# if(__has_feature(cxx_defaulted_functions)) +# define GLM_CXX11_DEFAULTED_FUNCTIONS +# endif + +# if(__has_feature(cxx_delegating_constructors)) +# define GLM_CXX11_DELEGATING_CONSTRUCTORS +# endif + +# if(__has_feature(cxx_deleted_functions)) +# define GLM_CXX11_DELETED_FUNCTIONS +# endif + +# if(__has_feature(cxx_explicit_conversions)) +# define GLM_CXX11_EXPLICIT_CONVERSIONS +# endif + +# if(__has_feature(cxx_generalized_initializers)) +# define GLM_CXX11_GENERALIZED_INITIALIZERS +# endif + +# if(__has_feature(cxx_implicit_moves)) +# define GLM_CXX11_IMPLICIT_MOVES +# endif + +# if(__has_feature(cxx_inheriting_constructors)) +# define GLM_CXX11_INHERITING_CONSTRUCTORS +# endif + +# if(__has_feature(cxx_inline_namespaces)) +# define GLM_CXX11_INLINE_NAMESPACES +# endif + +# if(__has_feature(cxx_lambdas)) +# define GLM_CXX11_LAMBDAS +# endif + +# if(__has_feature(cxx_local_type_template_args)) +# define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS +# endif + +# if(__has_feature(cxx_noexcept)) +# define GLM_CXX11_NOEXCEPT +# endif + +# if(__has_feature(cxx_nonstatic_member_init)) +# define GLM_CXX11_NONSTATIC_MEMBER_INIT +# endif + +# if(__has_feature(cxx_nullptr)) +# define GLM_CXX11_NULLPTR +# endif + +# if(__has_feature(cxx_override_control)) +# define GLM_CXX11_OVERRIDE_CONTROL +# endif + +# if(__has_feature(cxx_reference_qualified_functions)) +# define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS +# endif + +# if(__has_feature(cxx_range_for)) +# define GLM_CXX11_RANGE_FOR +# endif + +# if(__has_feature(cxx_raw_string_literals)) +# define GLM_CXX11_RAW_STRING_LITERALS +# endif + +# if(__has_feature(cxx_rvalue_references)) +# define GLM_CXX11_RVALUE_REFERENCES +# endif + +# if(__has_feature(cxx_static_assert)) +# define GLM_CXX11_STATIC_ASSERT +# endif + +# if(__has_feature(cxx_auto_type)) +# define GLM_CXX11_AUTO_TYPE +# endif + +# if(__has_feature(cxx_strong_enums)) +# define GLM_CXX11_STRONG_ENUMS +# endif + +# if(__has_feature(cxx_trailing_return)) +# define GLM_CXX11_TRAILING_RETURN +# endif + +# if(__has_feature(cxx_unicode_literals)) +# define GLM_CXX11_UNICODE_LITERALS +# endif + +# if(__has_feature(cxx_unrestricted_unions)) +# define GLM_CXX11_UNRESTRICTED_UNIONS +# endif + +# if(__has_feature(cxx_user_literals)) +# define GLM_CXX11_USER_LITERALS +# endif + +# if(__has_feature(cxx_variadic_templates)) +# define GLM_CXX11_VARIADIC_TEMPLATES +# endif + +#endif//(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM)) diff --git a/extensions/common/glm/detail/_fixes.hpp b/extensions/common/glm/detail/_fixes.hpp new file mode 100644 index 0000000000..9728cafb73 --- /dev/null +++ b/extensions/common/glm/detail/_fixes.hpp @@ -0,0 +1,59 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/_fixes.hpp +/// @date 2011-02-21 / 2011-11-22 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#include + +//! Workaround for compatibility with other libraries +#ifdef max +#undef max +#endif + +//! Workaround for compatibility with other libraries +#ifdef min +#undef min +#endif + +//! Workaround for Android +#ifdef isnan +#undef isnan +#endif + +//! Workaround for Android +#ifdef isinf +#undef isinf +#endif + +//! Workaround for Chrone Native Client +#ifdef log2 +#undef log2 +#endif + diff --git a/extensions/common/glm/detail/_noise.hpp b/extensions/common/glm/detail/_noise.hpp new file mode 100644 index 0000000000..296709d4b9 --- /dev/null +++ b/extensions/common/glm/detail/_noise.hpp @@ -0,0 +1,136 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/_noise.hpp +/// @date 2013-12-24 / 2013-12-24 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "../vec2.hpp" +#include "../vec3.hpp" +#include "../vec4.hpp" +#include "../common.hpp" + +namespace glm{ +namespace detail +{ + template + GLM_FUNC_QUALIFIER T mod289(T const & x) + { + return x - floor(x * static_cast(1.0) / static_cast(289.0)) * static_cast(289.0); + } + + template + GLM_FUNC_QUALIFIER T permute(T const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec2 permute(tvec2 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec3 permute(tvec3 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec4 permute(tvec4 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType permute(vecType const & x) + { + return mod289(((x * T(34)) + T(1)) * x); + } +*/ + template + GLM_FUNC_QUALIFIER T taylorInvSqrt(T const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER tvec2 taylorInvSqrt(tvec2 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER tvec3 taylorInvSqrt(tvec3 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER tvec4 taylorInvSqrt(tvec4 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType taylorInvSqrt(vecType const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } +*/ + + template + GLM_FUNC_QUALIFIER tvec2 fade(tvec2 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } + + template + GLM_FUNC_QUALIFIER tvec3 fade(tvec3 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } + + template + GLM_FUNC_QUALIFIER tvec4 fade(tvec4 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType fade(vecType const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } +*/ +}//namespace detail +}//namespace glm + diff --git a/extensions/common/glm/detail/_swizzle.hpp b/extensions/common/glm/detail/_swizzle.hpp new file mode 100644 index 0000000000..04ea55bcf2 --- /dev/null +++ b/extensions/common/glm/detail/_swizzle.hpp @@ -0,0 +1,833 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/_swizzle.hpp +/// @date 2006-04-20 / 2011-02-16 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +namespace glm{ +namespace detail +{ + // Internal class for implementing swizzle operators + template + struct _swizzle_base0 + { + typedef T value_type; + + protected: + GLM_FUNC_QUALIFIER value_type& elem (size_t i) { return (reinterpret_cast(_buffer))[i]; } + GLM_FUNC_QUALIFIER const value_type& elem (size_t i) const { return (reinterpret_cast(_buffer))[i]; } + + // Use an opaque buffer to *ensure* the compiler doesn't call a constructor. + // The size 1 buffer is assumed to aligned to the actual members so that the + // elem() + char _buffer[1]; + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1)); } + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); } + }; + + template + struct _swizzle_base1 : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); } + }; + + // Internal class for implementing swizzle operators + /* + Template parameters: + + ValueType = type of scalar values (e.g. float, double) + VecType = class the swizzle is applies to (e.g. tvec3) + N = number of components in the vector (e.g. 3) + E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec + + DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles + containing duplicate elements so that they cannot be used as r-values). + */ + template + struct _swizzle_base2 : public _swizzle_base1 + { + typedef VecType vec_type; + typedef ValueType value_type; + + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const ValueType& t) + { + for (int i = 0; i < N; ++i) + (*this)[i] = t; + return *this; + } + + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e = t; } + }; + _apply_op(that, op()); + return *this; + } + + GLM_FUNC_QUALIFIER void operator -= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e -= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator += (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e += t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator *= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e *= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator /= (const VecType& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e /= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER value_type& operator[] (size_t i) + { + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const + { + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + + protected: + template + GLM_FUNC_QUALIFIER void _apply_op(const VecType& that, T op) + { + // Make a copy of the data in this == &that. + // The copier should optimize out the copy in cases where the function is + // properly inlined and the copy is not necessary. + ValueType t[N]; + for (int i = 0; i < N; ++i) + t[i] = that[i]; + for (int i = 0; i < N; ++i) + op( (*this)[i], t[i] ); + } + }; + + // Specialization for swizzles containing duplicate elements. These cannot be modified. + template + struct _swizzle_base2 : public _swizzle_base1 + { + typedef VecType vec_type; + typedef ValueType value_type; + + struct Stub {}; + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const &) { return *this; } + + GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const + { + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + }; + + template + struct _swizzle : public _swizzle_base2 + { + typedef _swizzle_base2 base_type; + + using base_type::operator=; + + GLM_FUNC_QUALIFIER operator VecType () const { return (*this)(); } + }; + +// +// To prevent the C++ syntax from getting entirely overwhelming, define some alias macros +// +#define _GLM_SWIZZLE_TEMPLATE1 template +#define _GLM_SWIZZLE_TEMPLATE2 template +#define _GLM_SWIZZLE_TYPE1 _swizzle +#define _GLM_SWIZZLE_TYPE2 _swizzle + +// +// Wrapper for a binary operator (e.g. u.yy + v.zy) +// +#define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + { \ + return a() OPERAND b(); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \ + { \ + return a() OPERAND b; \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return a OPERAND b(); \ + } + +// +// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz) +// +#define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \ + { \ + return a() OPERAND b; \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return a OPERAND b(); \ + } + +// +// Macro for wrapping a function taking one argument (e.g. abs()) +// +#define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \ + { \ + return FUNCTION(a()); \ + } + +// +// Macro for wrapping a function taking two vector arguments (e.g. dot()). +// +#define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + { \ + return FUNCTION(a(), b()); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return FUNCTION(a(), b()); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \ + { \ + return FUNCTION(a(), b); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return FUNCTION(a, b()); \ + } + +// +// Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()). +// +#define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \ + { \ + return FUNCTION(a(), b(), c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + { \ + return FUNCTION(a(), b(), c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\ + { \ + return FUNCTION(a(), b, c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + { \ + return FUNCTION(a, b(), c); \ + } + +}//namespace detail +}//namespace glm + +namespace glm +{ + namespace detail + { + _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-) + _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/) + } + + // + // Swizzles are distinct types from the unswizzled type. The below macros will + // provide template specializations for the swizzle types for the given functions + // so that the compiler does not have any ambiguity to choosing how to handle + // the function. + // + // The alternative is to use the operator()() when calling the function in order + // to explicitly convert the swizzled type to the unswizzled type. + // + + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any); + + //_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot); + //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross); + //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step); + //_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix); +} + +#define _GLM_SWIZZLE2_2_MEMBERS(T, P, V, E0,E1) \ + struct { detail::_swizzle<2, T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { detail::_swizzle<2, T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { detail::_swizzle<2, T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { detail::_swizzle<2, T, P, V, 1,1,-1,-2> E1 ## E1; }; + +#define _GLM_SWIZZLE2_3_MEMBERS(T, P, V, E0,E1) \ + struct { detail::_swizzle<3,T, P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T, P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T, P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T, P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 1,1,1,-1> E1 ## E1 ## E1; }; + +#define _GLM_SWIZZLE2_4_MEMBERS(T, P, V, E0,E1) \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; + +#define _GLM_SWIZZLE3_2_MEMBERS(T, P, V, E0,E1,E2) \ + struct { detail::_swizzle<2,T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 0,2,-1,-2> E0 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 1,1,-1,-2> E1 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 1,2,-1,-2> E1 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 2,0,-1,-2> E2 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 2,1,-1,-2> E2 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 2,2,-1,-2> E2 ## E2; }; + +#define _GLM_SWIZZLE3_3_MEMBERS(T, P, V ,E0,E1,E2) \ + struct { detail::_swizzle<3,T,P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 0,0,2,-1> E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 0,1,2,-1> E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 0,2,0,-1> E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 0,2,1,-1> E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 0,2,2,-1> E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 1,0,2,-1> E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 1,1,1,-1> E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 1,1,2,-1> E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 1,2,0,-1> E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 1,2,1,-1> E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 1,2,2,-1> E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 2,0,0,-1> E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 2,0,1,-1> E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 2,0,2,-1> E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 2,1,0,-1> E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 2,1,1,-1> E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 2,1,2,-1> E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 2,2,0,-1> E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 2,2,1,-1> E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 2,2,2,-1> E2 ## E2 ## E2; }; + +#define _GLM_SWIZZLE3_4_MEMBERS(T, P, V, E0,E1,E2) \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; + +#define _GLM_SWIZZLE4_2_MEMBERS(T, P, V, E0,E1,E2,E3) \ + struct { detail::_swizzle<2,T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 0,2,-1,-2> E0 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 0,3,-1,-2> E0 ## E3; }; \ + struct { detail::_swizzle<2,T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 1,1,-1,-2> E1 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 1,2,-1,-2> E1 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 1,3,-1,-2> E1 ## E3; }; \ + struct { detail::_swizzle<2,T, P, V, 2,0,-1,-2> E2 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 2,1,-1,-2> E2 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 2,2,-1,-2> E2 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 2,3,-1,-2> E2 ## E3; }; \ + struct { detail::_swizzle<2,T, P, V, 3,0,-1,-2> E3 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 3,1,-1,-2> E3 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 3,2,-1,-2> E3 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 3,3,-1,-2> E3 ## E3; }; + +#define _GLM_SWIZZLE4_3_MEMBERS(T,P, V, E0,E1,E2,E3) \ + struct { detail::_swizzle<3,T,P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 0,0,2,-1> E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 0,0,3,-1> E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 0,1,2,-1> E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 0,1,3,-1> E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 0,2,0,-1> E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 0,2,1,-1> E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 0,2,2,-1> E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 0,2,3,-1> E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 0,3,0,-1> E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 0,3,1,-1> E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 0,3,2,-1> E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 0,3,3,-1> E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 1,0,2,-1> E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 1,0,3,-1> E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 1,1,1,-1> E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 1,1,2,-1> E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 1,1,3,-1> E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 1,2,0,-1> E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 1,2,1,-1> E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 1,2,2,-1> E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 1,2,3,-1> E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 1,3,0,-1> E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 1,3,1,-1> E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 1,3,2,-1> E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 1,3,3,-1> E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 2,0,0,-1> E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 2,0,1,-1> E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 2,0,2,-1> E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 2,0,3,-1> E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 2,1,0,-1> E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 2,1,1,-1> E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 2,1,2,-1> E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 2,1,3,-1> E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 2,2,0,-1> E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 2,2,1,-1> E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 2,2,2,-1> E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 2,2,3,-1> E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 2,3,0,-1> E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 2,3,1,-1> E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 2,3,2,-1> E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 2,3,3,-1> E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 3,0,0,-1> E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 3,0,1,-1> E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 3,0,2,-1> E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 3,0,3,-1> E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 3,1,0,-1> E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 3,1,1,-1> E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 3,1,2,-1> E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 3,1,3,-1> E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 3,2,0,-1> E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 3,2,1,-1> E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 3,2,2,-1> E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 3,2,3,-1> E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<3,T,P, V, 3,3,0,-1> E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<3,T,P, V, 3,3,1,-1> E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<3,T,P, V, 3,3,2,-1> E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<3,T,P, V, 3,3,3,-1> E3 ## E3 ## E3; }; + +#define _GLM_SWIZZLE4_4_MEMBERS(T, P, V, E0,E1,E2,E3) \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,3> E3 ## E3 ## E3 ## E3; }; diff --git a/extensions/common/glm/detail/_swizzle_func.hpp b/extensions/common/glm/detail/_swizzle_func.hpp new file mode 100644 index 0000000000..4dbb783c5b --- /dev/null +++ b/extensions/common/glm/detail/_swizzle_func.hpp @@ -0,0 +1,725 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/_swizzle_func.hpp +/// @date 2011-10-16 / 2011-10-16 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ + SWIZZLED_TYPE A ## B() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B); \ + } + +#define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ + SWIZZLED_TYPE A ## B ## C() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C); \ + } + +#define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ + SWIZZLED_TYPE A ## B ## C ## D() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C, this->D); \ + } + +#define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B); \ + } + +#define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B ## C() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C); \ + } + +#define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B ## C ## D() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C, this->D); \ + } + +#define GLM_MUTABLE + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2) + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) + +#define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, p) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3) + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C) + +#define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B) + +#define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4) diff --git a/extensions/common/glm/detail/_vectorize.hpp b/extensions/common/glm/detail/_vectorize.hpp new file mode 100644 index 0000000000..1deff1e080 --- /dev/null +++ b/extensions/common/glm/detail/_vectorize.hpp @@ -0,0 +1,160 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/_vectorize.hpp +/// @date 2011-10-14 / 2011-10-14 +/// @author Christophe Riccio +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "type_vec1.hpp" +#include "type_vec2.hpp" +#include "type_vec3.hpp" +#include "type_vec4.hpp" + +namespace glm{ +namespace detail +{ + template class vecType> + struct functor1{}; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec1 call(R (*Func) (T x), tvec1 const & v) + { + return tvec1(Func(v.x)); + } + }; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec2 call(R (*Func) (T x), tvec2 const & v) + { + return tvec2(Func(v.x), Func(v.y)); + } + }; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec3 call(R (*Func) (T x), tvec3 const & v) + { + return tvec3(Func(v.x), Func(v.y), Func(v.z)); + } + }; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec4 call(R (*Func) (T x), tvec4 const & v) + { + return tvec4(Func(v.x), Func(v.y), Func(v.z), Func(v.w)); + } + }; + + template class vecType> + struct functor2{}; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec1 call(T (*Func) (T x, T y), tvec1 const & a, tvec1 const & b) + { + return tvec1(Func(a.x, b.x)); + } + }; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec2 call(T (*Func) (T x, T y), tvec2 const & a, tvec2 const & b) + { + return tvec2(Func(a.x, b.x), Func(a.y, b.y)); + } + }; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec3 call(T (*Func) (T x, T y), tvec3 const & a, tvec3 const & b) + { + return tvec3(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z)); + } + }; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec4 call(T (*Func) (T x, T y), tvec4 const & a, tvec4 const & b) + { + return tvec4(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w)); + } + }; + + template class vecType> + struct functor2_vec_sca{}; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec1 call(T (*Func) (T x, T y), tvec1 const & a, T b) + { + return tvec1(Func(a.x, b)); + } + }; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec2 call(T (*Func) (T x, T y), tvec2 const & a, T b) + { + return tvec2(Func(a.x, b), Func(a.y, b)); + } + }; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec3 call(T (*Func) (T x, T y), tvec3 const & a, T b) + { + return tvec3(Func(a.x, b), Func(a.y, b), Func(a.z, b)); + } + }; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec4 call(T (*Func) (T x, T y), tvec4 const & a, T b) + { + return tvec4(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b)); + } + }; +}//namespace detail +}//namespace glm diff --git a/extensions/common/glm/detail/dummy.cpp b/extensions/common/glm/detail/dummy.cpp new file mode 100644 index 0000000000..88d8f3b807 --- /dev/null +++ b/extensions/common/glm/detail/dummy.cpp @@ -0,0 +1,232 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/core/dummy.cpp +/// @date 2011-01-19 / 2011-06-15 +/// @author Christophe Riccio +/// +/// GLM is a header only library. There is nothing to compile. +/// dummy.cpp exist only a wordaround for CMake file. +/////////////////////////////////////////////////////////////////////////////////// + +#define GLM_MESSAGES +#include +#include +#include + +struct material +{ + glm::vec4 emission; // Ecm + glm::vec4 ambient; // Acm + glm::vec4 diffuse; // Dcm + glm::vec4 specular; // Scm + float shininess; // Srm +}; + +struct light +{ + glm::vec4 ambient; // Acli + glm::vec4 diffuse; // Dcli + glm::vec4 specular; // Scli + glm::vec4 position; // Ppli + glm::vec4 halfVector; // Derived: Hi + glm::vec3 spotDirection; // Sdli + float spotExponent; // Srli + float spotCutoff; // Crli + // (range: [0.0,90.0], 180.0) + float spotCosCutoff; // Derived: cos(Crli) + // (range: [1.0,0.0],-1.0) + float constantAttenuation; // K0 + float linearAttenuation; // K1 + float quadraticAttenuation;// K2 +}; + + +// Sample 1 +#include // glm::vec3 +#include // glm::cross, glm::normalize + +glm::vec3 computeNormal +( + glm::vec3 const & a, + glm::vec3 const & b, + glm::vec3 const & c +) +{ + return glm::normalize(glm::cross(c - a, b - a)); +} + +typedef unsigned int GLuint; +#define GL_FALSE 0 +void glUniformMatrix4fv(GLuint, int, int, float*){} + +// Sample 2 +#include // glm::vec3 +#include // glm::vec4, glm::ivec4 +#include // glm::mat4 +#include // glm::translate, glm::rotate, glm::scale, glm::perspective +#include // glm::value_ptr +void func(GLuint LocationMVP, float Translate, glm::vec2 const & Rotate) +{ + glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); + glm::mat4 ViewTranslate = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate)); + glm::mat4 ViewRotateX = glm::rotate(ViewTranslate, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f)); + glm::mat4 View = glm::rotate(ViewRotateX, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f)); + glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f)); + glm::mat4 MVP = Projection * View * Model; + glUniformMatrix4fv(LocationMVP, 1, GL_FALSE, glm::value_ptr(MVP)); +} + +// Sample 3 +#include // glm::vec2 +#include // glm::packUnorm2x16 +#include // glm::uint +#include // glm::i8vec2, glm::i32vec2 +std::size_t const VertexCount = 4; +// Float quad geometry +std::size_t const PositionSizeF32 = VertexCount * sizeof(glm::vec2); +glm::vec2 const PositionDataF32[VertexCount] = +{ + glm::vec2(-1.0f,-1.0f), + glm::vec2( 1.0f,-1.0f), + glm::vec2( 1.0f, 1.0f), + glm::vec2(-1.0f, 1.0f) + }; +// Half-float quad geometry +std::size_t const PositionSizeF16 = VertexCount * sizeof(glm::uint); +glm::uint const PositionDataF16[VertexCount] = +{ + glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, -1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, -1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, 1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, 1.0f))) +}; +// 8 bits signed integer quad geometry +std::size_t const PositionSizeI8 = VertexCount * sizeof(glm::i8vec2); +glm::i8vec2 const PositionDataI8[VertexCount] = +{ + glm::i8vec2(-1,-1), + glm::i8vec2( 1,-1), + glm::i8vec2( 1, 1), + glm::i8vec2(-1, 1) +}; +// 32 bits signed integer quad geometry +std::size_t const PositionSizeI32 = VertexCount * sizeof(glm::i32vec2); +glm::i32vec2 const PositionDataI32[VertexCount] = +{ + glm::i32vec2 (-1,-1), + glm::i32vec2 ( 1,-1), + glm::i32vec2 ( 1, 1), + glm::i32vec2 (-1, 1) +}; + +struct intersection +{ + glm::vec4 position; + glm::vec3 normal; +}; + +/* +// Sample 4 +#include // glm::vec3 +#include // glm::normalize, glm::dot, glm::reflect +#include // glm::pow +#include // glm::vecRand3 +glm::vec3 lighting +( + intersection const & Intersection, + material const & Material, + light const & Light, + glm::vec3 const & View +) +{ + glm::vec3 Color(0.0f); + glm::vec3 LightVertor(glm::normalize( + Light.position - Intersection.position + + glm::vecRand3(0.0f, Light.inaccuracy)); + + if(!shadow(Intersection.position, Light.position, LightVertor)) + { + float Diffuse = glm::dot(Intersection.normal, LightVector); + if(Diffuse <= 0.0f) + return Color; + if(Material.isDiffuse()) + Color += Light.color() * Material.diffuse * Diffuse; + if(Material.isSpecular()) + { + glm::vec3 Reflect(glm::reflect( + glm::normalize(-LightVector), + glm::normalize(Intersection.normal))); + float Dot = glm::dot(Reflect, View); + float Base = Dot > 0.0f ? Dot : 0.0f; + float Specular = glm::pow(Base, Material.exponent); + Color += Material.specular * Specular; + } + } + return Color; +} +*/ + + +template class vecType> +T normalizeDotA(vecType const & x, vecType const & y) +{ + return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); +} + +#define GLM_TEMPLATE_GENTYPE typename T, glm::precision P, template class + +template +T normalizeDotB(vecType const & x, vecType const & y) +{ + return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); +} + +template +typename vecType::value_type normalizeDotC(vecType const & a, vecType const & b) +{ + return glm::dot(a, b) * glm::inversesqrt(glm::dot(a, a) * glm::dot(b, b)); +} + +int main() +{ + glm::vec1 o(1); + glm::vec2 a(1); + glm::vec3 b(1); + glm::vec4 c(1); + + glm::quat q; + glm::dualquat p; + + glm::mat4 m(1); + + float a0 = normalizeDotA(a, a); + float b0 = normalizeDotB(b, b); + float c0 = normalizeDotC(c, c); + + return 0; +} diff --git a/extensions/common/glm/detail/func_common.hpp b/extensions/common/glm/detail/func_common.hpp new file mode 100644 index 0000000000..da28007b05 --- /dev/null +++ b/extensions/common/glm/detail/func_common.hpp @@ -0,0 +1,456 @@ +/////////////////////////////////////////////////////////////////////////////////// +/// OpenGL Mathematics (glm.g-truc.net) +/// +/// Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) +/// Permission is hereby granted, free of charge, to any person obtaining a copy +/// of this software and associated documentation files (the "Software"), to deal +/// in the Software without restriction, including without limitation the rights +/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +/// copies of the Software, and to permit persons to whom the Software is +/// furnished to do so, subject to the following conditions: +/// +/// The above copyright notice and this permission notice shall be included in +/// all copies or substantial portions of the Software. +/// +/// Restrictions: +/// By making use of the Software for military purposes, you choose to make +/// a Bunny unhappy. +/// +/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +/// THE SOFTWARE. +/// +/// @ref core +/// @file glm/detail/func_common.hpp +/// @date 2008-03-08 / 2010-01-26 +/// @author Christophe Riccio +/// +/// @see GLSL 4.20.8 specification, section 8.3 Common Functions +/// +/// @defgroup core_func_common Common functions +/// @ingroup core +/// +/// These all operate component-wise. The description is per component. +/////////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "setup.hpp" +#include "precision.hpp" +#include "type_int.hpp" +#include "_fixes.hpp" + +namespace glm +{ + /// @addtogroup core_func_common + /// @{ + + /// Returns x if x >= 0; otherwise, it returns -x. + /// + /// @tparam genType floating-point or signed integer; scalar or vector types. + /// + /// @see GLSL abs man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType abs(genType x); + + template class vecType> + GLM_FUNC_DECL vecType abs(vecType const & x); + + /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. + /// + /// @tparam genType Floating-point or signed integer; scalar or vector types. + /// + /// @see GLSL sign man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType sign(vecType const & x); + + /// Returns a value equal to the nearest integer that is less then or equal to x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL floor man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType floor(vecType const & x); + + /// Returns a value equal to the nearest integer to x + /// whose absolute value is not larger than the absolute value of x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL trunc man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType trunc(vecType const & x); + + /// Returns a value equal to the nearest integer to x. + /// The fraction 0.5 will round in a direction chosen by the + /// implementation, presumably the direction that is fastest. + /// This includes the possibility that round(x) returns the + /// same value as roundEven(x) for all values of x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL round man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType round(vecType const & x); + + /// Returns a value equal to the nearest integer to x. + /// A fractional part of 0.5 will round toward the nearest even + /// integer. (Both 3.5 and 4.5 for x will return 4.0.) + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL roundEven man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + /// @see New round to even technique + template class vecType> + GLM_FUNC_DECL vecType roundEven(vecType const & x); + + /// Returns a value equal to the nearest integer + /// that is greater than or equal to x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL ceil man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType ceil(vecType const & x); + + /// Return x - floor(x). + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL fract man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType fract(genType x); + + template class vecType> + GLM_FUNC_DECL vecType fract(vecType const & x); + + /// Modulus. Returns x - y * floor(x / y) + /// for each component in x using the floating point value y. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL mod man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType mod(genType x, genType y); + + template class vecType> + GLM_FUNC_DECL vecType mod(vecType const & x, T y); + + template class vecType> + GLM_FUNC_DECL vecType mod(vecType const & x, vecType const & y); + + /// Returns the fractional part of x and sets i to the integer + /// part (as a whole number floating point value). Both the + /// return value and the output parameter will have the same + /// sign as x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL modf man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType modf(genType x, genType & i); + + /// Returns y if y < x; otherwise, it returns x. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL min man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType min(genType x, genType y); + + template class vecType> + GLM_FUNC_DECL vecType min(vecType const & x, T y); + + template class vecType> + GLM_FUNC_DECL vecType min(vecType const & x, vecType const & y); + + /// Returns y if x < y; otherwise, it returns x. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL max man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType max(genType x, genType y); + + template class vecType> + GLM_FUNC_DECL vecType max(vecType const & x, T y); + + template class vecType> + GLM_FUNC_DECL vecType max(vecType const & x, vecType const & y); + + /// Returns min(max(x, minVal), maxVal) for each component in x + /// using the floating-point values minVal and maxVal. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL clamp man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal); + + template class vecType> + GLM_FUNC_DECL vecType clamp(vecType const & x, T minVal, T maxVal); + + template class vecType> + GLM_FUNC_DECL vecType clamp(vecType const & x, vecType const & minVal, vecType const & maxVal); + + /// If genTypeU is a floating scalar or vector: + /// Returns x * (1.0 - a) + y * a, i.e., the linear blend of + /// x and y using the floating-point value a. + /// The value for a is not restricted to the range [0, 1]. + /// + /// If genTypeU is a boolean scalar or vector: + /// Selects which vector each returned component comes + /// from. For a component of that is false, the + /// corresponding component of x is returned. For a + /// component of a that is true, the corresponding + /// component of y is returned. Components of x and y that + /// are not selected are allowed to be invalid floating point + /// values and will have no effect on the results. Thus, this + /// provides different functionality than + /// genType mix(genType x, genType y, genType(a)) + /// where a is a Boolean vector. + /// + /// @see GLSL mix man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + /// + /// @param[in] x Value to interpolate. + /// @param[in] y Value to interpolate. + /// @param[in] a Interpolant. + /// + /// @tparam genTypeT Floating point scalar or vector. + /// @tparam genTypeU Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT. + /// + /// @code + /// #include + /// ... + /// float a; + /// bool b; + /// glm::dvec3 e; + /// glm::dvec3 f; + /// glm::vec4 g; + /// glm::vec4 h; + /// ... + /// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors. + /// glm::vec4 s = glm::mix(g, h, b); // Teturns g or h; + /// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second. + /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter. + /// @endcode + template class vecType> + GLM_FUNC_DECL vecType mix(vecType const & x, vecType const & y, vecType const & a); + + template class vecType> + GLM_FUNC_DECL vecType mix(vecType const & x, vecType const & y, U a); + + template + GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a); + + /// Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType. + /// + /// @see GLSL step man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType step(genType edge, genType x); + + /// Returns 0.0 if x < edge, otherwise it returns 1.0. + /// + /// @see GLSL step man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template