From c1f7286b869e30c1632832890db1b2678fa7e19a Mon Sep 17 00:00:00 2001 From: flowtron Date: Sat, 9 Oct 2010 20:05:43 +0000 Subject: [PATCH] nade-in-hand explodes => suicide & some minor other stuff git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@5730 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- packages/locale/de/LC_MESSAGES/AC.mo | Bin 8229 -> 8457 bytes source/locale/de/LC_MESSAGES/AC.po | 3 ++- source/src/entity.h | 22 +++++++++++++++++----- source/src/serverevents.h | 5 +++++ source/src/weapon.cpp | 8 ++++---- source/src/weapon.h | 2 +- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/packages/locale/de/LC_MESSAGES/AC.mo b/packages/locale/de/LC_MESSAGES/AC.mo index 74cd7f19652bb82fddbedac5391385a4906d7709..56cce47dc80acbcd08c9827c38f46aba46a5f926 100644 GIT binary patch delta 3512 zcmZ{le{5A}8OPra#!B5Bg;LrA?b{!BE0lY8d+9n_a1^*uO4m{;bWC9G{&;WiN$))u z&X2ZYmh1Rq86i>eWC=_5hcOzr#bg?c6HPQxGZy!U{zKG2jB#dhF&MMB4C5w#o^#Jd zT=dO-&gXsK^Zxuk&vWj##?J4p{(kMs7ZoLkZNi3DD0Ln_v5E)fbfZ#fcm@u^AHX>L z3w#*1uU4uL?txoj0e%Kvgq`qLa6SAh+yhrODb)oJz-FbYszBvII+o#X_yT+cz6HnN zE!YA_K2_s1Y^R-z+RsAS=xb0m`W{>duR_`AI(!uV6W$94@8=NkF?b*Qt6fn?8p@3( zAY;{;sQ+2WWz{*zPhH@#5nh5K()Zzh_+!`x8y={=?|=`{9)@zDQ;?rJ!$ZR=T+ROK z>r|MlUW0@14ftvJ9+VAk!B%)1ic+n-lm#DxYvCxA{;8<{6lAD61J}SR6otMD<>0Tw z?eJ|_#Ruv(74dyDtB6DiC<_lk*=QWfxD!woE<+jjMJP9X4$47afpXB-;b!9?T_;xwsC8%lt5X!vY z!TaFfA@Qs}f)X2YnqJTfW#7@Y=r5HyI%I$YB?exI+TVo|EN?>2q~4Br10HEm>L%Px z{}>Uv1AZyu6_}#^J{*QI7MF1+;S78kCgII06_KJ7-6V*1L6P(vlwf)_;?JO@=yf;* zcW+SYF!Z3z{{>_z^+(tZZ$WWY2a8C%AIe1!LAE{c~`V_IW7MUxP9D54eT>RTmCJB{czMp{L?6~`B8hoMY-9*V>-L5cD=pe*zg*afde?>~S9xLU_xQKlDeg9A_wdK}6{@=(KN zDDkIWq9W<>9XJJl1La0B9#mc3h46e+_$R{|(CbV;zGZgBr@b;}Msk#K0xU z(&|T0l>RNO-b3YGDst2Jpe*na?1w|T_H91}MY3~n5MG3Yf%-WVMQ%VcOuYl;h9AHN zxC=Xq?Zc!~vH0l(2MS;7EWQ!ES zC3NdOP~2QEa)DX#f4$(oP-c<%nR+KoM|BCtlbFU%Vd86oIE-cx{_8yr#pfco6iMZ~ z%OM&PTRWr9q5A%rsDrc(|0apWFcx;hCou7sWXY45xL^fVFB4P-Fmb^VOoH*l5sn9Dm9u+4kQOJcdvV(VMQsE4^l0|P0-jX zmP^eAZcBf2(Ku&)*E6M3z4x`2)aYczwmqX`x$O(avW=cIPS&#XzCF)Gebz7QS>r4k zM>GA-_E}%e1(WT)4Rb-I{qTt?%d7huA+o5; znIs&-+NfxB)GT|xqx; z9tsX_99Su_87yu**)r?-<+7=5YMfA?>EPXseRJUf!^OjpLZ@rn1Ytgh!x7!SOi4xZW6+3`P>3*`bJEJ;bmZ z?Ae^u^}E+1d$DpSziT(1y?k-=Ktph&vwao*B>jWyon0%0A9wB?FJ=(&j_}^Nsc;;7EJZ_QvFu&>NVDv_EbUdu MIefk?_-R++-^@*UfdBvi delta 3284 zcmZ{kZEPGz8OO(on-@1}8pn;}#<9nVohEk9J)i3&b<(^#P3$Jb#4#alAl<(u7S(h-?XFy?NBG` zg3L9e>G&k%kmg~?&lGrUgcqTb^c8pn#&83?nZExU+)DqB)e8X)L4IbGhlOY0O7=I8 z(_pT-1P9=A@DBJg)CRA^_3#E%rrw1*;lE%rY-X~?d!WXLAg|0Qyc3>*%Fr}a;7`Fp zcm>v}fw@6Lwf_rLik7jO7G4FlU?bL{3g^oKZU*U zH8=)8Oy3{5ll&{90%4wkb*NO|fOo?`Kn3;@L^oywQDop|sM?OFya+A*%TV9F2$#cO zLG*0igwn=uq4s+>Wm7Zx*Nd%$soL*_>KCCzG7s6?)KgxDry7j;4m`m4-$~E?a0rF& zgjJY>--9~wO}HO6vgkM*fx0cvLk04aIt_{EI#ep#$)7}YIOREbmVN~9gRj98u(5UF z7My~7YRa$+UVR>p-${Wr8-E*pMZVzpM<&< zKZHu{OHf*PCFQT7O7&Ly{-00>YvitOfn%@-`cQ#=6_T8~`8f?O^afPQ{s^1kDhjES zw8BZ)2Nl>Cp#u3bl&Zf5HUCFYCw&>BFY_kUt$G`hH1i%r-)04Q*LW-J*ZuEK8mJkb z9x=U@!Zd z4``^STUbpe`W(~-m!bZaUx2z5>v*a0cDNbtg*wT3xC@rk_g7QC3Z;p+AxoHLe5_1& z!zC~W>(syu(U2&{pwt;aiR$Yx3x5D9r+Eu16CXfskoh;%$<|t9xD-hlB&tO_MMJme z)40SflLi#*Q5=2L6LAgGQL1EQJ28*v0bD81;1l?w=_;MUb*eFZ53WFRxa<)ADO_n@ zG-6HcVVQgvO5OGt|*70aYz>Ebs0EPf2X7uWrjNgKMFx;4^+Yy|JR zR$1}V%J_KmUw3AAXR^C(Hak4Ht1p|&W}C)OW=^@;Qc$Y;nGr8^!#0;4$Y!#;G6Pwg z%MItU%)3@ux4NM*@S>^siI$zWtKodpQ^?K6KWo{x#)~e@M|m$=9Q#L0u79TL`=PTv zg+aemm=2k1=c9_9aJ5-ivv|Jb7xlqFcOf?u=kIzpmwuAW|38xpga0!r&aR(qh~h7; zFWpkYe`H(d$_-i;UdXB`ti!9zds0*9S;VazZ@Qp^2vNoTqz|H5y6p?AB3)4 zj{GS*SE|i~W|Dns@t-&Jt}YSExEBO-)moT|x3}$S$j7d&yWv9oOxws3GaFxT+tM%_ zf7o_%Obh;3eaS2JRi%>_2@A|IFA6iK-Q!_Yvlk*_9URG=s1{wBm$xcb_TsB|Z&@-~ zi3c{Vf6x_6Vae4f!+d0Cs?PUm5+z0B`$DyPQ8Vns#gZ$BpTB5HP}PN{snBj4*lxUX z+1aof#&%<7Z!*UbR+kw?ii=-t?g{vr=_*r;u2Q8U{r&wP_th!IS2mtpo~kMSXk*_} zWEJKR9-2w&w6K58CZ9-=N_yCD7NmMB zQ^w;YoY)+k3AvUFc~LIn6PuptaDI5f)u?)!>difcpeN`l)Hd7Msvp0 25 ? damage * ( 2500 + 16 * armour ) / 10000 : ( damage * 16 ) / 100; - if(ad>armour) ad = armour; - armour -= ad; - damage -= ad; + /* 4-level armor - sectioned approach: 16%, 33%, 37%, 41% */ + int armoursection = 0; + int ad = damage; + if(armour > 25) armoursection = 1; + if(armour > 50) armoursection = 2; + if(armour > 75) armoursection = 3; + switch(armoursection) + { + case 0: ad = (int) (16.0f/25.0f * armour); break; // 16 + case 1: ad = (int) (17.0f/25.0f * armour) - 1; break; // 33 + case 2: ad = (int) (4.0f/25.0f * armour) + 25; break; // 37 + case 3: ad = (int) (4.0f/25.0f * armour) + 25; break; // 41 + default: break; + } + int rd = ad * damage/100.0f; + armour -= rd; + damage -= rd; health -= damage; return damage; } diff --git a/source/src/serverevents.h b/source/src/serverevents.h index 83926fad..f1a1c0eb 100644 --- a/source/src/serverevents.h +++ b/source/src/serverevents.h @@ -24,6 +24,11 @@ void processevent(client *c, explodeevent &e) if(jclientnum == target->clientnum; + if(chk_gun && chk_dir && chk_dst && chk_cnr) damage = INT_MAX; // nade suicide serverdamage(target, c, damage, e.gun, true, h.dir); } } diff --git a/source/src/weapon.cpp b/source/src/weapon.cpp index 37df5db5..ff1271eb 100644 --- a/source/src/weapon.cpp +++ b/source/src/weapon.cpp @@ -799,7 +799,7 @@ bool weapon::valid(int id) { return id>=0 && idvel = vel; this->o = from; this->resetinterp(); @@ -896,7 +896,7 @@ void grenadeent::moveoutsidebbox(const vec &direction, playerent *boundingbox) } void grenadeent::destroy() { explode(); } -bool grenadeent::applyphysics() { return nadestate==NS_THROWED; } +bool grenadeent::applyphysics() { return nadestate==NS_THROWN; } void grenadeent::oncollision() { diff --git a/source/src/weapon.h b/source/src/weapon.h index 703bba47..23f82c76 100644 --- a/source/src/weapon.h +++ b/source/src/weapon.h @@ -52,7 +52,7 @@ struct weapon class grenadeent; -enum { GST_NONE, GST_INHAND, GST_THROWING }; +enum { GST_NONE = 0, GST_INHAND, GST_THROWING }; struct grenades : weapon {