From 404b5f666cfa3c60d7d4637d3d3193431f3bf941 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Tue, 11 Nov 2014 19:55:07 -0500 Subject: [PATCH] SRB2 2.1.12 release --- doc/manual/1up.png | Bin 1106 -> 0 bytes doc/manual/RNGA0000.png | Bin 1094 -> 0 bytes doc/manual/RNGB0000.png | Bin 1275 -> 0 bytes doc/manual/RNGE0000.png | Bin 1323 -> 0 bytes doc/manual/RNGG0000.png | Bin 1227 -> 0 bytes doc/manual/RNGR0000.png | Bin 1161 -> 0 bytes doc/manual/RNGS0000.png | Bin 1127 -> 0 bytes doc/manual/Ring0000.png | Bin 1174 -> 0 bytes doc/manual/acz.png | Bin 43670 -> 0 bytes doc/manual/airspin.png | Bin 3384 -> 0 bytes doc/manual/attack.png | Bin 3164 -> 0 bytes doc/manual/blue_monitor.png | Bin 1160 -> 0 bytes doc/manual/blue_ring.png | Bin 1218 -> 0 bytes doc/manual/bshield.png | Bin 1114 -> 0 bytes doc/manual/cez.png | Bin 36151 -> 0 bytes doc/manual/controls.png | Bin 17029 -> 0 bytes doc/manual/conveyor.png | Bin 47925 -> 0 bytes doc/manual/coop.png | Bin 9034 -> 0 bytes doc/manual/crusher.png | Bin 42536 -> 0 bytes doc/manual/ctf.png | Bin 6805 -> 0 bytes doc/manual/dsz.png | Bin 32144 -> 0 bytes doc/manual/eggbox.png | Bin 1157 -> 0 bytes doc/manual/eggman.png | Bin 10631 -> 0 bytes doc/manual/emblem.png | Bin 1367 -> 0 bytes doc/manual/fan.png | Bin 1088 -> 0 bytes doc/manual/gfz.png | Bin 19494 -> 0 bytes doc/manual/gshield.png | Bin 1113 -> 0 bytes doc/manual/invc.png | Bin 1112 -> 0 bytes doc/manual/knuckles.png | Bin 13021 -> 0 bytes doc/manual/koneup.png | Bin 1492 -> 0 bytes doc/manual/manual.htm | 4 +- doc/manual/match.png | Bin 6155 -> 0 bytes doc/manual/metal.png | Bin 5104 -> 0 bytes doc/manual/mixup.png | Bin 1162 -> 0 bytes doc/manual/pit.png | Bin 4114 -> 0 bytes doc/manual/platform.png | Bin 36247 -> 0 bytes doc/manual/race.png | Bin 7665 -> 0 bytes doc/manual/random.png | Bin 1105 -> 0 bytes doc/manual/recycler.png | Bin 1230 -> 0 bytes doc/manual/red_monitor.png | Bin 1199 -> 0 bytes doc/manual/red_ring.png | Bin 1219 -> 0 bytes doc/manual/ring.png | Bin 1109 -> 0 bytes doc/manual/rshield.png | Bin 1110 -> 0 bytes doc/manual/rvz.png | Bin 110609 -> 0 bytes doc/manual/shoes.png | Bin 1118 -> 0 bytes doc/manual/slime.png | Bin 42024 -> 0 bytes doc/manual/soneup.png | Bin 1488 -> 0 bytes doc/manual/spring1.png | Bin 938 -> 0 bytes doc/manual/spring2.png | Bin 938 -> 0 bytes doc/manual/spring3.png | Bin 1069 -> 0 bytes doc/manual/spring4.png | Bin 1045 -> 0 bytes doc/manual/spring5.png | Bin 1104 -> 0 bytes doc/manual/spring6.png | Bin 1133 -> 0 bytes doc/manual/spring7.png | Bin 937 -> 0 bytes doc/manual/spring8.png | Bin 937 -> 0 bytes doc/manual/stats_lives.png | Bin 19359 -> 0 bytes doc/manual/stats_rings.png | Bin 19450 -> 0 bytes doc/manual/tag.png | Bin 8905 -> 0 bytes doc/manual/tailsfly.png | Bin 14376 -> 0 bytes doc/manual/thanks.png | Bin 6951 -> 0 bytes doc/manual/thz.png | Bin 23896 -> 0 bytes doc/manual/title.png | Bin 34519 -> 0 bytes doc/manual/token.png | Bin 1121 -> 0 bytes doc/manual/toneup.png | Bin 1487 -> 0 bytes doc/manual/unknown.png | Bin 502 -> 0 bytes doc/manual/water.png | Bin 28174 -> 0 bytes doc/manual/wpnpanel_auto.png | Bin 1399 -> 0 bytes doc/manual/wpnpanel_bounce.png | Bin 1533 -> 0 bytes doc/manual/wpnpanel_explosion.png | Bin 1359 -> 0 bytes doc/manual/wpnpanel_grenade.png | Bin 1455 -> 0 bytes doc/manual/wpnpanel_rail.png | Bin 1489 -> 0 bytes doc/manual/wpnpanel_scatter.png | Bin 1370 -> 0 bytes doc/manual/wshield.png | Bin 1400 -> 0 bytes doc/manual/yshield.png | Bin 1112 -> 0 bytes readme.txt | 2 +- src/blua/lapi.c | 23 - src/blua/lauxlib.c | 14 - src/blua/lauxlib.h | 5 +- src/blua/lua.h | 6 +- src/blua/lvm.c | 18 +- src/command.c | 25 +- src/d_clisrv.c | 12 + src/d_main.c | 4 +- src/d_netcmd.c | 32 +- src/d_player.h | 1 + src/dehacked.c | 1 + src/doomdef.h | 14 +- src/doomstat.h | 1 - src/f_finale.c | 38 +- src/g_game.c | 277 ++++++--- src/g_game.h | 3 +- src/hardware/hw_main.c | 71 ++- src/hardware/r_opengl/r_opengl.c | 29 +- src/hu_stuff.c | 30 +- src/info.c | 36 +- src/lua_baselib.c | 19 + src/lua_hook.h | 2 +- src/lua_hooklib.c | 5 +- src/lua_hudlib.c | 45 +- src/lua_maplib.c | 11 +- src/m_menu.c | 394 ++++++++---- src/m_random.c | 8 +- src/p_enemy.c | 10 +- src/p_floor.c | 47 +- src/p_local.h | 4 + src/p_map.c | 566 +++++++---------- src/p_maputl.c | 20 +- src/p_mobj.c | 68 ++- src/p_polyobj.c | 279 ++++++++- src/p_polyobj.h | 30 +- src/p_saveg.c | 202 ++++++- src/p_setup.c | 38 +- src/p_spec.c | 274 +++++---- src/p_spec.h | 1 + src/p_tick.c | 17 +- src/p_user.c | 144 +++-- src/r_bsp.c | 133 ++-- src/r_bsp.h | 3 +- src/r_defs.h | 15 + src/r_main.c | 201 ++++++- src/r_main.h | 2 + src/r_plane.c | 90 ++- src/r_plane.h | 4 +- src/r_segs.c | 66 +- src/r_state.h | 4 + src/r_things.c | 567 ++++++++---------- src/r_things.h | 3 + src/s_sound.c | 7 +- src/sdl/i_cdmus.c | 1 - src/sdl/i_video.c | 6 +- .../macosx/Srb2mac.xcodeproj/project.pbxproj | 4 +- src/sdl12/SRB2CE/cehelp.c | 1 - .../macosx/Srb2mac.xcodeproj/project.pbxproj | 4 +- src/sounds.c | 2 +- src/st_stuff.c | 93 +-- src/v_video.c | 6 +- src/w_wad.c | 2 + src/win32/Makefile.cfg | 4 +- src/y_inter.c | 9 +- 139 files changed, 2551 insertions(+), 1506 deletions(-) delete mode 100644 doc/manual/1up.png delete mode 100644 doc/manual/RNGA0000.png delete mode 100644 doc/manual/RNGB0000.png delete mode 100644 doc/manual/RNGE0000.png delete mode 100644 doc/manual/RNGG0000.png delete mode 100644 doc/manual/RNGR0000.png delete mode 100644 doc/manual/RNGS0000.png delete mode 100644 doc/manual/Ring0000.png delete mode 100644 doc/manual/acz.png delete mode 100644 doc/manual/airspin.png delete mode 100644 doc/manual/attack.png delete mode 100644 doc/manual/blue_monitor.png delete mode 100644 doc/manual/blue_ring.png delete mode 100644 doc/manual/bshield.png delete mode 100644 doc/manual/cez.png delete mode 100644 doc/manual/controls.png delete mode 100644 doc/manual/conveyor.png delete mode 100644 doc/manual/coop.png delete mode 100644 doc/manual/crusher.png delete mode 100644 doc/manual/ctf.png delete mode 100644 doc/manual/dsz.png delete mode 100644 doc/manual/eggbox.png delete mode 100644 doc/manual/eggman.png delete mode 100644 doc/manual/emblem.png delete mode 100644 doc/manual/fan.png delete mode 100644 doc/manual/gfz.png delete mode 100644 doc/manual/gshield.png delete mode 100644 doc/manual/invc.png delete mode 100644 doc/manual/knuckles.png delete mode 100644 doc/manual/koneup.png delete mode 100644 doc/manual/match.png delete mode 100644 doc/manual/metal.png delete mode 100644 doc/manual/mixup.png delete mode 100644 doc/manual/pit.png delete mode 100644 doc/manual/platform.png delete mode 100644 doc/manual/race.png delete mode 100644 doc/manual/random.png delete mode 100644 doc/manual/recycler.png delete mode 100644 doc/manual/red_monitor.png delete mode 100644 doc/manual/red_ring.png delete mode 100644 doc/manual/ring.png delete mode 100644 doc/manual/rshield.png delete mode 100644 doc/manual/rvz.png delete mode 100644 doc/manual/shoes.png delete mode 100644 doc/manual/slime.png delete mode 100644 doc/manual/soneup.png delete mode 100644 doc/manual/spring1.png delete mode 100644 doc/manual/spring2.png delete mode 100644 doc/manual/spring3.png delete mode 100644 doc/manual/spring4.png delete mode 100644 doc/manual/spring5.png delete mode 100644 doc/manual/spring6.png delete mode 100644 doc/manual/spring7.png delete mode 100644 doc/manual/spring8.png delete mode 100644 doc/manual/stats_lives.png delete mode 100644 doc/manual/stats_rings.png delete mode 100644 doc/manual/tag.png delete mode 100644 doc/manual/tailsfly.png delete mode 100644 doc/manual/thanks.png delete mode 100644 doc/manual/thz.png delete mode 100644 doc/manual/title.png delete mode 100644 doc/manual/token.png delete mode 100644 doc/manual/toneup.png delete mode 100644 doc/manual/unknown.png delete mode 100644 doc/manual/water.png delete mode 100644 doc/manual/wpnpanel_auto.png delete mode 100644 doc/manual/wpnpanel_bounce.png delete mode 100644 doc/manual/wpnpanel_explosion.png delete mode 100644 doc/manual/wpnpanel_grenade.png delete mode 100644 doc/manual/wpnpanel_rail.png delete mode 100644 doc/manual/wpnpanel_scatter.png delete mode 100644 doc/manual/wshield.png delete mode 100644 doc/manual/yshield.png diff --git a/doc/manual/1up.png b/doc/manual/1up.png deleted file mode 100644 index d8617cb8bccfa11165a14ac82f70494e8ee83a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 zcmW-hacCQL6vy8z>$Qzt2C1CeZOiO|DV%a@7}t?)xAnT-YQ}E#Dz|yk3~rjun?|@l zt`Owb-7rej2w}!8LS&r_BeG6Yi8ZV#bPy$KRx*iOz>M{eIP0iTXHjI&+u;4)#KMyl-&Csau`b+tKFa&J)a!0Bvw^|L9()^^z{qO$38MM5HLn z#`|g$P0=2$>)x01-d{z@;WG z*052=S`n*xEN8Kl#$pol_G&J=JZZGjdNZlj<7(BGE0$D>2J?oPiwKiCpVk725EoPY zmdu(Gql>Q4~p%L{St3ArJ^~9LKV(&*!6Q+Qdj? zIUH_=LRCdAN%E8!%q=CU%uq0*2w|BI1vy3V%RHO0wS+0#de98MuG z7QmYB;lVwlJ@R*b zc4ONQ_8qeCbNBh4z7L3nu1)9fwl6&YT#y^ueOaat_w2sj@irX0*xpjk7;7J29lL+x z?ztzPp*o%#_~_Zw+@W22et~OGzkBKAld|W}ZM|Pmf9<(*^HTfh#8mM!>#^yHPiCR> z$_?wrQS+>969wrB$w2^ diff --git a/doc/manual/RNGA0000.png b/doc/manual/RNGA0000.png deleted file mode 100644 index 78f98625ce7f803a40544e00ec4bbb0536fae266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1094 zcmW-hafsV=6vyA#By;W2gF3P;e{`D7ig9EbSWY_3ZMm7hV!bgG}VkC|h7z(S^l~QTBP*}?4dYMc&m2xbrZJJHPXy|%f(`u?( zk>#=^6$POX3fUZ&W7!PDq-i=C2qY*fPLihIZ}@ysk0(M98bK%oAp=MNA^vwE}^h- znK7hbM5GlV5aua?B{{~=(7t}Z-|O|d-LB&}?RLA_Y&IH=dc9t)Rx6cCsZ=T!i}`#$ zm&;|d*>pOcOePbFL_8jk#bSnG=(?_HnyRX@EK8Ckiee}f;(4BB*oikWym6|)mY*3#3a zmNZmLm*bIeOckSw5DD|D$SDGwPwJVtk~G5ch!9mcO=9E_Epn8V&|{_=HDpbf6g4Et zoFFm05JWVW9JNyu&)RI+3fP)IB@!kBuGZ){SgWCJqh(X1h%_P;1<3P| zWg$ho<_wA~#nXP4^0+H*S}6p;0?+^?faeA!FJdo@mOF|qXyw6Vu1bl>Jtl1-`{nw^~n6xLH9#|(LLiMAMSqa$p6hC)ZG98 diff --git a/doc/manual/RNGB0000.png b/doc/manual/RNGB0000.png deleted file mode 100644 index 71a9c51be612475283523e913328e4f5acf97296..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1275 zcmXw(4NOy46o3yCQYSNS{>;LvmaWE;Re2ynH^n`mbyX@93#^VGpUAX>f<-IoHq=-D zC~nTjWUNLoRdA_4!)nOZX&KK%rMNPmlMI~bDs!$wqD9$;W5%lK^1y@?~nh5M##o#0kQwKKfCo5W*~aO*)*qGILP4gd5W`(*Vw}kxz;v z#w$yf=`#U7oC{#v1u!P0Y`+6k#RJ@11F+}-fVi^h+{zSy36Q-acj@TpXebm427`e> zps%lw=Xsyc$8ns;<8iy)E|<&cbUGXkmSydBJHs$mtJQ2a8;wSqrVR#zPN&moG!#WC zl}eH%<#M@HDiw>x1VM;IBB49yVm*gz-3M&0y7!%XHh#Xnbl(TXHJkFcmFcV2W>n;- zugh6nq)p6KDORM+Q6);aYHgcEbJDD8F;R^ri&s@mP1LkN(n`Z z6BW}GG6IJJc&7*Zec0ngz72gYq?_RSs)QZ@*Q1H7);qivF}xdw7AWZhnd_HmOoJf6eT< z+0nC8r;FnWB4(0^2>%(6`F{PZwaeDfYTB}Y)w@=8Mt=MPY8K!#O70mS^NfrdXBt-m z7=Qo=oD-Z3Ff`Bbs3?I(SV4d*0AB$# z0SK?%1RzYzf5Mai^8cNQ1p7S0d(0ju?X>IcX3A_J4V09U6LReVDweC$a$nbN ztzTKcBWC*U{-4hDCMOj{jM2YXvIZ^T-NPfJg&Et|KkA5WV*LZFuYa?!1;JdO2~ zXhVPfwE3`o=HBwl*>66P_-}0O?3$yo&MS{dZT{`_ykjBDk@twCC2YbcCwklm!_VK# zx}}Nf+00c9bZg1m%{hI=QCBxy3pT4^)8?}F<8i$$k*cC=Q(rsL{v|QjnVBw|^0-FP zu=*dPSN6vDspgs^v6q6@A7(ykpK-Zg>*=!o-J7QftrgvGYJ~^g^;YqpufFpV@ic6B Y;EVguWh9*z{s&mTG)sLdea()40i+l!NB{r; diff --git a/doc/manual/RNGE0000.png b/doc/manual/RNGE0000.png deleted file mode 100644 index 960b9c3bae1f065bb24bbd173a44d9e0d22f2647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1323 zcmW-fe{2(V7{=eZxSNzwu#y553LIpFs+Uk^Nea2S8y;KPZg9W>bt%iCMNa6#F&j9g zV}(>wus}`5tgdrSRMU7-Nd^q~dXT(7^8WFD-Zy!k z12xrj(S#Wj0HCO1MfqyE&z5sxVZK~%lgHZt@}Xwsn&tASRV&m=%w#elgftqBN~KaL z6c~mP1}&~rs4UADo>v2-2L6OK}s{BQVB|>RiUt8m>I)Z3}XOj015zQ(`YD( zQgM`wqW&<72T{z2qFxksj)kOLK+O1rw3i=noBN$?!okEOQ&^-!HYy;HKHliD7+jp* z!4h^xC(y+f3TH{J$)F(#wO*&v;mTYtm&s((>2xZUN+y$uL?RxK$6~QaBoYpXL!nSG z81(!7&CShTuh;E%JDpC4!(q4EZ8n=A2t3c5&1R0{7>1!~nxZJ9(P%Ij2!bdsF2-@( zj%>D^)ta_g`Z;rqVLNG)pQOA7(n%OZ9l_(ptVT=ZbOXY3Y}jianAX)zf%O3#vn-^qLItWz-AEu@vzn`s?m#3{W-a_}~h zvkHuvr&-QOGkTKN8OUOU#B7Qih*IZ#M5m^5fB0G6L|bPgdVj@ee0X4( zuVxyL-WeSqezr9DVA|~amgKG{56YOiTgH|>Yd!Prp4aQ@M>C77{9);svwQ#0&APqr zRoJGtu185u+;d^8a)Gx=yiCt*in|r33pV8X&OUB?ymdyG*i;ETOv)`9kXP>2~bEQ+aU;X=}y9?Tt3~mU|mCF z&*%QznWvTSv^3n>{c5FRqv^&smbdrqyZ-TC-GhhqSE~!k3%?7mg@bL4m7ikk7yh>4 zV$o!N~8G1vM8`}>gn;pCv>R&O6}yTA7`!3GMfu?o?AP(7ITAg+0PG`K4(iRn%a7D zs%X!AQ^%zb2CrQ`^~0=xmzSO#zfd-(_P=etM|K>m^6d;4-pI~xaV2Y8#_P9rI36h) WREb&lYg4i<04kPOm!Bxx)bu}YVN2lv diff --git a/doc/manual/RNGG0000.png b/doc/manual/RNGG0000.png deleted file mode 100644 index 38c552fcab5a5549bcfc1e8edac9c809c6884a47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1227 zcmXw&4NOy47=~X30)kq9QxUW{omH8XAGJ*DuB9M<;>7~1g64u~n0BsegB7dZDhhKl zuMu6D=;}mPr@?B#RVCxPso+9lmxy3QsZL4fbXLPAn=^j9xGXv6d^umf{8k9etpVigk6c=!0RoV{C^x0Qzu)io`+PpH*W1bi3Uym&@sNIvftW-7W}1Wo0GL^A?N6WHObMlyDqpFc?^tO-)T@7)GsDt5hnb zQmIfV~(=UIAom+oGq zb~{}xrIUGNpFYmMol0!HM~>&jFF2$V22J5{OJhERl*xMg)%s zE*As=CKFf|DivfhY2N&#+tAglyHcxiSrxSfqbqg6=4h!;5G3V9CCR_qa`N2j{3{D@}~apfWHDMk!Nf)~I`>OwCVE*5)R%-&g;%;Y#e# zlzR(5Ih=l>x-jUMYcUyP>%*cOdIOgC?lrYuoAP{@u)Ae~>FLY&FE5+9GGqGR=R5OW zyu84)d>+?%afIBqGNfmoPggbaY+qu%CjQ{i!7a(*3j;$6?>GYkCh22t z#n;!2Iy7X=*1)#d5#P>edM7Nh$^1HT%kcai zyv>P`w$5DZl8-d6zAJn>eu4i|K-$P7vkzQZswjIVAM)|Epwm^I`O~kKJyXH{;LlCo zp)Y4xmvtZfXWxf^y?ge}*rokd>Vz}K+UhTz^%bu|?i5@un$e`4G^?Ux_`MfDh&{$3 b58ueXsoLaTrJg-k$~)3i7AK!cD%|-mPy-0s diff --git a/doc/manual/RNGR0000.png b/doc/manual/RNGR0000.png deleted file mode 100644 index ad9c5c073282040361a6a092a8ec1d17eb1f5d62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1161 zcmW-hamW*O7{?!#*DFum+q-h;m3!%kDOc|$Bk!$~4!z0gd+C{{9D2nS2Q4{p%Bh3* zg1t3zZw^~Db9ens6Tj1ugPqM|;Z?e$t7PnaYPg3t*>#2Ua!~bblUB9tJP{W8ufa;R;yL3)pEI9DwPU_LO!3* z<#L%!CY??vlgW5I9*f1I(P$(Ru`J6pOP7{Nwz~C2Mq%S0sVdi=mE?DGy&=W zRe%ye9v};l1c(9H0ATufRgvRd7r7WWT#UpKf_BXr5Lt?&y(~q#D;`;i2Venc03QJPkdhOzBctPv;tb5>AR7TIZ&`ocE&U2G zFSI$de#h|9$!qf7_>28xx5h`8Hn!N4ht~~W{XKbW_pa$Z+}hwJt#)W&aR2PaCk6)I zTY=ZfJGJRy;b{NY%RgE9{`Z{o?sxu`W2rCuhC6>A>x<-0e0YEF56`bUvg&8&%FTft zq4mRq3#P_zkF^)Ro(YXl9r*UA`D-4(bfbU&RCH-?-m*8&wVal8~Nq%ECrv-(ZW-w&QIMtG(Y#n=v4juf%!v| zXFuhw(M^-;zM;Q&PvbWW*X;fG=`(9i-3!Z`Uf#EQ=fPbA_t*0Cwl2PZ@OtCFf%6yk zd^J11xc`o`>Ui;4^6K_GPmV3azCV_K_C|GRL-X{mgtzPdDX@9t*3h{PZ+-AT-q7s} diff --git a/doc/manual/RNGS0000.png b/doc/manual/RNGS0000.png deleted file mode 100644 index bbcb6636a59011311da1535b1edf8f8eb1d503ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmXw&4Qx|Y6vzL_mLki11aJeUv;v{V$==3v}TbG{)T%T{M6wW&JY zE8AQ_2#+wa(=m%|rbJQ-SxALN-x3#w8R21uR0UTIkZw+yIFd%AIlj%9+Q3eJEWLb_zqmf7?6bc1{!9XA&Ns{017e&$Q^}1ZH>gsAi5F8E%&+`_Gh2uDb z!N9VtUa!|`wV9cj48v$N8nwF|lAl)bTVi77uzZYb$-TTZ)7T~4lJ=W0nX_#OG8jrH=`PK#bJEw*vm5LsOz20|ovP;VRcG$&6tjCZ*c9nN^$&e*{UrP($p@^t?e z-MT=70lMI!Q)Lt=pw{{1!9*SI?Z)?&7%anAr8u_^-9-o#fM}dZA&L-5L@pwph$Ui( zpeTq$AW3k!!1G{PFpOI79=qv?^_sr!U?UCMj*2;clg6E`=858Ql4S}8Nfb#Ch~r4B zC14zg1B&VjhyX!A0z|+C2mlXo01IdV2B2tkqN^(*NjDoB2Axj1qN0cALmYQF2d#QE z>fo7=y4l#BhRRfw0bb(ke=n)I{o;;m#`3;G>sdp|iRGpv%L;u@KVQFiS=GX&o98cF zGdDArVRSP!Ov*5w8o2vG__FU<*!j-UZM(eY;_}?(+>@XwN_mP;oFd~UnI@Hh;)u(T zg9wTc1qd9t(b0+i{+~NLuX??`c6-QZY|hDfDJ$!_?;emmMxWoIV?UAa2GuH5c9}St z44rXSlJ(x8RuCb}5Jd9u1EBxknMSp*h)UEI4GKX&?{{%72kYRpoSxB_v>WcJWBS7ev(dhS54RaJ`gJo* z4X;X}xka(6H7Tnn_Sn1y!t84=-%~CQKQgj?|HG_jSH*ubpBnzPZ`R2@P0u9rw!Zg3 zXJ`7BG^L&Y%-Oo=?5vE_a~H+Z+xx2un(l{Ln5&o6ZSf*U*IhIiP267Dvf^Q-v90*} z8^cR$+*?nM`EC?PS5Di$MatN#w-xQ*HtpipKWm@5Z`15MSoq_v{`{uS`m~{M!&j~! zNd4lq7Tq_CMl_#3e)N+^-)&pqO78ix#qg0QoR@30_Z3{>8voD-JVkdiLi3W5e>&vS Z7fc@)-g=CmHK9Hd8`f+if{#g#&KOnVe9=ku-8Zb(c`^ z)D9c1P?7>&D6t8RPAR6*VVYQCNlL(2pphj^7+8}U2$Z;Cg^37ao(IYMk@v^@yqA2x zJ65ic=d?f34ghodUg=rw^o95Hp*E-Xe6jOKfHqk9T7R!I(iBO#iC{2@h(4ds>-CZ( zNe~1l&5-AiOs1JiH4=%sZI4@4%`~fqQPK6XrWF-s zRF?CiI1&hCc|OB&DV9w#Oq`};K3|lgEU(veyTc?IA_$!zRDw_dWB>^OCmVQq9P3pa zFXLDdt9h(sv7E+Y{C2@^jabdB*+?4`NqsD?)?!M<4i+uB5RpbqF>3@;At9mhF_nud ztSS3L5~GTAQ1FQy#j{?PakpBnX0zF7H0t&G`1p9OR;yO4l}e>lDiw>xLZOh)=X1GS zCX-30)5&Bq9*@Ujv1l|Ji9}4(Gz>%6bxqS0MUiD$lB7T&AP54-aelv_VVEdJBCT+^ z5ekiIdPPx3oThZ7>W1UF(YDWVN=l!S=9ov z!izF1h<-$CvaU^(r4w0h)TXn#Hz5%g3y#)UuVcB4*(};NhC(QcNYe<=0=Nt?0Z;>| z02Bf809k+}Kn%bF2m|NSSVmBg_eb?ih|&{$iX<_U>t@6aJJ(BCV+bX z?qnS&%2>@}(Z&%SQvriqx1`dKP-H>cg}POMQc2>hi(oZ-yS25O z4~B2YJl45QJ43H82}cfJV6WZn=65Y>-!u49$H4Zhr_Rn-7I)m(c<9dW8!j&I+WDp1 zUi{Out9Gw@_q_Rc=jMHDW?nq8qIGaUsvcQ(@AA#T_m=&8Y0KCpNs`_FP4}B0{tq|Y@?8J` diff --git a/doc/manual/acz.png b/doc/manual/acz.png deleted file mode 100644 index f8d98a6537b7fa0ccc155f9e5a1b9d53fe8f1ac7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43670 zcmV)FK)=6Px&08mU+MI{0OFaZE70{{#R1v>x$MF0RJ4Ffp{0Z#(}7Zd|74+I$)5;hS9K@S2U z91Ua(052dAK^zHS76B|I6FMUcE+`BfF%noI15PIgbR7UnE(kj@9zHS{Mlct4B>)*e z5{D%KbSnUZDgb{i07*I{PdOblLla6rA8|GakuLy^G5{Y@6;(hZT0j?3K`EFt0Bk=N zTSh4zToIi(09i;dlRN>7Kn9&U5}Q2%j6O7^JphSD2xUz#E?*#FPByJS0Z>~bszd-| zRYQqR8);QMv_$}aQY$BM7FlBzPFsz-N&=!#4@GMj7J3ktR2EZF|8QJGkWgKITP?m# z0Ju>Dj9N3yOarb}2*XeSm0BiwW&?6$Et^{p$xs8(PXMG`3BOP=cVkJ$R07RY0LfMW z(N+LEcxlC31gl*}e`-+FSpn8s1ifJpq-Y)4Tmb4<1g~czr)(A6UjUPCMd(}rhH+Oo zj~drw0_9%tq0`b{yts0DgFl@?-#ycwV4* zHTq)!XLkIPe>jw*6YykLg0J4D~ z^Kl7{fuNa#Y4&pf3c3L{s}=ur0QGqY`*;Joh$iNM6#sh*xs58viYeBHG<=i9|9}p^ zktNECO0tqe+=?8pmNWp+0H~69ca{DBh7!M*DfNvM*pwxlnyJK_F2|ievz~Xjp0o=^y*^w?@0CXX#ezT{P}MF{Yw1*bEl6; zzyJUM0b)x>L;#2d9Y_EG010qNS#tmY3ljhU3ljkVnw%H_000McNliru*#{I9CoK?* z9wPt%AOJ~3K~#9!jJX z(-EOkjjuN@IOISeM&)^@CP>V=9!zJ=yc-OZodxV!p5~5X&7@@-FZ`dV0>d(js$Mh<&(RFS3ap0jS&>yO z<3}UM^6;7$;N2aqVY$P|zz>FzsTYcd<#Yo(bRysP@U!@-^MCVy{p-H2pY2v#TZRz~ z4BUY0;kW&P+;eZR-FL%bXnXD6#&W5mRGLa!N#!cJbg8phS8}=WL~brw+H6+p6(yIP z$|ZA3y;-l65(f^9xSnYkRb1epFY@aRhdmDx&DvqJH1COwY9~2+PnQ zkpS24nWl@Y2`t`?13~GQZ<)Af8$TOa-NjQIvpm-eJUg%sGD9la2<~V-0r#laOmo4wU{qzmTyxoCUnj+@yWgq zG2r5HQ;-%E5SkDU1Ix8N-?wY?Wkb^q&+|hUqBC)m7A5B5Dz_|6b3(_8hWr%2+cgZe zYLqoAi1dPGY8GVY6$>~^yd6abxf@X*9|nbu!hnhz1fCn2hOY8J@H#Z!{lULZ2j9F@ zqb1lXP8t^g0lE|*R2gT3k8>K;)o-2dRFc_Jy;<7aRI=%0uF`BOxpYcV5{b^{<|Z_7 zVl0u(rIX{M$$GQd=`7(R5! zv9vSs>Sax7(E2YzOrDU>Hsn?rIGLgt;lj&S8k%p!v6B#Ju z^-d?7Y}P5aQX2n%eY4&f>GgbSdHF6lj<;c*cfa>H z|9>*Pe%?_7t6&X!F6@I^ z>vZb%dal&mynem1SxHtp5F@@b5{5W!n=W7cf$u^cjP?NUN5SG{n5$kc!|)=jSfCR$ z>S@FStkpuyPSxSprgjGFw_3I;vT?uC{cAp#%-*i@!LpGP;q zx#@=E!%7X!3*0C$8ulP`AW556XZv24@1YtHuw|B2zHWO~&BXb_;|8X6>C)ClYh&ws zKj7D!|M08-FB3+f(~WR2p!W-L){YN%8p_H05saucmrRbQv&m#Omz_u>Oek~7bS9HM zoz5jwxlXfF$>pGhrBW`LRC1*X+@w+(!R6sZ!(NX8i7{!o1&emzyy+aMH@<_@g8K>_ z3eK~PM%aZEtq9T@gwQkuXSJZhJX;JC2tocJYC~NRM+W#o@dJio!a^+^yhN+s5Uxx! zbgzrE+a9>SuNnr%d_8mp%Ie#`3lFKQi1-N66d*h#V-wwP z0Audij@**2dkDX+A{+&jnz70XoQCQ6{;)rQkEB03KkT8*eB+~Tj+MQ-J{MxfUXFzlgrhc>H6mNO$9Nx4j@zC z>|`s=QU{?#spry&D^sb71LNt*TrLCY=W?}`@ZGaM0qBI2m(zQ4Iv|XFsL9AB}~gG=!V_(Z2CaNCAUG;=efN> zFkoDdqPFWI+Ipdd53p5;4f+v9P=AN2Xu*BDP82S_rY!A3L=tDNW zu)i($FP9A!^jw^zZM6q|7j~grP(<5z0v~=7PD+EI0~f~tEbP^c0&Ezn=0U}PiA)43 zcrwT2y+dkp6q-Q+h6Bee7UfgQF!|6`%bFMYeamq1%`MshPz>;B=mrD7YamwHCR7r@ zA4tSAH4TwFpy$AcBku7MZTHgows-jlZ~p4dv#QyT@C}LOFoYR^x%6v$fIEa;JHJf9J+KwZU=ay2GN>U1J2N>7Us(h6Sijao30^&)$-a1 zI1nXXhEs@~pbEqStr7)*&?1}(RF5D%unP^?b`asiEXD|cY-9?qNu!0<`ED1|MuK9s zRNHU|uwf=OkgpqcAqwc8ts!=GeK+X!yN205e;zRyE*l5j9kgxeokO=Z@F7s#gcrk@ zj-rewOSvp?U@1MBOrBN%1apYJNIgoO>lLIXiA1GTuRz9lje#UPLZF941Ys9$4ba%Z zO?b$6Xw3>%c@PJ-mt2IFJhQ*u&Ds0n)w-}re z;JQdES_X1W?E7NYti-_5;NBDB6IS0@wsxaLpxGlm&_+7vloC0J7jfK7d7D9|&J8;x0BMXG71s?KOH-tz+ zWQ$P`0nD*P_d?Gx?Fa@AHxV%5#4Sm(=>kOJ=aCpjwr9etBVN&xU@y2$LPC5X{%lp( zN(d9mqyl5DPb4eN3L;5IsU(@prQjYBHY$M6l@h)K`$mMRS1KchuB$bO&xR%m!tD3q zSO`9BdPTw*j}g@pRTtj@)fYFe0#_Fy58i>QQ|vHWTsRdJ@`kRoO(UOIRX`;Q5GeqD z-4{qllNB|ykv9f9bv%?54oC;4Y$0KVA{=z-p2SC%H59PCJ48npHaAq(){FbpYl|=rVs32%ma&UYK zqHn2`Jza+-mr50;#{h>&=W@za3jVNu{rdIJ2t071K*+%4$siuULBZ`5)fzH-rX*A! z+XoFKouh7m5YuTM#yqGDC;FaJ?E)U85Vp*(0Ptghl!Rkq$Fs=%}L# zKmTL8s!;3yHo#oubN zk_SLa_(hAbw(CHEo@OHo!*{9zx|r}wSi~pV?y&FbQ!v(as=3*r?jb2wN{A;6D#$`$ z*$B!?I!jBQn#yHTlal ze%B2=OF)SoI)i|<2HZd5g58G$K~@Oq+AfnAlXLz(bxB!6X{ z=}OQ8%3zdG0l>9>pXDG`LmX%Is0EFYLXU6R$k1!0Y%-V3z&KA=I!YpuAyS5|DhL|c zv{He_De3fFCPlcN$|`C4!4YKDCLM_-R>+|1n1&pTXK1(qgb{0BfS#BOFhxHuqJ{2Y z;F^#+;9$9k@IX(@!^Io$XCPsl@dSTCssR^?fNbf^oSEqcegpU~XxO%E(@{oL7n3O* zlMWxgFfxHT@$t}SWZx0YP{-d~tEkd%Kvd9L+Y74HUu2Mu;6(`xHqs^tEie(r7$(Ag zx6K=Yb>VE04*;Um89>4fx!xin{|fB11k+T~@OsIyL>iuNN`c*0>e)o5u2eRaY;&_- z=PRX578#0Cq5xg-ZLE1z2{AoH<7mqQ2&AiW8iuYRZVaJzgu~DxlPSL!4k18-UsfFe zZY}zF236m06pFyYez?VoE0q%pfy@Cu9cQE$@>N6ho&Q7>Z9j-zu1D=qySSDvzXdc7 znbcses#Y}O)TrNu2||sf+=VY7qQDR6d2vxX+@6DXXh3Osi4dUGa6Oaug?C5l83nol zlmT}`ugOqZRT0%ay-~JFt!4~O`N^C zNg!d_rkf6jrjbDI_1KbMSiU)Ad|7lbuLRrjywOY`S^<`sN5S2!YCj z{ahG9vW!f^ja?#(^CAP{Vx}rC^^NI+OZe_N4acDXL*QWq8dx-cvnX;haMK>bw2tf- zDjp3GnqWL0{c5;{-!32m(KiNx4G=;}(MqiVU}=s_)%HTX?e?l}Ugz`r%6 zQpu(O^y;N_63SLrN=;S_(rH05Q%Hr!#}i|R6UnJG5F>PQa}zLzv6ta}7?<=J=GC}> zLVFAcOh8<}&j5+PdISQ!xCYb?T!L080)8m$A%_9@gCt$4D=_I(VO#_xMwOZXurH|~ z6v`e(?!blt8T1;ahV#cENaY_`l%5Jc5J08s1tEJP7K3qIk@mX);9}B9eJvdbY2d(} zbtA@nmi9t_t1tRVjRtO)G{{kd0WvzPuebG=h%{HT=D>1MOutmnqlb2(NF6(l8DxXckcF9-~{e2ZllBw6tNa1ymb8Lu~x z)H0KUc>As<;ot6W?-w1ImKr8*2AX18KHEmfNPzMI730jgs1*s3x}MPx(ajc3*6!i{ zktx8>Go1nU?3+k#B0x}H3Smq@)p7@YX&gcDW;FtA3h3$Z4ZZ3Z-6*KR({>r~V1Y;j zY}zjyC{Q=n93f3O7#cJc*wVV52H)heg@yzH-(Vq?;`5NLNOwS=OP6S)xvWy})JwUP zlC59gEM*m?Q%`5<@vhgAz#)V*Vcxmy#8@_+pa7A7L0XpYBMHZ6Ba}K&keXVBpQ45# zKMDYYSzrd-#%X)|RU2k}K7qb%#l8*suElnZFIJBGx8e2*jBv2B0N}FRaEU%b1P@0_ zW&oYg9@{XB$Z!KT0qMPvYtt4zuT8z8L9%E?d=9iC0gG72BxZz*ao}%zeHMqJxSZw1 z{>9t!C`O(J&J4Iw^L*SUumD|=WcUdEKG38cC!ce5B)atyqHa!UW~VaQH1J9;kw_{N z6V2jU-7}XGLYZ5FBqfMRiY1jjgfWYBN3s^F2I7=8HG{ zd(tFBt9NRtE9IxRa_ar|UtwP871u<0IIxr3k%{ zsK`rVRY|m%4iad-CfS$<9H`WDi5!HK?KIieOx0<%x%7c_2__AzEp?C&*AZ9{Ymn)c zO3e`)I_$Xc`7Cn-fat2KmsJS@keN@9==*G0x>mUW7zYz}Y^gURKVns88sCqa;e zKgR7rW;`#-RFdx?YRzSn6BCL6K7@;GI-RQ!*yM7FWKNk>n$SEb-5iTE6+%WvQ7a>5KKfsDPLvtDT=fpX4mz854o{D&2I--G$A1pj~14x`j z64_0$((Et9eKvWw zuBobpVj-^*aRj~-hYUpA2DMPNVq3t8%YV(9VKpQVw7YQRK5|2^C-1b4GyxiGxDgLw zuuWp~0`UyX@B5%;hLE%OeyO@-SWY)#HjZLKM-a z4qdavJF~pseN@i!;v5&(#KtV{jTJ^@Aze3&%Lgnuuw?;%q+G!+b#; zMdm_=DZ7ZIW+b|ALkFs%+HHIb7*u*EHs@WQGR>kG`~_n8TBgDkPA zxB%*@^o1eUs)Muv;w|8E1i~TNF3il%&lmDQGnQ1O-F7!(lZt^kfQTIF#28hGOUhYY zDZd47Ac?MHwEc}%trkOe!|dBkuUMxw>7G5aVX@2Tcx)<>7E^C_DzI4?>>LD{NS7$T z3~cr~;0vI1nt~ghpvT-yjxc_+fTya0a-sY%IESv5wNf0tTCBo%1zo5SEzt6jXi9a( zVsl9>5GrOdr$v@jL?F@|hJ)l?L#@RznfzWJ#J7PF9 z2EGz47@sLAyD-C|SrH!aQAHYP4)7=H1@yISwtT*vrR!1|abU2x49IS2VKFncM4kXb zm^ZWv`7&cLkJXmqq$AvnS}B=E64GQnFjZ*+%pe8HWLV=$r&wI=5D(VtlBA4RpptlL zL_^GqV-k>>s5gruHei)uvWLdlCz%Pq#pvaVeY!5QG>OW1xgXjwGr=}opWQK73?eu% za03AMQ4om)(XiZYds}WdYC|9cM(+Xd4Ed15x)(y)pwF&c&nXvGlS~>qfO3 zumTi%5s(T{b`Y_R4=d)oQt2SqxSVB^Vdm6~^)ri$$LAIoQ=_MPq9#rlsCgYm1x%|- z&&LCJL?(rcuVlx^##u_O6NT*UKj4`FI z2rpYCx9M)!0Tf%)1>Hw zeQpe?9RfKZeL_O=VS3V30+wNUN-EA$&{HK-3vhVQB&#@+&(G%P+1#UInQVtLh#}Z| z$YN|0@F)^Jw4|Jc8058_*7BLf^;7&+})z~AQBY0oK0M_{_h?sCZMkSwQ09O9=qqm8!W92W^MYxC0K zWi!l{qV$jgGl6Gqc2{ArL)VVj`c?(Sn?i5X5qXgD5gY>KXcBHr)ZpFn=cIA=@ zpuGx%?Odh=w^y1_V7ma(2+hz$g}Gi*B20;-1*J6Ng*3(j&n6Of4A7_5X1SSUN*odU zSFjHs(T@>DE0j&B8q-Z?4JOr;$XB>=9<2fyv@cB^R@&L^Yyd$c5A|H@QAuBz3CvzS z;V)UFJoE?nXhaWFSBZvouZJ`Nz!)JVKb@b!mmvi&+&}vyz{+v$67Vr-OAiV7-QCz& zJF__V%;fk%2=CCTFN}^JTv%F!G{;V`UEQa7I8~O5SiAGWEfOyV8`KSLWscA<2PfF9 zmnIIU(~wYhqC~idq@=P*UzkXyCk~8frxfTRkaaFSLN1@j>JGc>t_M&F3)Tqb=~^56 zm1?8GKNax7T4BBr_Ys(m#6XNfXYM-?M6APeH6$pzK_t}|i$cU(3fsZ%1{5Hf3C_L` z>@)q1*q86SUZ4G|nho#AAPWt&?EJC(%xoS4)GVT|GBkIeL}S?`90GLqLf>0!tuH>4 znH;C^#uiQ;8hvbP`8eb_Huv1()S<6RRZ$1FH}ZJ{_i7366<)m^0DcAiwmz8zG&x*? znbrXa(_`aGrLzfJ%_&LvJa*_x!c0g4Sf{5Ty=*GQt{l99UW>^s@OxXN_*OMt0zC|m zLBVQ}f>bROgjHf#E&PP877Hv)0*oLEdoj0_Wg%PAJSm4+l0Uh~{lqmi43~{K(keV@ zz!ufbYb(CZOtJ>r!%*xR&CmBISwMkic*nwS(On5fu-dJQ7uTOjO^iQw z=n$;-=>`1%6U&g}W8()8eeuL`XyD^(tST@L(j(|nY-5UV#id?cZFPPs3jw7|jKWDI zBNY-<>xd{26{5=ZdPPYm#sFjB5s@gTlIavo82-(o32T%Q-p7Pv!=aMm%ao3lN>5ry zgP{w7LgO0^sEW@DMuFTm;0sdKT+)BYfEIQZ!V%z!5x3qTn1)9NtVz4UafdFDO#moc zX4T!@8nl6r;Lf{jzC|8+k0IfVu2-3p8~K@hVRq&yAeG6+B?7?!ppoU$cH3>YE}UCV zCC48dJ^1(^j2=AxG|cwU!ebEL!N;FoUE2uSJ{)55iM7a4O@ejiI?TkS8D>f`Lx%wL z!pRB(ZgL7aMm>uh4j}^nm#ZYxxlAerSXfdrNKQ&*CX{Hs3i~HysD{!*Vj?8PRb033 z2}ojJMEKCe|51d%;<_YJdE$DvL-L!EQ4%Z`*n$<-FKhyVTD&O?!&0@lX~)AZ&esgh zCMia!fHX-7K@bVVPg`b1+JvP!A>gQQmfiisRGz(*`D++q=kPC3y?pja@lp2@Po#6=!Cs>nutKfZL`9$?L02XBMAHj?v+b zPaYaOc${`SaR9RW@=1uswc9uhn=aKA0nXbl%wBhV@&n-lbV4NQA(H-1hfzef(P=W$ z(%FqCG9^V(V9}6by;Le?A+UOf6eC!5hBW<7Hdhf1^kY`hb`KGmn3}ML4GY9(03|za zUujxlHZNJ^egl~iBMKS~adPlPZb*_H916z~;QLsYA;HujHwH(&HU&`Lw%VS)wz|BWNlrZW z*w~>z7=7aS@q>>|LG>Ox^o1{ed8K6m$^^U*yJ4|42!L=#G%&K&mTmh8B*mI=ziTn6 zPYOlw8@*auauB7Xq!Dh%Ce!ImI-7yLR#*W{R{;Fd!c0&AtSfb;e!bJIjIdrWESTZ; zARd|+x(!{VpceAT%!sOeKf>7?0(Ka636z;vvLI)$Qyke2GCdEOXc@mzB67zCi$q42)d%F+SaD+q>P!J1TCvL-pt)9t zPXciF*-G2zHSY_sRjDI;%aNH-N*qXJbGb}f99^YJvTB{hK_+{t)YMcqn@LxM+7XXT zd`402F=K#}mVOZ%K8P@?T6H3L_D4knGE_;hBoUJ?vw_s1%91gwY?@T;$P9N{g<_cw zlHkMJ*zg1g`qI53y;2u;7BP2G)lK9$zD_qG?_GC^Z zZi@6+D53zHr_%@xb%fjWI4K>uEX_Ha%_$R!Ohu_&hs^?Er&1ZnHkDM66K{^NSmm&@ zzdhU^wAmi`!qRs_+w^=G9(+}?tV-h}bWO2qpwD5P)|$)+wtOUeKz;p)+;@0?sTd50 zNC2zFazTYd)lAcr3LX*pJU9sv9vc0F<0nq8>820i^}<%USk^SWEzh{?M@Z^SwuJHKaTM+f)zcsJ zJsES@pA!)c+>SV@)S5$F$fQU_$mKea4ub@AZ*uIw1SfAu(noGba#2Nr`%4l@j~KSN zP$XUv9a$LuPJld8Hr#y@*1Db}{Wr%lV%DYGXDy3Wc4U-Wtkn3?Fh$kjDCu(>#u#Z88!B2Qp$HPhnp;fR|r+=DEqK=O)Mg%dZ?9 zh4c7(Hs?t5c+p}^2AcaqKY==}F(i~{JEL%9mI0~=81HmsKQn?~PRy(%gynWKQ zk>G8)wK+rw633AR!@Je92oz1`Zi%rha*tf8M5&UQkOd-4X7Pu5Wkg&BGn>E>Zh*Hn z^c{D9%)zCS`@)fqDXeVCl9$Su3qTf;W~WveptZP6StL8lWZl2fV9Ax~LVG|x^MkHX zJCM=0bb}o~R(Y5wZUt-x!>zWVHa?Vw02ZbC#kEY@(AX zWYRzMp~6Jh)NT_{*J{LlBAi9LKd_!zj0Jdr|Ew^Vj)W2=HEjN{CxtEBGK(ZdP@&cR zjE^Qfb!Z-$0vS7;O0nfeJTf@}F_3QAZsb*0fMCeOsx&uC=}KlQm7A(`I`D!l#ALFS zl5%=tVti~Okp#Bp99W$}Bor7ZU?OhQ54Z3EBrQqe(;o`Sy!ShbFThkd?6L@J>gB4I zFCa|N92+hyp)V{LqgunIN|A$AXv5xcSS#-Kh1$Wf2iJvS4@fbi=l2JYrtrjJw^l#! zoMI@)u6v{%i*#Fk*+9n z*!7I65KttQcH;t+>%*99bBMJQNu|`>%qb+0BY@;`WWh8m$t;3%9f?UI3w=!Ggk8i2 z`)8wG+wq_c=S1AN9YLC;R27(}G1S}sBZeyZ5L?n@E3>p=REtHmTrA!xK>15oyGE4CTE?6Y{y9E(t1p61#Gt3=l)snh`zHz(*!LkWmncIgusUpIpvhh|5P9FMn8${V0bdkm#+mbQupf`*KNPZw|%F-8R z$1SFQotJsES^uIDe!q0t`z!YXf@0EGuJC~M(tbKDiFj5_)GAhL=paI6~pg@~gNrS#94 z&vGWs$9wbu_iSh2F-h`c4P?VVB)80dG$%q$=t)W6gy1!O4rxd|nQOA1nwGX^x>6B_ zWipqWlm-d0A@nno%9gSjD(VQ43Go0MQx2y|hmqwVN>En&EPZ#M;>%GOaLia3j($kJGS3 zOGSJFJfjpK1Ir!ue?N$P6`q5`4U9s_hgh3-x;_L3`EVu$P@SkuvYP!U{KN{bpB(8S z#~g5tfPuq+byeO%4JK1wsbt5K6G@q@Cd;jP?2yy;V;QE^vUsq5AYGQt%f6m zX3}!?tT+>Sd~L}34nEng3URqAlpa?`QTt?28+s?FB$A~HOcyywr=Crvv!xsXU?w3G z>rlaZmen(8C2|sEBopH!Ry^xPj-2Q7?FN0@=3H9b4PmWOxF+4cPv7BL`wUefSPDPT zK$b?|7j7YME^AgiUnHCiq$(Es!f{Do1n5dvi8~Ye+;}kX=&L(r&sa!`!{!8PDNd%Cw(TOxMV)DR}Ej0u+L!O>f*|z9-}&DaEt2;_efNkY{(j2E?=# zxkByW@5jsp&+hN{MEp>=&uW=8BZOZ3(UxqCI52`V%TIh>15d_7@sP3Wn-IA!Gm&}? z$J=LXjH41>oL93R7zdFqL6It2NLPf!+i4j4Ud!absd@;pLP=*~tBA#!jEwi!$>S}N znb4sHrxpAc%9lNm1&VHNDkH)Z5n7BTtf>Z(n!|YmLoY)$O=%{&{eD*}{1CPSw*#z= zK(iHRaQi`|_lTWE+OpLAg9zc2B?uv4z*Sdmc=8Z1*&ljcrecFwfKUSVh1ndh3W}6$ z0&1dJqLoo!jRpAFBLT7kQdT)N>e-}J3n#>mT;zzz1Sve7;|1))$GPyK6(+pU0fOn6 zl^{%43ee`3h`w7(r6HDerpL=j2s z!|0LM;^DJcjW^@om@X-gZDh}EYq|sALC-|=mN7_czur1K`MDtS*h<@h*C(}6WB)){ z`lec7%Y>_ZimGJE_-()nPv5V`bUoQh(hr!PYg8I$StJ_5P#SJvuR%cRY>KmT&57}J zdTfFveMM-1r8(%PQYx{>j+{6v)Q%2t%!u#Bc>?*}y3ljzOGuMpmf({1;&T2E2*t9c z_%9oJ7;LPquBn^4gw@zl22e+a39<5+T=Y3^Ob=lkr_f~?ogJ6V|>mkxF zX=_GgDg=(H7OT=X@w)o&neZxMlw-1w7}SI&C{i#ya*kB#7X%JLb{o#2-DWCxXbor+ z%7K_kaHJK*RSKWf*yp~k%u!$|*=m9)+$<&P_@h$q5YXi6ogA@YE;E-LpGYf0O;Adi z5z?MbnN*T~2yVw@KZ!U-Mtm&kiW6U0oCxQHlx-4XhXEHuK{>cxLRV|tRN)!%8YqWE zD6b2I#rYX;7}~J_EunVw_je{Z@uZS8)(KUJJWX<>`;m0z1_(jjE>uG^q#pQL5Ls;p zEFw7sd2Co|1Ogt5FeKEpAvWZ5o?hEnSzljYI36<-i0?gCG#Q0eF18ZaVzClqa;$Sc z4eU}OC!Z@5IIX!Uec@7u-QteyFiHwDA(xWPMr_M57q%WvD#hj5s4YDgc1rmvv^(>w`2RBN@eDsGW|;SkvY*(WkPWXE(ewLm0iap{$1ODf%?G-GB$|B(;$ zrTYA%<>hk=$B#dg zoXR9qbE)GC6yTvH*`#6Eh};b>Z{e83{w?DeStnPsP53wRQ=xUGT#^OVO0GGPRI(|K zC3Q-bQf_iIW+r51=|nC~0dnH|causXxd>jwPa{4jRo<4lWVZoPR*OYkyI?-YN38HU zj>{&K9qzA{An(cQdNN(;1im4wIdo~SLxmesq>?@#!i27QeW^LZ!sE(Gzc;)Ovgt_SY>z*Qq=7ML4`)cniF(uw2vnw*-PoSK@#pB7G>`tr&76}{bd&tHNG zr=D10)tC845YzMoJp69ZhNH)=dWB{q_>l^4GLUq1^09zN%@u1Jq7V-B1X;Yo4O#*Gy~ zpPNu9lk0$ahIjcz!CI^bL*{Ac(OaF0*b` zX`%InWIkY_z={XfV~i5A7Ra3m4W0WTOwZ=#2O%lM!;nzCDvS9-Lm<4gt#ZN8n5mdN z9Hw5HOly*NZ{ts_Um2RI>%yrHTsTcLq7Q@#Qv*MjiMWnK`k)8vri8uL^5po`GshFj zuk-8q=b!)jt3P?;uikn0gZDr9;DcX24*@=N(I>G1_>~vw%5DOnUrzw4G&K-~NhIRB zolH7OHOsN13BOkd5>&DZ!Ui{HvEYj6QNrI~-7@NB6!SCrxLq$TdqxXgm9DrY9?}c8 zg20Z)xI8KT`#$ryK6l|6HoSkEg`%N!H95@0lCs;y?^k8*gwWx9QacE%1+L4;l_BE^ zo)A)P3H5}|GAjo~1z0RY*hqV$M?UaT5OIS5u#R5R_BOV=*FJpvE2A&GednE@zyHgh z!zv0BsQ{v#6%Ji1!B8?y^>5fWoH6c^RTB>8iC~KM5K%oN2MVv0dPl<9ybK)lr8s1 zx~67GTa(HXFVWzm&v1t^wIdQ36MsryC`4R3!Ceam zlLXGp$@E6UGFH@hP#X%3m~8bUH4Y*Nepiv^>>1hC94z+3U}$kEjy8|12Zf2Qf{h*WEV!A9UDzn za`jSulZ#@=Oi1N&nW@Rjbxy1!n{>G;(0rsfoD)H6NPouoC&`B=o~kXLmIFRjXw1H% z=JRC)4y~+fqQYe^WMqYqV~dtRRau9?C?7~FwiuGBju6e$V=bBR@( z&WOyth2m3#E_>EPvy3?Dp^X zM84_@b%6y{RX&ry;#Of*_^uqE2fiqFz6d*J$_-Qg!$5+Fk0W;$2%Y2bD@zV3b zM_FX*A?@pJ)N|?aq@u8^&TOQVO$o0^$;sUM6w+eY@g^)BLe3y9lH(wvN==JnI}I`u?6~?@P)Vg^ zK~T_|!xYZv&I1|3f-iA7m)}4V&$SN_tP@i^fGI60`VEI%ywhMG)8f9dq0NCZpcHPx zl65aoPO?e{j%i9?n3Tja@&!{fHQSEIe%!9rmY&FGL1b*c7jW?pTM6;hs&nPbqi1_p zuJron{Yy-0g4WtbYvbz1T5Emv!gEaJR=v2u6byI=fG($+{h&a$jWgElfJ0zV~dJD`Lc zPJ?-F%#oHTte4}`t8i&dtqQ;xZ$sd0B!F_rlB_3rJy#)HR=XdyJy|)!Wo)j=r4vwJ zG7~(e!2rXQ9+y(GHVU8Fhb&?BfEQ&|7+qHJ_kzeOS2jsc#0?RHAg`sz#}<~CR==@$ zeDS&Ci^ma$VZ5~DQ_Bla6UL065Qv1d6G24Pbv+)v8h*wP3^(fO@ti`|T8Y~w*w!Q^ zP|1!R7*BHIzk^IUky8|8BuZ{F%f3iwgaI}b?EGlZ242C6x@|6>vi$zGkj(uEnSBFC zrg8g$*WK@(bh{GKNQq)JWuV<>XR&t4aswxj4YGfjR>Ro28it64?OXAOR@}IU(7Rrj zD@vjWV6A}j>4kxiaas1+FQ`5WB3~sQD97z*!fvZ};tQisGx=RxSy`K(U#S7cYDPN@ z&z?R1wXek{-1k?`ZIRxt&ljFsa=C5B-5<1xH-5A_rSyUEEPF+D*ewY~3TrS*_COLL zSms68p;KfZcQ%m(%&Cl!OeJfxoG>1D9a_>2*UL=GOxeH^+lf)0EtniCvE*aPL5sQ~ zW^sqyR}qlGXvmy#Bw7}QM8c$BLB9u{3`Oa{{!Y+#yhcrialG!37N8OxN+XEVT(WjW z#%da}8Q}MW$oyG{APM1GBLU0sgG*138dqHZ&-+eU*VlrLjn-0&Un}!*6i!VpuP!e< zW1S^qG+$g?cBO|BYal0;)T%mPSCsJt2SPSWDPZJEDV>mbo11{cYa(+~(!z0*oe8;I zVhq9@F}UbY4il*q@UcJK!o`yesK@t{prlfeMd7NPixpn+$KdXYR+eSdR6enz)h zDcG0%m(S~Vv z_5E_zfpJ>#Qp>h3%K9H`eXV7#tp!WR$B!fYE)xdAcAr^zCcV70bne{J(!w*x=bl}h zf&h_fEG(_*`pSt@b0>@%!Mh)EUY`pqfT~vJve_hOZMed`vsodjV zkeR^!#|pQ|B$9_mJaS`XWq`CLp%Bc^g!m%zDl7TC0oe>q|@D@Yd%JE+GrqII}Rn zviyyW%NrNx&aAGtT6m}D)|TfMlaH?em_TR0h3%EaivT*y%S){@OKqKCEAGT{E0hyi z>SQtlNhNa?jyFhKGnr0IW|0OX??_ha&8AWzGogZ*oK8cV0Wr5L2}TIo9O+wptXz8xGYY0%Wk{Iu)Qq z+cmkmg6p=035OtKyFp}|3#XRWR@RpmfJl}WR{gbFadCBhb!jp4?2-!^E}fV{5Ltu< z&Lzgj$B)DK)&;WsyXOqoXq{VMeQr$kt+spS%%6Po+&8aXyRklZPG4VNTUxcwtWbbY ztQf}1;#wQhYM-?hm#)ZJn}$j1qAY1I&(Eci%q8gem=LEjB@z*Y7??hssB=`Q!U9Yw zmB}a-78MklFodQRxqiXgU-wB8sUD9xaMyd4v(CkG*)-z*W;x#L)M)U>bQy+FHI3p{ zWp3to{bVxE)pDMzceJ9aYAt-DvHufHgw?{zyt)i5X1Z(33q^Hp1$Ve~a^>vuvTL+g zmVuv&i>FQ)kbt|f_RMn$)&n0~923du77oo56+pGz z6{wfCw7Al4dqLZBmsge-7mhzZuNF=&&X?iZ^|JolQrl2#vcuAlmGebd%6vUb8Vm_V z^-?mGQJS2wW?y(Jnam)Hu$itT6H__1jJb4z1K0G_usQD0w&S^{co(D|SN4bsYqFwB znp*ZF={y=RBLPd_=g4w}pDt#s#ZL;L11z&e!f?!KeEvx__O~sxmX;S*7nfGF3vWFC z?6bH2_HW<%=mcp`WoPg z`G}^AxM#{Kt0ET;Q2;R3kUtf<1I~^&=W-x}8_fCug`P8rXnIJ%GhBTqUAcO4^l&oU zgor9>>YPlh1Jcy-jnVN$BAaV+V12X0HOQRfj|WA#S`uJ}Q!iatf-`v>@t%Cv>uni{ zu;UCo8ZrTQ4WX4MXJcrZ<`SmS-b@|Mhb621J$xr|4 z?Y$SCz53eK%lLQY>TBEK04~yT!XXP}0iZ~m-IgAfywUIg03ZNKL_t(u?Xg)j9Q--= z{)e^@Z~)<>i2W31+AhE$E81+9TJan@uN;YJ#LX_Y!Sxa`QKfHFfCC87aRzUdH~7T^sZJ)NZI`tidE zY)jZ#k4WZTO!4KOozDoCPRzyH-`?f}*^-?#lsHXpOxxe*#*o@U?prGwu5APt{^Hxu zKmY2hAD?^ogAYD<_vLfjSI)avuDEV*a0Nf!N20}k6W-VfL#vD9=*L_J5?Z`ifYDH{ z3o*1E0VE-R=I#O{M}0s^PmXzid8yy+MLpYfE)fJs}tIF)GChUHGQYoGj;h2MrT@Lq|3DmMS*LIlxU_chv z*3e^)X4|b6gx7{jT-+e|3BvW&R^M-}FK@U;&|W#Sx^{78VZH77ZR6DH>e9lQ7tg%# z_OpB6yZ}cDIBm6LIhf3<2!67;vrGo^xHAl}QaFBm)!fe@x&94`9ofR*4ICubk`~*p zW7>Vc-({7C^vPJ;0^s=wU_(|5`JxW}i_a}A&f%+42iB`VSXm?+N>*CuF^WwxaBpmvYk5?pIB;1^G!T;57IY(^ry?_-V2jVc z;X*W7PbsU4II$|Up1_pNsQY`iWx&%30B0?6)-m69d;8QxC7Vp-n$67;8K_y-vAE#4 z(%~R_GN)9U%-H~EGJw-SeB8+mICz?ip|Y}*QQz>7* zfx{Lh;u_Y5<+K+U9z;)-Sm>)H#}z7KlgmKU90q}snw8DY zh`Y4rvV$IwP;a@dxy5s*768_n6Ft3pYHkha^h$VTd$_T(c)abl&wlN^f91**p|`zp z>;RL>5(Qn>{EaP2{7cp_S$5y^I;>s!Dj;8j#$m*o{zyGB9}oT5(Mamvb~-w zSOy+B(L)X;%SHhN5#cG4z$N?D?KmAE*Vwk>DtY@H5OHcMRRT^am9mKgW2F7@D~U8C zmTZT1Je3$fFp-<$CT?!;E!8JTIm%^IsT_&>z<~>=*4py?8E!ETE`B3>X8V%8adB;B z#XNiV{BrgTt+BQC%`<1dxp?O4#?@=r-u>X(wV%KL{#$Ro|He;t-?;aipFIDQy_$O_ z`|1m?{?$+KeDv{i&+gpXd-z~?XXoa7J9qBv?A^b=bNB9@x4-$$&#zs++`8E6ZU-BK zD}aON+gAWf07-yJxN*`nx?DcY9Gbi-SqUSYNZBY4{fD+x*Ul|Jx8_Nk)8a$t8mivl zQ|SzgT{?%G-8Jcos$9-vnJ{C=WxY|?9GGyIPx!(|44}dgpd*Ab8NP^IVZU&5Aq(XK zsm`5-`H@N_mJE-_3RRk0xY_hY1QCw;B-AgRMK-6Tr!q>0+dB|=D_nV!N~M(g_3QPK z?Q7q>@caueeEsV$yztYV_doc~;XSa}pKWUzr`Gu7 z98OADTR>nz&<`L=uS>!WpCA$WYu{>qYwpa3A1|bky_q(_IzyUIfN#rE87Awj%#+3? zi#}{ewoLP>b@EIr?lcPIVQl@+1Q@dF^GK-Vcc055nXPj}f>4Q=rXebNZRK?`IY@;;MCmkT;{;SPm1eXa*?Hq9AKm@W%<;9Mxqjirckb@&?cKk33o_oh`^KH!orgPnJGbuaeX@6F zZ|}o*UhO;&X+oUWF0Nh17vR;^%a_+Kwl1!>tgT_o4E&ydiRA8f+ibIG?D9!CFyV{M zZ+-jQ-?|96<8ptoW>ayx9J%36RdNA6PA*%K&z(rF=Wu^g*q8mu2+BcBpp{1`AjLyA zxy3fW3rNeRYQOF6n|1u`y#H|`E74VH3ImG+APN_xW{3gfJ%Kr{&JrdEnQmMMiWi8o zNl>7oQcp`GdvCw}@YbEX$VA_H=f=CgeDU0ctJhw;c6noCJ97Exiz_h1OIP^MaA?fr z^DCa@P&I& z$4_bQzrMeF@7Ar4@4dQv>&}CR_g;DFy`Me&$B%b*?mzhO?t6Fd?(F{KeRxf1_x&C5 zpL;vd`;XtbapRr0sIbTbzP0&g=edouXWQ+swa;qutSmt5n$2x?dQJA2m1VpZ!sKiP z%h(Oa^#-mPAcOZTdDc=8_+i{}wWWJw0vKwR7Zaorc*vEa0F%kFi3(*^*=(kh2)C0! zDw`!GH8q|@P~kRd02%0Fjt>@r&=9uMbqOpmboSYE$z)bhMy|M9y(?EFhmCpS+w4U! zH;#A2_qW;kC-ZIKsmG2^A3ZuVo6mC<&dSNP`3slNUA*v@FW-3Q_N`kV?mgJq+4~qq zy?1x#_1Aa)rV?L)vjp;nSUIWW4F~ZC2FdsbNZMo0YUtW#Lr|#|?}@f- z?bxyW?DWjh8HjOuHvgsKOyTUbR`}9%!79$otY2JRU4QY#8?Su#t+#GMfY7m>JA0o# zyub6qJ3Bk@s<-a_`u@ZFx8AsU3&Oj5>-9Sy@7;U2cl&h&rJuptZ{6N~_z;@;-j810 z-TUxo|MA}K_kaEt+zJ#FcNC& zy3ziWUjS_A8@fCkRvsB>*x|XX@QA2*3UgXulDV~&)id8d^X#)<`AR)kI!&HnHj#yB zQ&UqZMRra!>q;tfdg8IM@zL?qnG`q3hyY16XG>C60CvebG1%_KRUk79_~1*4Guy+`)=UcPbTn`^%! zm*w_u*J(H$aFNBYhDJh@(LObv6&IGxCbQW@3Z|*dsTyu9U)xwex4iKD^FMm?>m@GN z&n7wEpUI@4pMUqO@BisD-~SKaA0PeWU;K*ODPY3fgerS5_xnQfSPQP|H)=Ep|Iwqv zV8Wq(^yn-s_~=YQgg9M#wpQgX7Tkg)A$qKN+WyKhKBn^A#DR$HJ>lT2R?OVb~-;lTRZ~0%|CTCfAq*qar(%U(}fwx_eimD zG_TK3PtU6}^D{?|mglGE4ei*Bq0LOg)`1FfmB;d$Hhc2qT5Epk!sTlZK0%ndeRp@~ zH}`jU_wN1lN1dO3LKDA>ulIKDez?2$$*({8^uhhxuiU)1vwQc$y}jL?y}Lhq=jR{X zxO{cPXt&P>xNJV!&a>Ll;L62s|N1`(3ty{pS8mAl@_c^L{<=1}0OZ2i^yoOBKgIG? zC7H-1lNnV#cI4=E(OO$QIX!>$q&ai)_vPw4|^>SBELH7_xX7fj8@-x~r zbg_73rZ78QHfD|e3l0;2^0Pa4 z?tULS_~T#v;#F@vk-yk@F-DhP?am z{wEOcE8lquddDDt@9tl|2kCwCfTDZ}0qW+R*I#+%G|B0cPLb`}E!$dk=r}>HYU!xw~`w=H1#yJb1hHoK z!QRKW-g@iCwaah(^SNLD=ga^8!kHi3|K%k{VVlpEqnGE}O>R&Q!e!2RD3#PCa2-5h zlMk;}%QMGtY5MGu)r%{C^rf}+lhZS^F#p0VB*?Fs=QdZ&&X522`~S;@7vFsIm3zB) z?)=q=Z*KL-9ghblhMX~Na3P~S-Aq=)QUApM8ecv5hyV89{M(T)eDNs?5O#cIW*!lx zVDRX^{FIiTE*^Vw`l6v1lVaI~i9)++W$mwH6^(p+R za4cV#X}$GNpMH4v=68R16ETB^4F7lUy?eX&_uhN`*1etEz=`)CKHS~AdFR&;9(?jI zdmsMh-pwCEc6WF0-@pIhA3yo{;locp{qVgzu(CUE|L5o5`1EpX`ONaSKe>8kdl-4! z-LpEE9I7=5l?}7KT;Zb_xR!%?Mnz%gXuf!Cn#Vfx)ssh0eew8garNZPtlH3u`Ptc6 zfcd=kKmTw4)qnH9{&x%NOn!d#8!x{8&WNXN01nXCy0#Zn$_#a0*0zzapvn*(7k|3} zH1N2C=ihuTbO=>r6gqWvN>%iO`p1hQ;?3HQ_Z^`OP303-N>V;@e66wf1lJDx5l(Zio zT@%`+BnlCH73|oFu<0nz_8`XCWzmk4%&Bf>vI&Ara2?|=lVChO!!Qi-KA-P^a{3O5 zC5i+A%y+(jKA-QuUlC4FSCo7%5A#I;Q4F`%sM>k~0mZaRmg~AU;Ee(y>y~XnFMZqd zeLTl84SWlP$MGtK7jIraXK63}-j64*-+W=_nYlAx`Q?W%oE;yJN)t+qr?xzQ?uQ2ZMSz2m=PvBu{piZd zq5H#wVL*-0U`uTL{AEt9O$0;mGqXHakqO-x4}m%%ImiXsN3nkC@6T9YW|Hdd)V>f@!GvWEz6-Yt?GOE2ySn=GAO2F_lnM+w#kvnMVvZ zyqfRT3N}cNX8Y7WdxO@T&l{!JUz$AkQt|p*H~;kYn?HU3{qLW9e6sN2UxFgWm{sI% z<%Q?J^7()Lh0lKeb5b_qLG+*d+-Lv&c%%nXio_$GPfqXNzp}Eg4^|RpAJ|aSga;$1 zR{{b47GWGfPpD;F=8V`cH!(5GHDilgjg7Oxn%iql7`V88E=O_ssaE0l{rO||fFD*mOZK!#~6sVbB^U4LfMFSx_l|lGH z{MoQQ588TtK51Tm`nu)6{?g5-&pG&=*B^iU@pCtR`ps`Xb>i&h%YVi-Ugs};1=QoS zpOus6zx5}7@;`m@Q=j|nADxNgX7>(`kMy2~054wL*VPRfMYzl+aDw>66yTwil}G;# zs6=mPe}8{VuoFiXnes3qwr9srNzeYGl-oa^LcDzCDC7qx2>ETJ9p4Un{={9MXl3eS zd}L^FXn1gJxIYH>aC|5{9u4;mA!39Wg$Kd>Vv#WKCF}#T?ueWS_xDGJJ0aL17)W0q z;18m)QFRIq;;(K1uMixn$%LZhHVmL_{6CL?LOE6Io}JUYGD2|~XnO<9QAsJ9Zn}_q z*#&)ct48Xk^5yGhPJ0!I1{X zBZF*{3w5{mbhLLw;4tBodvV9Zz}4i1F!ylewW{w~dOoM;bm*L>=8HcvH;TXXYE{49 zsQaMO>6~g6Eyu4Kc{o9MO~)@FkT~El`7DBsX&1`2=;DWexocU-(b#clrDm5Jx`suTI1uD8hm*4cr6p(9b5G5L_VS z*W1^7dS#zz;BVm{U9|WXn(0{q>@v&1?Ho&Rl91xs4`pLU)r_?CAPr#Hv z{h7~v=Kei>mltQ&R(Yi4;uWqYj&E;ix%2LO?}wq{10n2&XSm4tcm)4}-Su_%_H=Z^ zb9Q$0hdVncKv0{Jo}o~GWN0|_Y`szS3znXN{2<4|5C6Vc`tG;>?x!ZcC^Off3S^rvnY?|1v{aDMmSkC(?= z^l>Nrax7@J<#O!Xwr_8_{ZpUZzJ1$mckXQ4v!~;MzV2?KX&@c|#Gc-suC6fnOZNeq zcxW|)e|q;<|NQfJ{^^JBz591R0(7>iT@GZFQ!-Fc z&D1qTGjt_ml&cWEu6po|z&1tCcL6O++5C;`FW$^Qe!cn@kde0W^zVJ~D=+@?mw4eu z?Ssk(PQiTr2Y>hV@BY{S^^gAKbK;i)PY(3{!SvpJD=QDfefI%SKyE-@xK{@d2N^UhZJy^c=YJ#xanq1aG= zI1T}J1L6$g!w(J*^?rp(!?FvH2etBx_Peis?cHC2fqqNRL0Y!wRBOItJHA(fxf-cV z9=Opi=s-1ajy2b@%^ZS_Lip|Ye${u(r*GbP{9F-kwCvlHM-Wl2|KD$V<*M)cUfD8? z*OYW7_43Ovef_ENa4#J5@xIQ37x(X5Ieow2l*mW~H@&L|kB*M6&M%(czwh*YUA;Zs zU0vOs-90UFII0ty6_Kf35?OQ)a$84 z5+O)QfAui)97A25zde0u`nN;93?gAVLHMEo2@e0~NB8bO{Rrc8M;E_C0bT}%X7XT; z4JIHR9M_CCTP?$(p(vN4aEj*I8K_Snx?Syb5AE$8yV_gtU!7aKG9yC~(w=|jw%e(C zw?hL#TVT$RA_YjnZNp#qyQOV$ja4)`x^A4u)%139**n8Z=rxm%qG@JxnpynkU;O-? zuYKv;@BRGec12f`sZ`E10jNFC$tqcRwZxPH=Iq%XLN5Y!E}2N-w@dg^Nu^S1M%z%- zb6-4iZUZFRC| zAlCu`LUbLw+V0-7r>$exo_qJ)d0Q99wm_4H$7Rp`>g;Wzako?9Zoj>y`Pg>bZQHg7 z5~Khjz4PZUFRm@D@$``JIB;ONk2tYA^wm6cOG%{CsrmWj@V{N#W9<3E1M{^y!+ zm38Qq>6OcFy;iFM4%#I%pI0-PWExyW*9Z-@$Gbl+OTq&bRsb|zx4Fe#hV}g;4RfGm&*u0sl?K;!%ZOFwW|$rn3gd}Bm*XJ3kQCt zzoV;%YS_Y4k>aPArDdT8Jevi#OI}p~03ZNKL_t)2Sy~ipu1$>d2$jW!x%1afbam{x z`_6mY+U~jM?%VFUr}b{`4)5xT$x>~ZZJ6O2?(Jf_LYrH*i2@?_?6~{RKm~X1qyXnG z-)ilcyEGOW548_P;0C+lc8(URAiXxo8B}O~DKUL$_w=&UjMzX zoI_mxPD)8DV1tGM$$xOM31b*1`uYRP5$c0S9B$&kNB<4tAHzxqcW0d<>*ZM?vOSA^ ze>1VMs2p88$LTM|VVNO6dgtBu+;R7(_w2d%o;!Ek2H|x`oQD#xHFLdC#AtN;Cn&+& zZ>RNc6YXOXV#l4^wtcLDm#$o1JHN(BxYdPA%Y%_{dnimw*Vok-dDC;rWx~x4$=9_=%litLgft2QdA2+F6lZ82U)sF6OkBEoKXZ|ThFTc zhHCltxesq9zkJSlOUbzmN1p%Er?l4wRiQg0>m%}#1`Jtz~7=&VKLOes2oZ(!>vB6Ys>8NR5Q zN#(Jl&*mo|3s1Qvh@x7rsSvVPZ#1Bj#e!p&Oc)^|MpR5=F}Z6j3Oj0TLP4*(tO-=H$>RBdU*ldhOMTY zWxRT2xZ?m~T2BY07!D^jdN0)~*sk~f8~Di6&z*gyx96#E9PSuiKB<}oGj~0;q0VQl zqGKCCf13?ht78I)7^b3T^@4Cc(hbK2qBM0qZl@#HV|wrYmFY*`R3Xo-^1`v64uoKU!M^ar7apYs?z9b}}E_ z*FO|`!8RB@^M#^r`u4>~;RAoWZ=mOirw;TS?tZK4RI8p3b1T@HT$ymh02zitSp}!e zJcQ%ds$QdBuR*FcSZ}4|`DQv}*-Z85ufMc$1Ny1v)pR5(L z>Y^;p8J85z1O&J)0=&9BwyW))JMX@`T_h&~gaRBm^TdGzXU+_Ec6UaALWVj-?}G4q z`!;Zw?SUH>smP!CEdBQneQPMd8Weph7RPrDhl}Zgjht|ys0Z^mong*n9 z7Rvqy6&s$jSc1Xo`qS5M-hAtKCqMk~Ly#90G2F-~c6IaD0MgI>7;Y3^($q`@Gei06 z1D#Nhq0@&RoW3vg8v>k@gD#GrkOOQu6mWHI;S?vm#%H)of$aA3Wp3J8zj6|Rw>?li zl3)l=G>|#caJaj>rzbMh9g1`dj1d7M64R3Jx@-IPf8hclKmpw&W5F;tg8xjE$7hBP zbi-$lzm|h8B+P0Rv3T>NU%&D85gQaxD=sQlnhi#N@4=id6IpU`rw_L(_6Y+8S< z0d!q*EWU%H<-nwssRIWQUmjhVzORSL8H%wb&O-utN^wlKqF=iT%rb!}9Ok|j0faM) zK-v=%@rAjgBC?MkfdKo4LAi&cEc=efK*rm*1r#obz|_UN?z;Uh3hxdIkY8-y!$#W~ zcI2LIs-0J+Ur_H;J)a4pU(OpHec2c@bs z5um}qx?^L50|P?i{)H5~dWb*9B0%LGpkx3fZ9BHzvHf<@!T`!3Am4S{mIm?C z<@2)(t5@V~Y#Hns3x|h>#{mu^Uj@=bh}Bu=uv{~5TR%Z8*@qAQ2UAmt95|Z~=H|c^ z0-l%_v9jq{(3wV~2HUMd370Zurfpbu%H>Q5F9mkY$9yWSnnh4*Sf``w=ggb_xpU`o z8+s;@VvWkR5!vBBefCPoBWGxN2+x3#r?(QSpC%jb1=DMpjXkrz#)D=Ug%@OD`51xW zFt;0wfdoe7AO;cRu+ZRL|5AP(9sLZQy&YhOLy^wD$bpWXJ9f0*zXwK4FnxPKg|}_n z{xOo-*3O=0>Bd=GV1woP%gfO4ah}IJ2s}ObL9N=TITZ`!ZApPu-FR;0^zOYEFRtwW z-O(dQaHY5yh}P1*std^MTRA1~coZI>Hq-{zt$?mrrsH~5XdwNdUo7O)Da7AoI;WAK zsCix0UV7TUe&pP_>u(uGRzQ$u@r4?j0@xkqXVWQ`r!5w$wObi!(&Wybj`o)L*!nf@ zk`88FWLiHsFNC;oCdTQFh1p=8M|?!&w@dN}x5U`q%`*qbL*3vuEVhsJw^M*!Z98}D zY`c>M0I}vkfIIHKcTeliU9Fvq=NHDtaHpE*#s)*iah_5)6zU!7{eB%l&4cRdWEwCKR&--)313kc^Q|D~O}Q7vc0Fz9T`1$?rC^Z$TSNzol@MA1F@H3`&HMqi$y|8=4(K; zFJ635O!z*0guc$suCA7`*!ns*fN(ir(7d?DjUa4poSTa?uQlFW?|c3#lL;M?hw1A0 z*p43<3q_)=m-lrKjSYr}J9j~VZC!0UcI<3#+tJzv-xsLhj@H&)Oh>drfa5%G?gS@h z2{h-{&vPm!&TUL#w$J?^H3Uja(#*-J(TskB0^AD$9(pKuUCCDwPaQK4pv-X1rfmoj zF_?{<@SOz%ZqhKF5<+<;*M~)nMy6hLS5R;lo zD@o{g4*Fdx6+L1}+!rt-H3gxkjEjK=?tiFg+e-2<1UOEs9Shbw0Zgy0UAeX_0%SWF zSG$Z&JhR@M0gHG2{~rSb2O_;aeZ%8nT5>NKSw~wd1lW#0cD6x)T|0NSwQjq!tqtO% z_CkQIJKH0}?1^3DX#+FtAisQN26t*K5{eA=g}OVBYUHmF3mjZxbn^O}7grwLy^kjR zkmK0k{rE{B^;|T`;m)0|X?WhcqC%oTfq~8D>`zVDqX01cbm^Z&ZsV zJC__Coyu+a-b+uv4&{XMB0l>i*8v>jZ>M0;AVhGLmX^&j37Jbhdm1+q8o2-AkE&h) zk>>RluB~Di;Zi;BGlc|~=FS2ibJy7+F6G>e|~{0QR1^fgK2m?zVK(^p-@k# zw>$j84b23#*R+bh1h4m%(@hP0^da4<`C2BC(Xx3+qvCi4!}3d(>s4UA1y+qsBM*#Y z=AdL#Q-7>tuk;Ae?k!7W-aSz?}Ajb*_SF_Mx_(_^L( zb0|DkQFZgi#@}Xcab@*41lX|! z0|$;A7z~FG9}Y2d8yXqzLtF}ndwM!rVZu8EHMh2I+qo+cAQW%MPMC0eD+6)+LQGDi zk4fKIY<6LmYsyyVUOXCx00)2PfBf=GZxzkI{i*r)dh*D@(a~em(7?UZFyx0E1DKCh z5GWwRq+PP8B@V(S%-*k;GZq_VJl`(BbOAncIS7wpoWdiKOr;WF%NY<6HKRk9RSVoL zr*D7-o38Kr4MuX$Cd|>HcsVt#kn800h+0|Q{L$MNPaiscA6{%;UM$lRjn1wuF9dFU z7~wa1Mpoo3tgdcNA#ROvUb}YUW9K(80No3N+Ke6!L1{XeOd*iz>kW19gaq3VN$B*T zg>Z$ffdF?v2U{g2y(<=-0gRdBv1>C@4CFqc6Jx*n#b5tUXK&=MzV@}hdik}#ed!;6 z@v9|V`&8$B~Eo>5q1pvnvk-0@+ND4m>b0FaV#0&=3M2K@=H^g+p|5JNd`9wlCK^9`^1WZZ_ui}j^IyOB-h1DD^ zSN83_xHA2aqzI}GY}T{$;J^^23H`9ZSoM5PNoTa2kxOnsE5TsBvcudg7%{+0g>n4` zn+jEvc?Fk5#eP|Z^hS;e@Vuo1A1P^qYTI#&7AskV0HEqh z8Vs^!E`H)vd}3@YHoGXTn;dgk;U7@IojY6GyWkRG+-=+mD5KNo7fvlK zu3cW2h4|ycUw-x7zxvvjUVZPqcfR(uSKoc-um9F8sBq(U@$HM#d#9%#e48r86bp2w z>f}t@Oiv|z5?f(LelOzV^<$-+t%ack#zN-~KN@B0)oBO`9M5 zKNp|8_~hFkHQ?tw_`615| z-7`RI^Cmz{Rs}PLDeD@*w!@}kL$iDab2>(ELoGKvtL%FP2c#P&4A-folYmANR-k)E z5n5jYkUoE{d1{R;>*b_8E9+7zmhlET&sbKZo;eZ-Fg!TWH2^DyF++d{`g+5CeWAWC zCT_d?!@UR{&^HPYo)A8ec`OK#=!Qas0JpatN646%;i5vG*E~BrJ2Q5IRlpPH-u=a| z0`>dVd++}BM$xhKf``k_Y2SbU{SO+oYSpWNV*zo%?7UI|F*l!{pHJuo!*B{-m7%1D zprNTII7${C%PJWHC$mzDuON$>HgxCfi z2n|4h0~F-o;IYFYg1_!iZ%=pMFi1&^0;HYp5E!!qs<;z04&PxC8#ax{_BI||eg5*| zGS@&z6kdzZJ-_;w-~8b(-h1!ecV7L{m%jb(J8*>mm`LSFGP0l!nG7hYQ3CcOW`huG z(6|O=Qq+^9^SQhN2j}n_qOho;-!R= zrT`(!HuAWx4ic0dEqfN$uE6ohsRWCcE?>QJ>G_4f{N|g*fBL_^``sV@gv>FLZjYkCOi8pr9!P* zF*OiejZ7BsLsipE9D?>)F6f@kOh2cjh(^+?k;~)}-{IGaFlgAjLoeZ(cGYo}WttI=Hu3bKPa3H{dR6oMN zaAY{fCYNw{d|{l4JZ7ZZp?BNbx*$P`#gHLF%FbQwkG@5uBVfF{`R#u|NfsVP7y{2y@R`lRunvo&E>WO z=7oR>+p^38Vxp6qpPUEEQ`r5>Tpqq{70tZNnoxwQV2`ZMsKTxqQ(2l{Qt}2IpUpHv z08bdmbB0;=mBf7Fy5$*(d4(9=uOXDk9c!?lkN0%|0W#^dLIFbe=D40c*fP1bK#}Jo z%*-rqonFUb!=oa)2L_2^!iOJ=437YL4@QRjp?ed9-8~!(2}QbF;qTgd+5`=@wsv*3 zf{BO#gFu3)+}d$weO>0&<7dzQ;WOX-KP&ibb*H4i_L`Dl#L}>K1hk5=a5wf^Qr-GCG-1JO@4yan;h;F$gE8 z1(Q4A&QPw3@42;F+1^Mig|ZEKW=$|?m9oyIm0UiTQPQ9pV1lD~$*H84H;Vv>IWR!N z^#*WbqYjtATSF7R!iBcMLXL&?<*RGbSxFqo8ShK7W@nKzhYKf<4IzjibPOCk5IG9q zJt)mfk^bI(&eU{sN+}fXXl;|U3n4Q=OUKD$#}Il!g9moC_Z)1467D*D?Bw#y%)4qeUm*$Y})eNvYA+d z*-4%heh-i=om6reV8R?+UJCp-0q3V%v^Mr&x`ZRtMY90)HGvHg3#xE$zFROiRMm2+ ztXYEvygVbbW0shgWop~ZrBXR9r&z9?7k%cd`Rw4f;Sq}^3XuB*m^I~LiPx@hyj40Y zFD-Ij`0_QLy%Qgg&#YexU*za*&9m^v7bM!NK-6I65Le#9e^D zUB?a#AMSwMx}JFKvB%&;+j|b5JaFvHGGf;HH^0NGWUXQs3e4gcYqgCF(+}?5z3=pe z(--zX#Gf@b{VG(jRuv1XvBRalX+we>!(rkHv6kT?pEn&t)etcSq1!QNd&%WYk4J1M}nwmnarJ@eGzfn8l^o_PjgXyEWuXW~asUZV6Q zdk2@}S$-YL0Eqhj8>cTkx_kG2$ZvYz-Wte3V-uR-*Cmrz112=exHwaHem2*beob1G>QJ%`uL_8*now0} zVcum|i0`|cjVge{0ZwPrIk0C#XZtqp2}`7=SM?ykiQsV5AkqqumUCR$s5$|)1Y>9d znYoik!UrB08W|bv?;RW&qww&Egh7A1gOvVYxO;HCzqJjD*UAK7YwOOo_SU|mXU?BF z+}{4gU;gDu=-frP%Xk%zmQPb|^e7y}VObE^KM zx2FRQoQ4M8=aKj_^db0F#i(#ih^{coJXFv(HH+=%2qy4rgfq--0n11R3c>((Oe9il zeKYkeoEt=_!T{}JW?q38Yy?24<`(okZl0NgVmhvs1^cyF(JH`1fogDjN+2vy^O9Q< zk4rG5q*J&>nUf6IrOy{htLo(z&{4VoZK1= zK?5Pa!RYZwe>aCJhCzqBZ`&b75%Ga-BFxtA$BrEyc;e_|PYpaU`dIg_1bZj73?xQ3 z1x{H6Er8|NwZ^YkE*^pgUR;@8*+&f&0rD!VH3t!sl$Gqv$SPTN7?oRvTqtw4FIY+cLoiX}M;qEXIip6?Kj2sD9{039v^V(S}_T~Ye1p|xM&t%)dA#3?i1G7($9a_Kh&cv;3AqS52QlJDj9<=`+3?yetUj}iih^kPTC z;UWGV8XV>~$DxT3Vn=^p2kdv}P7&bFR;E#R?Cf~ri6`O@9PDWy7&vkAi6;h9U%+oh7nRG(e&nPLLFa3MU% zxh`G{#7~j{Qfy-PK1>fNWoZe(B%=blr7}R~0lq0g)=DA)PX_Ds8v(cj3Mkp|4kay- zgnbLS6WQq?dk%Elkng}rD0+qWPX(vO&s!$qTLR>i()s1t*;72IVSHB7)Dy8&+zub? zyog0dcydd0c(A{Ja5y5fP7&szy1V*fv$6gT4(fGxbpSEL_jO6$Y8O+22PRIQIQi5u zm~YRqllU_BL@G<689A0{;nnjlgCe8fkKd5oGfa5p;=cRrqUCzfD|jlP4y#c1T#tm6 zEW+~P!C1(NbrIwPqN3(Z4*s_l( z2A&2nK{kp`EC=QB5*!^Z+VWaJjd-3_C_u+kN>&#b!??=@j}uZGVNX8m>~nG1 zd%rj{5gb8$9$+R)>xKL{rWNWB4|A>RNT?67cU)5Xh$nr$Z98}E+R@g*D9l1!+u@T( zk3My5fPN4vc=!oEQZND?9;M)#d86PFCmTkgTJ_&vxp;c-?g!xlr}sjDh;$?ZRmWnH zk@3U8?|9_>28b&Yoe71yQz#cU zaycLX!7MV^jaMlM6x0nBkvy4Twh?csQ}OhY#|#EIcokGI%a-dbJP-xQcpE!4AuGsa zM}kZ_u%h2vp(B3N5xOS!h z;Rkz;bUkg=-#^^f*>-RHfy2ti^;GKEl#(?m6DWWS>uc2Ou3aE7D?WK)WiMgO_a5E- z+(%V*SFll~A{7rX3wU;ymju75g7h;w=mg59>5H9<0eiMI6}Uh-?1(WeExnXxmnwx{ zw56-VVSKQdpfU+T9cXz?(y1P(pvLE#IhD=VS=@z^jVCirQDg0?<`o47K|3|s+9A5e zqVU4*NH^fMM<6%}sX^8JDoghUJ2 zOI7vX|MinA(|ZA=5AA)}F4x%1>l6z`i@gF>GwW3S4a-myoJUmBfFebvSWJ)AP1Y*zJi%7$UUq8^ z9%nPZtSFCi=#nY@{yxT(iEuB=Z;&4XNn6*`X0`EAee>6EtX$Z)cmL@ND~BF=j=VF= zb`v^f!?5vDsw}7xtkgn9}De{YaSSdJRXS6KB_? zD7?DJqY7g(wiq7a59H_zmfi-(Pu_m{FW$DnvV13(Self_vtdZm3Op`vK`r1N*?kICEO^ZZAzhNLY|N^7700>ZR>d4iY7w#hGGJYr zfU&@Ps^#)(dMTymor0!l(B36hMVFMKS1G!#=Sn3NXb1GuZCR8hU1P_CS*5FM6ial7 z!|^P)-x_yaoSmJUjSU0GgvaB-siiaAWgd>i!X1M{OzHP@boV0?5B7Gq0ljohzD|@- zWaDh*jf;p3dpUnLO>~k@YfhtvpzBlxB{SP5+}*2a1cqZUCT3B3FgTm-ZqT$}$+Cvh94K2JR~t-!%r1&1H6B_5o984SzGK|sNIi?fTe z3z744Ym0Mp%*I67i64n_yeJCpF*X(%f;8vGd;5pDk*BMtdoaRvF@0SF^Q!9?1Hx`N zetG(PrytzAd+&n?5Qkow-u(y9CNxWmG670%KHyh;gZM_p&FApGgBVe9OA;cAgb=iO zlWDv3(mYgibaE69itfJTN}eEJ!c#Q`a7CqFLU!PYlCd!~9ag-=yjQ+JKL}@8m1KRh z2NQfc@KA7<7=~te7a4!U?z;n~-hzd$OULB;MUM&C^I+-LFZ{>B)Sj)B6 z*r`hr?3CFJZOUea)RH_BFjqP(`6f6VbTFM!dEq(;Ne*~K%L*OAjhUZHO}13Au6ckd{ctSOdqDit6kJ9kkx?TYgp-`eX!XGj?ok}JZVlChe7&oH}q|EdZ z|7_IDgk@UZ)bhD>f?hDKu!AT^{Zg{FS1yzaLG?R>AHdj{$I=AMj83J&lsSe|tq0x% zB4ibX@`uRFrZUe_v7!P~cU@f-Ca7exoJ>wjizY<~Wjx4ckFSQMNpm{RdM zCMVg^GxZlV;ZOdC2`4gz`lbtkd7G4wk<%-q2)DR)#!XGlTvJh%^&%e+2h>q7?q_HJS&+Q ze4Yt6hoBqdplo=2j%)uH7uT+`gOul%MIb|-2+QqmSI@^IdQZUs|YnosFaBPGw~ z3${jX)}`};jF-uUYQ?Z>4x)#~u$i{Kl2>4akc>MAL^!|>%;rE@3(&;*L;_kmzr-R( znu!&@8Qb@Dt;7-skti#lc(UpGFytxLR-|k!Sq{gcH&j(M4Ma(q;0L7N&l7Gyhfm2_J;NM#y&?stg_w*JMh3$pv567HI3ff@|r_ z#j$j+sa(Bb`St0G7vKYT?_Zf-xi}30R`O|XbTZ53#-^V~$gOTxiFlatfM;}V(=`%H zi3~fz8Lp-ELg-4pu@$rHWyA9;ZXvH}$t56S1yO!#Dy6d*#*kz!%(z7Dx7jyMo`T!}*IeozxM{v+4$F6yv%1~&C2R*`imw6oK`YbfCuRj*)>+2Y> ztH5rS%xh?*`I42>wYOIoI`)bQ1JLY#_)XkNRmo)1X$CtcJB51|f|e}ag z>eaZbo9N5RA~=E!U3}$`nD8Tk3BO$|I|4d*MOx9mVdTJSgS}6Zy|iFh1^@-TkP=+I zhI^qFT(@AdqE1%t!^739&~+`VrIrL@Oeqw8H7Bk~|jrQqO_ zgo$*7l@i|7L0Gi1} z8mLh>p>>+rGt>)kU9#Np;Q_KtOp!0br)SN;w{mn0k;{mKe8o1m~y|NgwAb zaG`UNC_vz9T(()RF$k~oo5NJj*!avWY2LDo)J3^bC(_?Nz=lWQf6Gv_tdS9#R7Dq@ zw@H)pD!c8*>HVnTsCfxD%OJ2V4oW zPRBggNNn*+Fl@Ls6FIXWM0jp780QQQV~=vDKs3Uo8YH1vggurLaG@nzSMvqa``~+r zF2V^ucnDPP!hXQq65WbZt4PkMNZSRzB?(tAPjGo9hg)Kp9#Gj$S>T2; z5>W(NTulI1d}XRRhqO^^*ag>d3x?NhnS>_V(w-srvfvb1by9SoLX~fb-%I7$cqAnT z_Idij1Gp9ep zL``#Ab8&I~^31}uWyp4XVRlCHUs4WTjz{{s`Xvl2_;E|NSSr?yWSe_K~2p@?yC92>jCNt9%k7XjNB!LVeprj}_Lq(RAP?<52 z{x^X7JfM1jozuGGb2DU71YD4PQ!T4AY!w|pJ~lGKoe9f}JRoyqJUH-Nj*y!Lj9HW; zB*KGPViSv3ug-u8_lLilg0_%|>Xv-gz+-sQi-Btf2ieC_qv`2= z&;864V4%X`0ixs;)v^)05#tOsF)1LQT!w@Opd8?%`5pXA&82b)Zu)g9&9{)cQ3Iq?Kg zw;^SPLIhiN9<~$jF2}_I6GnTSAt_)*-dHR+8yB~by!piQ4HVoYaQcdgZ0$^xh z${bvTSF9^rTuB(A3@7mZPu-$WBoaE&omHyR8-5>hYio5B!F4HIN@Sb?D?W$s|-Up;=^)&`n|~$*HPYXk}t){>VZ3L{ot34jhQ+ zGpMA~vN{nABu&h6X96oq6U)IC)scw>*(EqbPCOn|Ib$Ou^ni=p6Eh=yZ&$CyhlV-_ z)I`Ey{_2KoZ=n+j97(e-X8h>w(--#bdu4k6!>lgUJS7Df>Is?n zo0yT~=pnw@t5-oq#v>zfo`fDu{Rc-L&cuTw9~b8)qQfWVSb}Hc?^q<UsBx_j z1a@OfcBXB@Wq4Ju^7h5&p1b(QbL9^hJdL#Kfk1In7aqL16 zPavW6Qi}eBGUO;kBAL$c3bLwEK-BUagpz|z5sH(UoKMWBQX5LHB_55=%t;&3BE#_P z+Um8-XD6bAVV<}?F)Xz=*$Fo7T`skzg-+!NMw&5$uB8|Ytha>^0dPP%}I13K|^x)UPJcAtOs2C1|GdM|J zHxZg;P?gPBIW31k1W#Y~Aas@a**b&(Jx1W66jMns`KAttO{o|_nl zr;Cn9#}HYf6EibGeh~NuWMpDwY+?>!dzNSRadr520Ea9!nNUsHOu(os5z-8F(2|lz zb&J4Oeb*}2i;1)))ki!Bk*2oUDA6hq0yQFP%d!ishUarjleg?RsaU24voQmL&)m9O zDHR<{Qw_XFnb+<#8c=7vVx?9E$xBgn6}yJ-LQ>^=LvlLoWm2Crc-qe1oU*!NGCaHqU+s zPChYyW_Ihy!?opDbYwwhz~(MrV_)IIKa{gN0{whaD>wuunqf5|mq^fXq}m}LTvVV6 z^TF*@#0?jVB^&Xv)_?{wq?w3q97-VCF!FhXB(ScO#hE~SWN4l#W`+wkgHB0S*zs+r zw&_^~FbsdQQMOon43b|6sd=c9T86Djs>iD^lg}X&CTIPkp#cIK(uba0N@NMriL9(* z!FKSG)HJ|TisdC%rGl6ynPPrBg;&m{TH>+u*VY!}V`F0?CaxnnF%lhznyrc`BV#jH zx283hgM-~y<%CV1AOc zjV@9^H!}(16vcLoVq+89DH(=x6<_)#LaCz4jy5fw0Lj&|9H(La-!igh(aeF4voxFl z$zl_+q;%5SRt&eCme>S$rALP$uvOVWI~E*&3#S;Aix-=9xl7ls#pwf^xmJLiSbXgt zsupwW26OZodC7bbSULP>>x_h;RMlV-kQ&HBmI8-XmdQZQSxJHq-q4a>yn?Pfrc@~N z!U${&R0e1#HP1ki;6gE$c~nh$0E09Mw>~*sa1uaIS&M?;tILe4#fCTthoO9OUiBL_ z){40s$|CO|@lwW^EyM z{KN!Hm%__p3&F%X&)Z_?z160F6|8TSt5jtIXJ#>ecJ=#q7O~T_(o4yV8g!It#Y$kW zje5arChr=*QF*g1HwSWIR5?^cFbW%IJEQBc&{(%}My0~JQcx>#qD7K8(}0#QNsEAt zELh;tEcUXmP&&JC%Nm=WX)|d+S4WTrJ|`(gvk2I&Es56}olNEeWMxX)OU#5bm;{Y@ zhqOcYVR^-72xQkjpatWIBbqp$)Y%auZdme3Eyw4$w`DQTV;AA@Vl(Hja$=o11C~l| zjl0gy%+5S>RmSKl(b* z7H6vJEF-xkUBZquK{uEg_ABhvQ%UnoS+9|&)k^V02@2^V0d}4V0V^Uh)#3e07S|Se zPB1yMA@~>Lt=2p7i9C)@_nJfimsZA4+-eq>%l8eB~t`dFO>lN;j^B3lF3a**PcWm(HZ zO}r{OFFs*z?U&UG#8Io}r7o+a({S3^Ty+z=qv%1yUnT`_VcDu>et1CB{= zs~JHbNs9w;$=+s-b2ZY@;aEOvlYTXjQ^^Ig zWrrWz8+Fa&x&yY(TZGp^v@o5mA;eqE$CD0CHu(d@r^E|RDcr^57zIfw`px7bf}EG3 zUfS%5vZ@URBKu=UTi|w3zi8#z0Kp#W9Q#UIVhAFaK;ELm(cy6pHLwQU1S^~uj>VtZ z8a6yX!M@d5j^O;P>e)3z@#~vDa{zD{=>VvyG?l8!Zb@L|det#(E(ep0eL}1y31KGk zM6<4xDjeAIssHZ&Xb!Cu( zP(}kpZ(;smp_w$8yEXDJ1J{cS6XP=O+FWxUKXZ-E)XUGW|AWnvi-AaCDd`}}vyQu@ zcrx$YtSS1nf)uk{rv$HGbyNV6BxfXfPLe6-2;dcTAr`FS-C)z5&+!@RA}9(JPtCw& zU3zkjZ=z;^1&P&5{2ewggHZA(%a+{RZQ%vf=Xl+AIZlcKxStOC>~I zW}^V|cwDBC9KBjE%bhAYZ0cjvi*yF?13Ciiqy)zWL3EG;cN-1I5+`O$#U?N)c9fIr zdzE?+O$r1Mx>0azK3EyFLs}@ATqq$D6&&fds)|*5P2J+4rtUS9`EIpV#%+TmtTHJu zugJC;89DZX5EPidWHR_U%ye>|9xi8Cu8g{?CZ(O%_+H$Y9&B58oN7yaK~`|aw{|A* zSaXnIauS}gv??cU%PIC(7S3F~wETx>ifmC)mQ-6Bf^e5>LK5ba701x6X03vw(8RCY zZy}==Ud=TF9>xMIlbm8m_06iZ-@DB!3OFo(Lg>hUk;rflgmez^WUsoXr&;V20cz63 zz+;5064j$3**jmPF3qhT{fYE#@P3pW8`w0TPUH}rWX(|n7?dBAJF835c*+mU&5e$u zNJ%S|Qh9r`fEA8wWw?fm=@P+F9BlDh5QNv(x0X(D?mz%vRWS%WRep1&B3RX7$)>;z?SjR+TES3bU=)LPdS9ObjAn zpf~KS3HCVEr0tT(&~7FS1c+G`c-!6lYHy}=f&kIrqX{}hy2MVukC7h(qSI^_~@Ki6! zjLOc0)ywCDu7rtMIZy?)<4YSX`azc~gkGec0A-0K6~FN;X~`B71gQ}xSV_-FsPau zbPgCnNr?R!o|VmJ^Yma|;4SDxvP_fm9(h%_AP$8K$Jjt;K!e$wU6m05=(sIi{Y~KQ zv9X*v7�uXo5{;gX|U4PJ!k_^(2p`n~1{P+7awbm}3!XVRmj2UYN4U8k5!Bz3P|Gq*yNX_c#i_o=h-nVS#csZ6u#BjgqXN6qnZ zrbD%+6F01&F|AbbU4tz(B!xU4h>fFohNfoNR7QR%7o$oMU-+YZ!ChpC;FiHq<1^r@ z8evMwqBWPKo48i9ir_YxsT2p{C4QJ3r)AE-+iWgGz|G7zwc8{?NF1MwNyh4Ffz7{9Pn76g^R;5%Ve&h6|Qla&3MPHn`<;;xt%-wOw{hi5;`+OKF*vtsQLt z!NYk~viOr=E@GZ(L1Sq%1no|=fAd3Jtkesl^JS0#q46hIv6z5!L|N=})ZF@aZ% zLWwZNls;DDp4%9xKh)Q76QO*E2mq2Fj2;h@Cw(MJN4!aNmXW%gB2=VU{)0m zL#$fy9N#L?E0xqlA|t_Ha~v!1C*;JLt*sq0jv3z?`Imv~MV2%dn7HS0<#3DVpAny$ z;5m4lF2lXYeXKz>f(G`a4kJPU_29*%rH=GyOMt$v1``T!g3{EN4~n3H&I0dc;LfOg zV8J=PcX7KAMnoBTSYLiink>#Z!3+*@Trh~}6k)^Z5+}4hDbfLSZl!!V-oP9WOZFU3 z7Uawk?M9=ar$Ct;OXadwH3>8cbIfTFAkT!GXzs@fM*bHjXtl&pEp7Y8hM%Oyn2G$>lp z0}j!%w!j#UV_H1m$Fk_O9S~}6RFh(_DU+y_QeF?BG|!P^p3#-Wahfk|-CeS2=(=$s3x9BnPC1uyzty!N&Js4Yoz86byr)&h_L;xU;%C;Q9P>|6?v)np5 z1p&^;V93JO$Ulb-$A+VErV_?u3yZTXldL{}o)->EhR9F=@Pw}wD+Y?yQi-6EKpILF zxGb|!Z1#Hl^#IOrJ(aU{EuuGC^GhWN!#SfGw4do|jjgw=^)PvAb7u@|Ct!^^gxrjj zfS6OK1OqkaKpv5{6p>g9x@FFS)y?Kx1`xj@KS<0ci~xF8OgSQrcbfaSnsO9B$o(;L zhNp{A1dwFq6nwbU(!XfbX;}pm0r8#L8u?#a=Rxk#88){?$HkT>7FVHvG!RhQ`ler& zRrJ2N;2Vgn-0(AcWOP2MsW~Mp8TKt+Ar>qgtLSi1yLwA#`j!A`Z}g28i65c}_W($N z3ZdL%ql#7ZjI@eyozt_@C?EW)l(2MeGO$R2pqw;P%Lo*l5rlHZYnFoX+Tc@pf-4QE zQ8F*3X*wHrZpr36&)YKQnj5rL*rg`QCnR#TL^{jew(}{7F_B7we?fq!W)`=0Cahjr zmK`!YmS6z{nQ?^Oz0a=;PlW%2#s}Mvc$R`Rp*lIX^+~mh;6#@>yh?C;gB#jt%CfQP z1*K26W?0rO4K$j4s)X2bTW+vTi|n&hknOoLEX1IzNkY+Rg0i5wif^cL5s7$b7^vE; zyICHa2N8mW#xO(0Y2sR~Y}!@NAP$n!v?l?t!Yl@D_g2{RBs7VZAR2o`CYHD!#o#su zuVkp1EGH~lR^!iXEuC1Ln>`hqU6+Y&KSi6QBQv0j}>AEN`p9pjrxQMnvRk zX&j(^o4RyN!nf%~X?m|WgB!scdpxQ#P1!W5fEVTRTgEJHZUtr+5eK-qpafzi(lGLp zgWGa#&7_2>Wn}}5Ch#&Z7HhI3t_L+oRnN1}$>OjzbyaRR8Ar9+sMm67x7G;mtu%?5 zTS)p=Cb3p9f^kKJJ55GzKpQ!=O(*45Y-V}%e9K~NT~erXvOp^~cZC@jS&|SNiNKP% zLiHQ;z}(qYYYvx57YwWcDr2iDN%Br9Ql8L)su?qTTPUzDcEXlsNV1Us4RHl2fsZv& zRRYSyLaizqX>KXOt%v2xM4Tp?XXcp-Pp6e;gQ>17$`+&vTqXUhj(gOUJ_)1D$TfgO zj0ST-ju&)k{)@p;3CUHdC}nhAdIlI79j}y?(iS&%Ws5~4Z~T7-b+<{cklYji0000< KMNUMnLSTYc9gQgf diff --git a/doc/manual/airspin.png b/doc/manual/airspin.png deleted file mode 100644 index 943ee546a6e9b2e17247cbea4b01e83af05b6346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3384 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 diff --git a/doc/manual/attack.png b/doc/manual/attack.png deleted file mode 100644 index 3f3e48fddff34bc22766e48a84cea30a891d5a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3164 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 diff --git a/doc/manual/blue_monitor.png b/doc/manual/blue_monitor.png deleted file mode 100644 index f6d01f802f702d6a4621b240814f717dbb86c4d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmXw&4{Q^46vw{|W?_Szf@Z*w79rH6zzqfzWqNkqEYQKtZcC+;-2Mm?I?`!vDipZF zmUYV(j_}7W8KcNZIw4!Z#WXndP$nf?wj&~p$VMdt>qISv#0eUn2gc<0`@OuEm;65Y zlgVTvk%-6R zLqkJ~qQqh`S(c;GXe1H|hr^*zC>RV%k`xF8L{ap5y)Kuls;Wv51iRhN^Ss4k;W*A{ zG_owK*Xy-fZAL~0!!R0+M*Uq5OVQ&EkrsdWz(=9R_dnjdb^ng?`VSm?w%I%t>$W>` zHy5qmWX&!%8wzq3n6oowpS9ahIl4dpGSvJ?4w8Y{aK+Eu9fCYupC4P85%mEK?{%qDX>397kF$ z0ZAYZD5@(U0)zkw5CIn;06f3}ET9D#fTGa{?d=Iky6N-vJDqZAX*bV@Id1jka$LxO7>_TFx58}xd6ii^W0Q|*!^?__2!zxD^o_vq9p9T_42b=sy-$z|eX zGPcE8N!EKqT0w*?Llhwh;J8GBE?uI|PHJu@x0`G>TDp{G&QxjClK=*R&w-G*ZfJ!PTix<3zxe*%pzwv)j9jwEQgPsQ{kOz>Pl&CcyB@lQ@tfHwQ*kApS4ZW zNP$0i!*u?!X4lBcl@D81^)6s^9i=A@^zAq`W7$T(>1<(BdRE6@sWt8OHPaf(zkm2^ z{*|zU0$$J zp4ePm*_7p{G+rSzXDXJ0Q^=0@JbUvY~`_@wV41DA#Y8=im|b=a5x+ag=AR{ z27{6$`Tc%T6n#FQ*X#9oJc1xJHa7A+?{qpjjDKr6ZTboynD;R?WJ{Z7wxJrRlm71rPvu01m(kzydG;Gyn;p0U!X-=NoNp4e|UyO-;aJ5sQnv7{)`>2a};r z3%e4aIu5oz2W69CLlhJO*paFH!?@+Am8Dm8MSYp3GnBC3C^z<=h1&vlH{; zW-pr_n?eu?lT<|HAh!E|Zs@q=INV{`d1&1xd)DfrlvFw%@Cl{(gpYedMvpU%D*=>2 z7C{t1;DBR+rGXwE9=&kkR&#T|-QHVJ;L+)7lapUps~3HLAH}

NXy}iH_@7Az|Sq zq(!8fWs(=Qc0t2(Ad0|oz_LKop%7lYh#ehx-~ifeXfol#g*bDjLZhq@KtI420LK87 z-);d=67!!h3PAh6GnHar;v}EdC$NH(aaw7snKaWHT1#k+P1GGFQ;Sw*=?a!G@71rJ zay}(mZ@<^Pq%iT+RrQs0SKGCdpU^qmqW0YMk4ii4Rdro2q6VbrTQ+yb9C7@4-4fx> zj_?ldc9qUJSJn(y@{ZhLUfw;DeF84T{S}CRCNO_aUrtrV)OX5fy)|%rX>`J;Uwzn~ z;W(7%iF7Rs3eD=zTqSBaQ~K?@OXqEi-#MXA$MqA#xr0<{`yP4m<>?cKhNy@KGe*-V z+<&dsy*)Wz?YK`o_-M|-Bezt2TUHVU6+x<}@9XV7zvK-S*4r8uI~z_8H9bDs_IZUr zb?s$yQDwukW9z!2|DMB~ii@23bY0Ads^wvV-qlxsvLVA$dLq%iKT7&eKAzii^v8KG z8p)c5k(f8is^*t`W3oS5KkRev3=U+iH3{U_7 diff --git a/doc/manual/bshield.png b/doc/manual/bshield.png deleted file mode 100644 index 01f16a3af592165cc6594ede9fa186116980b157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 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 diff --git a/doc/manual/controls.png b/doc/manual/controls.png deleted file mode 100644 index 8422625a1088a70806882a7a7722b3f395abba8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17029 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 diff --git a/doc/manual/crusher.png b/doc/manual/crusher.png deleted file mode 100644 index 42859e61ddf04b2152b9cd4eaab2c85649c15005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42536 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 Ux9lgYvH$=807*qoM6N<$f`O`H2LJ#7 diff --git a/doc/manual/ctf.png b/doc/manual/ctf.png deleted file mode 100644 index 24712f6534d713b2effa5f4ad60a40f013abf2d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6805 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 DwE<#l diff --git a/doc/manual/dsz.png b/doc/manual/dsz.png deleted file mode 100644 index cc062bf8ee36f959939da7b619899a44c03700fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32144 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 XOhh3c$nX~x00000NkvXXu0mjfFFCkA diff --git a/doc/manual/eggbox.png b/doc/manual/eggbox.png deleted file mode 100644 index a45ead1bfdd6b54aeb8a7fbeeda8de106e5bd881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 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 diff --git a/doc/manual/emblem.png b/doc/manual/emblem.png deleted file mode 100644 index 0aa63b651bf0fa88f342f4bc74350d2f1f4f69b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1367 zcmW-h0ZbET6vv+mJEUSK4J)IviYM#F8IIX)#ntU_2cB5voMpMN>Z-fB%5JV|ab+p4 zLfIMzvx}Xe>9!itHPR`@4jL_{ATgD66BG;?opugqbu4tiGG?ZJJ5ApAy?n{{e(xp! zf8M_J6--8YPC5W&l&>z`Am$?REJ~Xr-h8^G5MU0hUt3uwK9zEbT#D&*I)soyp^(XB z5{U%EFjAw$38`F(N#($52}X@mgaQSFGk*VcTibYRYr^GaB=kt2Kt*xzYx4WsS$>DI=?RKlxYBrk%LEw4bU@&kT$FeNLFf>hTwOWlvLz1LQ zrNVLCip=Ju$rLvl2RK8R)psyDFGagGl!Me*2$IKDdWDjf%hggDE|JKwu+J6rIy+kJ zK9|+&G<)oV+r~Fp3=V;_@vPOTGjp^_PZ@O@j#ld_((B+|R=q>eS&fuQuQo6QtHo)x z!e-~q7S1HF2A7p->2UJjiB4 zMkAsqq*Nk+B)}NJ2tX7d3=jbD0eAqK0PFx3026=#K$J|>E0I8v2=e=p%Y`f!q}L;j zMs$&g5ktg?3=tq!I{*X#{iD9)F*FiF5f2L3P@4g{w8*ZQw#diL(zr=FVw6NVtdE5t z10D3^InfA00fbx#2?#L=;Ru0`0VPqX4rr%S%^Q7Dsn~WjNq3npZk~Gj%ktr=Y$dD^+nQ z+E?<(E4W1xunP-nhzIZ#qXzVdaL?( zOM2PEy+`NQ4vsZ$T8l5to@>9Anwqoz67lLfbz>FQJ_r>z8W%f{b{BU1y@E-518bk> z$myAWN51XW*{O5gS6>+Izf+R6XWwwG_%CzSwH^1e2O0`$%k}l7wD(~9@PU?adfmR^ z&)rnxnGfFGWglLWktX~8;?}DE;z+XYYvx4r%)_S|E*@>U+j&@W>ZS7SlW8|^PgK_7 ziRAgIoh_eD{&gu+y`W)rv$6Tb=Vz~yHMqJK-{$1(PiWT{~4Ma44Ve!f1{rj`d z*4CUU^xD?kFUUPqmzRw^V8F_IBquxBU>BEZl3Jc`koe^&hv&dDV>Zckk8X zOL7~!&YA7i-CdU#{2T9LdyDd}E4~>l&fP!1Ul)u&eK({2r-^D<6X`5@Hm=UP*_l87 zaz^mv__@&l1eDll`UnIJEXPw{9PJJ|YBQ<(zR(5+&-h=!314PfJ)Ed@Q zJ(#!dTX|3Y`IJ!l@RP3`E4w$AM0uz8lwBFxvU`u~@YIhRQ^t?{Q*>>TdF`6rQ&Y0x UzfW&37B?i6msOOWdVO=l|BMx0RsaA1 diff --git a/doc/manual/fan.png b/doc/manual/fan.png deleted file mode 100644 index 74e4a17d06fd5b6e9f6eec83706390b2e04b1b7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 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 AT>t<8 diff --git a/doc/manual/invc.png b/doc/manual/invc.png deleted file mode 100644 index f0e7a63409c3c43752bbeb820e6eb00b3ce7a267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmW-hacCQL6vtmIcx%&=xhOY1TvODwT@GVm_bG<#L%! zCY?^FQmJGz8IQ+fu~;M$35UbFu4|g6s;Z(Wk|c?uCvY_+glM$5uz6oWzJdGvS?pbM}H&;+Of zQ~-(qIRFbF2@nG?073vNfGwG=SEqy3D(3TOnrIj(%gAxIi)@S?HpXVy0DC$PpaaPF z_O7+CS;ne`#VBS~H2oN()(vtk>}rQx&7iZU5LYB9iBJ&k--%7cBBF_?BZ`PLBIJ0; zaFAjlLEGl^3M|FZZkBS|EACs#55NM@03?9(9wj4SCxB6V6zfpWfE5Nkr|W;L7gqor z?$P0)iJ6tT#v9AWp6)09-1TG6kq^E-=Q=rf`ta5BjU(IZ>npo=Scficmz`Z1&A8eChb)S@q)^+__s* zr$#Q94imcLw-9~$360pCJoWq0=cc@`egvDnXBYY}Jb3q?k@x!M7hihWb+hlA*SFuO z?{a%r*M_ zVC|wgKR!Eqa&mfGcKW+7F1_Zxrm)0Q*Kh5fTm5XWp4R?rKVNv*ID3bjUp*S?yuIVh y$m1tE@oq8m^9+4)?$BTBi=O(gcIw2t;5)yjv9qC1-DHaeA6#)@N5EW61f`A231Pcl%3WyC6DGJyDrPzBH zd+)s=>i;t{xy{~Q$(214{Qc*dC(q?>_ip#Q@4WqeNBnybj(`67=gTj@eBglxCQh7q z#u;aH@7}#dixx*5al}kDUVQPzk3atSk3ar6ke4J5E(G`Q-@j$cmgA2<-sf=i&d#1v zTzqZax(_sOzN2N!yBjy2Q?usq{QNYhQwVX$A%~oI-g$4l@y6eO|NZ|smJSH;^2;wT zEG%r2mbSH7v!Agi?glO2X;gl&;UVH7e|8*Qe5FjdLX7bTx_HMfArplEnf#B=*A!wdIb?MSKC#OM!2A5rS8It`!h$Cb;V#J7!Sy{VVwMqtp zW+)$N(PBVuuFvDSZ_~zY9immMR$qPf)xnD6x8Hty`st@vPfOd-wCRCIP|t5_ zRD0Vej&VvT<5n}v6UPT1e6UWfTIe)ib?Q`JApUh|#}8ATAEbzPec~jS$j{BitUPFN zL@3{K%PlD$&(iw!%L_r~Ki#{3RV@z?jd`L=v~Jxxjs-5t1;p{=$2Uq#+mmFWT;}|v zZEG`#%x8QeSBMi&Jh7tV_}zEk_3G8DWk$w}ZQGVFh!EqK1-TX+nVY>L-|gDCabv~B z@uinu!of8(FYk-;V~EE5rCF0;5cRyqBXVw!NoZ_gXj;dHV{_w*OW5$drPEX%m-VD(I@ux=h!-1&h7O(KRVp!ct#}NZo zI;$&Jt_W+H`FFRj-`1!W8ALrND%rhn-@fw45qETlcI`$N6jX$@%-q+p!)Ljf(SXQ& z-6wK{Sh#RuIpc_JP_3W`3 zzSwdT$1R(GUM1^;6gv?#lO%}+zyA7bvT*$Dv(N6n`)*=;Jgx$VcsJDnIsDSB@d0Fl zoquiK^z*!|WWZ<4*L!yjjQ@iXu1 zkgPSnzf0$zn>3UT8~+ks;Sq;BMK`CI=}roiv)rO?-MZlfclg#%)U<1u3fvo{`$){9B;erwk8gFKZ#t{XH~Mk zEXV;|2o|LNQ8u_njW@q8D)>A>C>f47g9+d^(N(^@@y6@T4WE7 z*IjqrbhkC8f!>pql?81g1nlDa7rI4dAue-ABGubG;xM3|u%<876{jPEylenet;r{#YC%Ecz zI+n$I8!!1pJBI}EeZ_QuK8xBO`BH9>Ab-cr-p$N8WO}Oykd}36y;SRb_US} z!}rrqKN;6aa`?0)m^W9t<>E7^NXKu_)URLPAh#)QF=4_45+!i?n9<~+kxG1_O?QI5 zG{PlnR;>zxW*XeFW5)|Gyg-IQNIkdMVZR~)i$t!z{PN2-;0Q)%xJq$czI?fU|Ia`F zeC3r_^c`;AyqPGlM~F?{M3qNmR~@g1RZQ88f#BnhKmPjbuSamhy!YOFZnt}`J1J6| z>Kz+!yzDCkC{4ks_>6i zF|sN^>?3Qlq+4I}K^{!>2pXeVvu0P?v9yr~ubHmDP>B2PyUzw3(Qk?rG~gI6tLWsD zPv$n#)6+GS(X%R6;;F8Z2jFx%N$z-r(LCC=ZM%5!V(dtb$f3>{oK)t)a*q2t=ggU73yv7~1$~?$K*tv5j6=>!~I@A?5p9VMWp@$yY zp+g7GHRE{CJ@>?Sc_`|r;@Zkab{!_<&BuphZxSm+fGcaHt0dLJp7=G1>D+2aQNz!` z<|*0NaGZJOnf%4af!A_P5LI5}7XAA5!<7P#2xzC%nYf&RIl{q>o4-y-l6)g}7WukY zDmoK{c*}I|47WJxq?2sJ@zYN~#q$Uq1*;~|k=G;TGa*-0ZGo;>ft_s;jtXU^2gnxR51BDHu^AGc)s)Q%=dr z$?>?H*%_&Bg%N&6qF0(?S^lF&jlu*RJ$kemM{4KdxE}g2q&OUw=)!il7%Ie(&X{pr zAS6BBh`4tI6p1u%)(q0IIo}NZp4)!@`RDb&KmPb5k{Tjqak-q%p@+3vd-=!@H_rU_ zq08P`JDu0pop;=Xv1RtRyMD2+kEm-2FR@p#&dBgQWxf*U|q;E~MA%4|`u z+K}EYA747*yN56P_sK_OesP`#u_gJaF%BpiOSDPtg7Z)6wQk-h zWAUC8;@ zuB$d(d1}u#bv2YYZo}niqix&Q20XcvMO^89ea%=@ky!(2Rh5R(_T z%{qy{Pb@p@?X}Z?*)~7Quljt=$X+d~o)o9EpvQwg9IWL8C{D>ic&s zIEZlk>47QHZ z$0ytpxDG;`5(dX+j@acj?k~gXP*6GL?rB}$UvbQjTPN?|c|}FT@%qVwS~sY^Z)b>w z^5^zTqQsGqFMf?>iaE}(g&vK8v5Y4s)#utgyC)#(iAMI-y0QCqT$UuIC)UYj4DQ+D zk;UV}eHtZ>uc$>mS6PHB!{Z1haq5qK`}VDwpT1^lm-lWt+CY=}*dq=?{W9(h>prxx`!L#fI0n+<1{7kR#M z*VH}rCM1r;juNtGa5dwUP4l^jcB`>!PNLyM^cg>Q=aepy(__GBjat;pl;?cw)~#fB)(V3oe%!a-dMmm8QmFlA z1?4NZZoO)m7Y}c?`>H-+(bTej<#C_faU$9%5+4-`F}3gU%hB_r6jlJo!D!l?`1Sg6 zAFUn|{1bCWwv3G9i{28jSj*)6k&^hyC!b{aeDi{EBuA`jGU5usWr%q2FBO6;sg6Qa zBEQG!Xi}rnxyLlzGNVR)8}|Ye^iqDIKDygcQc`Io+9el9(jHp|vS;QkG-(nt_(^WU2!&(k z&YgSo=s|qS>vjU@MZ=oHMuWBbnC7cXj^s<`k80JuS-!&|BV}Z&laxTERITv&Jui4l zF7kTRowPJE63lB0H}<4J{jrga`DT%EJT3@FW0`|vbA_XhcYpu=_e5)nm!YrmW^rB` ztA0q=8k3G~c-3jG@h$CIa0D}?q*eqQb=5e4!aN)>U>CBLb?@H2!&x%B{5m7d$Ln$h zr+v{z^>B5-y$Z)WJ*C--$;A=Z@AOb0E>j>*Q2G!-XY(o8s?d>8E@wuw zO7nUbhbPA7sy>zy1mhIewFZ&VB@7`4PXt1zPMxr$3KYu7kydK1~|z>MwLbqafCqnhPv~G%12*IrJotZ_~x5$@^34JGAxzc0-@G&nK+W4N=%q% zhPa;@^eG8&BwLbgF>BT=GT$(hgP9{5%mzO(5~oJSLAK#;3e{qwkU^UbUfG7mAa;>d zA#+a9jV<@HIfl8azGu UNl0ql6+zI04qlWr2tm!p1^vS#g1A`G4xE8fuO>~JjE#8k3Wpf%l$C6jwhwzvx(;GG z+vVD{X;Xyz!ufK9!m+VKuv1vlaU_+^6NVU16(T1i!&uRXquRA=A8%q?lxzbcB-T1S zF0fA05RfGJ{+2CUmhE(27v@M}123tLE;NE@;|S{?yG8NSGCQzeef8Dgc&l4f&CfR{ zaVHB$Y5`k?=ZvSGda7|GoRLNMl8H=c$UqhuUY1%lYTW3N=`{$`+XKG}9*UQfx@3qE z2{Sl6;zm061edT>brIt?be(ZTk_!rgt4%EfD;xEIuQL1>$;A;G=^uDMH>wp)_8WQ4 zm@dYVxc0g@t=0Cr?t_oWLeiy?tVg1t2ujk5v5~T~vTnTbMnELrH#a+bcHnQFuOd?? z2$|Gv^cEt~X}KprylnQ1mw74;ie9v3-WO#9#VQO7FFFu7o^{q)V*@=DbCq(3v&GWe zlLtFCkW5&B(Ar;Wpbwv9`jnnaxv5RUHGOjbz(x`+;I*wdWZsp1g0u7Q`N1>dfk@2)IY*kafvMJ}e zrR`yUT85_<+#nbJh#wZM@S99eEP16TBH6)>WMv)OvlnW$V=Fc1(O zop|&y>|#O<1S_5714?Vmx#-xPk-HQEWee3%(P^sH!NYjFU$(SS$%u5^k3My_a^=dp zJ|*cmvQ)d7Ry3vsn&2UB_g#10WjRuN1A}qIUp;;L^vJ)0pvB91s^Yxr6C z90elI7>jg6ypUneZEW+(eE*PZv!z3z*#v(-lBaRw##DSq*(~t})n<-GZGecc8@J6Q z^%x#iWy%)cU4_6A_r$RZL@I@Q3E4W!;tGVh%$_})o*%eOwy9*wkOG&bOK z1K8c8Vrh~+D^-2fC#yksdrE~~Bjq9)WYW*k@KF!o=@kpd zn#ILals*B7cw#J{zW@IF1vxpZ6c#UgWePhuP7cHAUh#=Jv~+X|44whbc#3^d8xJ={ zgt{n?9L`D#kHCt5<*WYZ>1xB+Nkr@O>; zN?#Bf5gz2fsxPh6)R&3cWw<1{G!+F$3=DV;&QASoQMIs< zyLRo0?~m0);T#N}HXcTdSSNHrlCLD8yC6P}0>!DB-2zoblnUy97MTbfYbT}+xekQ> zXn5i2$;YNr*Z|nVXnffAupzQ|i&Th4lSyM0r5fh4AIHO-(qW8>Q>=c%Tzm|UJk-&y zfX27Pdn*=>EM)2qQE{hbheY?S)CrAwEh{n*>^a-(W3$oHqJra^2R zZd?ElRohYM;aH8J*;ln7f}zuNv7+Dzh?t*TB@y><$6y)*G#r4nMjRdOl62nnwzhIR zT(tY(q=H40YRsfN$?dkf719+i-P@zUjF?udq8af$H=mUx)*F**kLYXKM>JGUd zE!5C~QwryJlTMbHA7A+g9YN^iK_?n~8B3Nd!9O;3>{zawT9UE$E$#cf((g}53!R4c zy0wdn3?~zD2n?8TrQGydBzo1cW5=W|)v!+t8Fk7QB*ZvIP?- z0BLD|n=BlmEbbq-RW#3yWedSJZ{D2N)Z7UR$_yn5J>-gT7*qhOvVEI`x(=b8b%X@q z9wGBAjO)~wgpZv#HN6dzjw8uOP$H&oOiX~dFsmM)1wBFy90|_?F$X;I$Rh-r7uedV z`fjgi)uIIi$d@BV$X$VlpyZMnU|!njXDlybO2$%)etT31jfhOJuT&IX>9y?b|kic+@!WnX%jui<*$@a^*Cv<=i z%M#6jCv=D!tRa>KFSyh*&Nzdud63a&1PvT@; z!-o&&7}z3>k8ol`yeN+r)rSZtpR(Rbzy@)1E>cc<`b1Yi`>W_DvZcO5v}@g(YnVTO z{%|!wBzS9Z6f(?qC=_Jz_n1M1MUr@=EuSRf2*qKsAovh%zz1YdAB3qRD&`Aiu@Hn~ zA4LcdxS=~UkJlMuhaY~p<@@P}#`{t3>tWgbDO+U*L`aAT8FFC(aT)B6rE!G+pco}x z&gdQsAb7zA7ewBT&WtJYnp8)!K8%i==psn-VBa6yQ)^B*)nZ!XE7hKj@wI=2V-hkX z^^!#fgCd%iL>zf^1VYIQ13}{Vaa=B(lx!|6SuLZ`d$f=V#&NPT8S#4HZG1YqHGYL# zplKx%=A?H7RcT1V$k{0g;RuL?$}sPBMs(Z*dZE1qfdQB%rZ=50EXxq*kWf)Z4DdlJ zy$>{_X}FB*m+B03K#KJEJ9q9}lrv;kOd=GagrODXI*S=cz83_^bB$He52pjs!UjP^ z${GBD+ctknaMi$3XEN#zhU^XzxwS2k)kE^~$l*gLMNE^)2XV!^ZeaIxSBuq$7A=mf zL~Q#ggXK{|Np=n$R{_SxhZLhlUcx5jzj< zBqlu|%E4m?O8h;+I9?Ex@iakYgl46rOblg-laxVedV{)k(Wv5Ux@icUWZ{VX!WWVx zH|4wUz6(o2wwS#^tgMS1RvbsG+#r-ePhhX$Csfjp&*LGnGs2z~Q4V66m}Z%GD+u8#)|%%NJxFx)+W`vQG>0^U?V1y&g0Z z`}J^~PQ>j0P38bcR5tTF;HY>1dCF6o7?$hv83&M4oROLWZ{?nCzaH#VEM0aLu@lF7 z_3E*X;&2g1Kd>DwIASu5^9z$lT_q(q+P$U+_9a3&?l3^)!OFl_5R>8=6^`)lXP$Y+ zyzcBB7`7H1Spf!)1ZnT|3mM}8-0X4mdyRgOr)li)WE+l92i7}{QL^D2u>@ zkq3 zph@j)$em{*57r~AGTeqM797b1B{*SxN>~d1NJfTn8J1nvzydV`T}{7+Heq&bSz6{* zaU(nxz7Tg&u!GqK9C4a)>2Tlep$3THZipUD6c@58^p?OZpWqY0(by^&VNGJP*}&&? zGO*0g6=dP#233Luj|b+C8z|;2SKUSXel;AY1)~;FuJ8B(#Q9CH+O0^o2u{ z!vOSKHU3t^0w4Zh^iX}d=+fLR&ZOX<14qMU`@S#4K0YLC5RZl}m@k0TbnWj!2jCRe zCi#MZXbBdww#a`p6EB`hIJNn!C|yYkj{mA2a6n0m-0iUp^kHrfa1Hp3fr5q^Yowc+ z2O&uV$GyIi4S+0z+r`;o@JlGxqt`MBqA(D8vK*!#PfR=1#hE9?Bh~u?z(i2fVnUOv z#9$|i9ZtSma3n7uuSA54q1GGvg(sHz(k}3*5 zVj=TGwxlan6dXwfK_elPQ%ZlIY|UZdNQScP8r4G7YE}!!gxSg_sTb=lzc63amIqMD zdWgRx3TZ$nWT>~O2V|v=Py-oK!#{|<*o9z)z!5taS)7xXBWu@stEk{<5|NR9%3@Dq z3C|hyWsr^d9F-i?rcFbg?tf%|Pk~1kvrbeWjaP+=j*`+#if3dy<3f>{n~9V|3MHPe zQgLy__k%7eE21e*d@ zYgJ)qv1&4Zlgilbql%O{C`G-g3gM1+%Fc|!*ekl4>NIk`e24C2|3Mt#Q<7wKswmw6 z4^x2BMYE=Aid!TJQ|?$YLmfaaz&h2?v6JfPHcNHCxK8Cpu2MTk%uu<0NBQSeHJ7T4 zmMc}+>*0c~ga1(+k5!0VqWaV5=6K8vLTpxZjl$@9h2tD`v3w14my2^R4@;298sR}jAE1FS-}B}L#RY4 zsiAbkkx|c~x*I|)rx>%pz-4D+$;E-j5yKYGGyZ2xS|V0tM&Lp>+Rw}0Ftye8Gy{|_ z9TI}$)u$c(8-%2*R#m}=4O54;R|->GwPm$ebz@0Y=1s$cN?sf7>xd;0e!y_X`%Ob& z%9$x1A&^2pDay}iU{XSn4tb{~!=+}H0@pmHVlC=9WM48)!#T!T63rH>l}A?vU!nYr zJjxUNgGDgUKZwxs4Wvj!-|DeEal|zM*TZEGd^mCSjvILMX{p8g6g6YRK$`?_i;Bdu zWh4Oz_Ls-m^_H63y|Q;G8Kk|OqP0U#EIj;RIK=pr!!Wf^RHir48@li0nD(#0i$UV( zVl^xwK)gZ5Zrzl7o4fN?L>#Fa#7TuK1q4A2M+=n%+y;R++ea$!T_%a9w&i0P4 z>^6=#BFsG>WxJ>`@^mf(|2F<`ejNk}tfLrM9N>?sK@tZKm{bO#8Z?(Dj-+$IfVd9& z?f?)EA6hd)Zd5j~rg#$`54H0AVf+OJbSw#hpq{_}ic?E&`w)3|ONj9T6EWgv%<_nB z+Xy+xRNZLeS(FiTB%V6h3vk1`&AW{pI2>`_p}W9bAV8sd^5d_ED#@rLeT$$a@8iuU zas+h{y(9_3A=_+-pMMSuqMm1*A*O~euZC35a>$*$w|Pr5&~Q-Jt0&Jj<ApnJ`O)>_Bf2AuyfvJjTSLc8v5l0LX zmTKJ;AI$4<|4r^xO+GP@Sx5THxCnAyJszo4|M+7(ATsC9m2LkG5OvE}V;k=gejHK1 z(Kj!-r1Zo)?-a%oMgXE1pgbVKX;&T$B1$C-na4j%4OCr7nB@giiV)gO2uCug`}OU6 zgfm1xA~xf6s4a_hVv*bJKu~=2QJe@G%QM#@+XAy}jo!+d7z_Nb*^GkRGYp|$eknci z{PX3eFdlO!2Zs6H%huAdhM*#bIDKkj095fa2&HERxz*cprcAMg|~$y}fwD{&CfjV`}j z#{QO@K%A^%*DL)0vdvVlUe*&?<65N96AA+n%a5gv6NDt)O=?h-jD?DpR>w3*ZHAfh zKIJ4Fqq)59Dy37$6UC9b=9&t`G7YuoeS$s1rnyC0DxHqwNASxpX%;H^5 z>LEdWh!<3!nQB0ict|nE62eh$;8fZ3I$~}CZTly~P>%(Rg7S|j; zH{N7Y<;~`2=*9h=5?mN7Pa+{4@oo|{iLdM8D7j;-6+S$SAABITZx>6Jl!2Xj!tZ=e zF;>xw-h2fXi4#_Tdg-NN|NfHi|K=M>ymHfpI(0JB(|bDQHfGr1%va;Oi*;U+>2k%V zlb7O%-QG0b{`_1))qH7M=#`6iC)~=7W)2^Yh>&6G6)G(!)x{n_rJs^i&#zEGSg(#u z-N9$h8ro@7S6#ewK9?(w4FXDWM3Xw#9sd;&P-59evvSLvaLMd!$tAB+aVkn;&7UH& zUw&B>RuXgFN!gWw4Zq?@11iOl#LF=;cJO{%Z6k`A!T#iAHJyBNq6q5Qub*7hiZYHMhBBw--G@?S7}YLj(Y4nRelb z#lomnOH!o;L}u5nGPQ55!~Qno76(GOEwIbLk({S`28R}%n=7VGv#OTHwuq}t8{pbL zx2Rm+X!`6=R&OvVC7Z;1y- z+;HJsOdCxDGoIQ4Zk`MiUeIQPH;EAvQPKyn0SVqGUJ&;nwPCgzsHMEa6N;w5io<|g z$9YJCz-q2kNsJg#B4OO276gp@9b2Ki*;A5Q9y5*@RhX!FL8zwPe!vGPFIR(TJr*v$ z28=UWSLl!#@1&=vB6Gmep|ZS#p}fl>o^Z$JTM0Ket8IxX6~WyblYuDy_3ykx#FB+9 z8_;HD;ZPc{1~K0o)tI3MFCe-b!wjAW_s1;nBiN8K)7KPC}^RLf8cZGFSkmfOq-xVB8pH(zRn`!Z<-qVwQ(5m;i2OD z3E>j1qi!0fDGdfJ+gXt4LX|)KQAbDhMkYi7HM8!gwmU6Te^{;Ny$-&&o)^uyqW3qHBeq& z<}u1GG*ithqf^nAsDpKaZcimGaT<|Zp|iU5K;D)Ej!7C6s6)Sa4~b+^25%OCB$(+W zM}%Y}HNe8D?C~kHKaA;zkQW3oI)t3h@OX(wdJn8DJq8t_6hB~OaO2>f#vsPPR{ zyrUtYDv*U8cNYG^hod>&gWi;ns(}+*$5_Y_#TWx(+6ye!__wnvRbWXv)N!UU>HVHHk>e7Y?#RcoQq(c zI89hlHhVXno*o@-#N+iyq!tQQRkf@rMOiLLQeG5uf{@|3ah6Td^r*{~a602886k); zjt6bFfYs`^SQN8aHkrHzg9pPz4C67317HCd0Mw|V8)Z~2pmGkCGN_P3`2@qq?s5+ z2T4jHNC|iFRvTlnI8A2UV6b5MR3w`WjmHD2h(8(fB?59xmBNY`lm%7d{2sSYV7xr- zaZ>{0 zQwefhwIxJzh`|&BG_6s!igG!WNFY^39uJ~vWV0cFCcq7V3P2Gc50C*!0VDvz0098a zMqU6BK$A?D1wlT5Q`9w5Ts~GQV=5{glpz> zFr<~j&7{?!t+;O`7XS%>16TkIGbl+0)!j(dMo|e$Nl5rWPRa7G)0wNxR)Av0(q*R%O5Viuz%iE_t%m3rQJ%$L&M6x z)pIahe`WLR*Y@b54=%h5hV$4zhvMh3S?>+rIh>az`v9#YA8u;O1;&k8Ev;EoCJMB9c{Mc(tZtiGV zr8~Uq@2xBLY}Zf3zBgWO>QAh+C$KNRvKd2Dxwb3EW=DtKTyyzk$$Dy_p}nq`eqUo> zwz#$Z$g0Qt9<@KB|8)P*OTYbLo==VZv;@W~i|``{RJMA3Rxj`C-}J#p@4vo$@bI#^ z{Wl8R+i(AJW}>6RA3gfU^2wvytA7S`Uq%N{*8kOQp`$D6XGYF;{k8X|bH&BZ^X0A4 n5&q-7yPot;kF|uFlLtLF7sUNN*HRA6a?sV;yY9r=SKj^)#^3>s diff --git a/doc/manual/manual.htm b/doc/manual/manual.htm index bdf4d2a9..3fea1b66 100644 --- a/doc/manual/manual.htm +++ b/doc/manual/manual.htm @@ -13,7 +13,7 @@ doc = doc || document; // from http://stackoverflow.com/questions/1145850/get-height-of-entire-document-with-javascript var body = doc.body, html = doc.documentElement; - var height = Math.max( body.scrollHeight, body.offsetHeight, + var height = Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); return height; } @@ -65,4 +65,4 @@

- \ No newline at end of file + diff --git a/doc/manual/match.png b/doc/manual/match.png deleted file mode 100644 index a89bf8d5d4461eea400f41e18dd49b9acfc298c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6155 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 diff --git a/doc/manual/metal.png b/doc/manual/metal.png deleted file mode 100644 index 6fc385c42183b7a4fbbf678e1e37e84759295e6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5104 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 diff --git a/doc/manual/platform.png b/doc/manual/platform.png deleted file mode 100644 index c0e4c4993b82b71cf4d3a58551dce569ad85b810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36247 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 diff --git a/doc/manual/recycler.png b/doc/manual/recycler.png deleted file mode 100644 index 12e0343f63330fde4da5a2924ea0b2d16edc2a31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1230 zcmXw&4NOy46vxj5S3h7CKUNrnHlTDH!sAP8CitKQDpY)|Pzwe3P$W!hQ$|OsLU?sB zI@I|<=O6=C4K6iesf5jn&3sM9fQ3ojbV7n!H*}R5MTbd~W%2CkvgF=-a!zh?fBEJ9 z+X}ZULzlg=3;;s&wq~pOD&cp`k|6$Ex-b4JUtTe(m2w!Ed~=R(f~&I%vH%9z<^Swj z%=ePYt?B}RgK+?s7J$F`k>vqEeGeYLm&@gJI_-A5&1UQD>||NiYPB*9V>X+OMq_n#HBHl6t(KxFrBX?f zq)a9w2tq2Aip64)NF)>r1p)#8I%j8Hr#^LdS?ulmZEYWZacJ+c1G`%5bWJtt`rY{k zoxG}O^G;Q2u_At3`dUS5B-fxCGAa9wiatHrUAdX1Wmat}Q$(1lc)e0eD`JaCu}T(6 z5~9@jRq?SxeCWg3>o_xp*WKtH!ZAB?-RM4nL(PHyhWS2|zgzD+Q8{&_%-dWv!BF`4 z7Ty}hiB24@$Fmyj+=#6aSPu&ZxL*a+J7GctR|;S-2hL=08RiK01LnX7y)Pi3V;M40K@=70Cc$)`uhAVJJZlGq1SU|WkVEY zC&^=p&?8hnH!UhT7PK zis-n)i0I7Kq9mbEvP>WhzJq7S?tShUx14n78;_UlF=yxNl2XVhz?YQVOFrf$8To?g zg%Us?_&DHfU}J!xfhK{Rn_Cze`K`Bi(rk7Y7u&P4niCVtBO}v(eTv*eJU5FcZ=>ZV z)_74fjwFY&ULV17QnO7=Gr)1cFhJ8ll72sqj-tbXM~|Y(glaV=Cu4XxPs1-iz$C!8 z06hTwZ`T9xiTO{M3_$w7GXZbk%XnQzmyNbrDXWn*Y6&eVCZ$5Ds!MjC&s1h!c2@Bw z>a!CC1Iki+@nfyiZEU`4Oc6~|hPqIq+QjPAru;sg%K`B#^|A$pw zb9|88qn>rt(^U?^-BxE^a2l~D`EiP5Fy?KGZp&!wll{@pJUvmh;Tf!EQ_JRqlEABR zTYn4*QC57Z$v)@#=E1$iBgM{k!>Ms~P+j2C`i1g~o~HA0KR0ezvL`4wPFC^zh^y|% z%90yVIYVnQRVMLA$?GIPFLDfrDkCpWoYzT98k z$`!iUv9FB<5W8$?wo$C9;+{MvT0CFcoc6O=Ua%T5__Gvvvl)t$Vem-35Ua>P^iDZ zKNt-9{eD3Zd_JGo>-Bg%ZnxXza`8OxbUHbXv)ODGi>0EXf@N8g$z(7XbUGcwFe;Tw zsZ=Ty3b|Y^l}aTNNlZ+P_`2ZXeaH8Cn;o8mJKc5L4p(nH@IhJa_ToL8j8*UERu*Ti z%U`@!pHZMq%TrI)X2=A)zSF8ZZPB)wnU?a!Jgah=GPr!D&5&l+DOl~4d`7NU$rzE~G4mFnd?=K0~o_4jDMZ&7;f@|KcBr#8l#CeDdMArb^~yNTn7Wr<-( zE+-%Ygn*#v3h)AMfCo6h0Z^o4La$+eW?9{qp97z`=izG*|Kws)8{d-gPv0g&-u9LWXvlp3Y%Nbau5V?99R|%6Ash)^VHr>4Gm+W=TcIVNF%N=5CFacjsfCt zHv?i~{u8DG6#qMm5$y-LpwHrSvu>xsX<;lTrHPR<3W-ABtQrzCHECJ4reKkwsZkSm zHZ?xSo){RMq^_3sc9-3&KR99U%z^HIm>*KtZ+h(6e^y<~MCS#Dl-sv#@7lfU{rp*< zrJOo6=J*qBVN`;oei18+Z}{}ViyO9;FS)rRWyjg0aRm*5@(FPR2U0G4}mb8FGaq5j9YH68XNGX@Jk$0w?b^}E`ls)u6l z+`A!r^>Ew_=YptYb)^c^3@U-1dhe4gUGb@#B)JyVI+O zn}52Umpd~dA#Z9;()je9MJt4kzh}AMNlfVYxH2)a`nSi6ds|mWPwQebN;hA*sef2@ zZ{Uxzrni4B{#qB{V}q^Us-h#=>WP=XyPEjr(UT`mZ@Iri%rutetjIo-Rl4_I)m{3H diff --git a/doc/manual/red_ring.png b/doc/manual/red_ring.png deleted file mode 100644 index c3dcdd4c38c3b253d8807d4d58ca0dd2e8652cd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1219 zcmXw&0Z>zQ9LIks+)%@pso`8W40YX+3?X=3kk2`A$b^RjnnLy<;!u`1Xh%aa-xOnM z=39b+PVS+g<20N`wS>;crRTI2ugh{>C@(Qvq_jM)uulE;uVb{0dN)4DeeSzzb~vu{DSL)@A}sg@QFj*%K2J;cz$<3Q3X_ z3!w2+Z-NOJ-@s5gB_dpZ7FYhqhx!vsqWR>%_S=< z3o|wtQ;YP8Ycdzq7IIsp=8E9ErD9`YfTi*GYk2J} z23qlK9d;LEYdSV5u@1&J!>vmAVFLt;;anb^$%d{Mp*0;4!-yiH7m-7>BGQOjL;?{+ z5xidDIIvoQra`L(f{^EJw};HZe*Jm3*4vpEJA5%FHL(WYF`pG zX<&Oi)G1-}6Hqw=Hbg-&fF0?YKa87xT2=myu4Ew7bec4Fr088sGab*Q)g&w}Td<@+ zxnRYd*kpo;pROPxhq2rLb4$-9$AKQpw*Bi~vuEX&B&SeufR8AJM||ufGHQ}(QVF00 zk^lk^JPRxX3FCvM__>*%&Cg`gn$S(oQR7HEYe3n$i#&V;gx(&Q#j!EM3v_^xMsA zXP!@v*4ytqIQC^0J?p!ZgXylWE60yfdG%2{ulvWvt#@jBua=NQ;*%X4PsJQ`{CU+9 z;m(Qh4)1W4&plV!4qp`l668GL;xbNT%#lWUjL{W8+>>K!eOW!XABgM_OmNaL}@sYNNhq^wl z_NT19Y%Zy3d3<7BZ}i^_=@ZJxS<{+g#uOd*1yoeTRNr z^t4gi&@vYDN@eZhvM)^b2kWPvFWi-Q{cP^8^_3gT9*zYA%9)HhoHzX7)9|pef1*Br ST7^N*Ijqjk&pNfTZ0EnaqYY&M diff --git a/doc/manual/ring.png b/doc/manual/ring.png deleted file mode 100644 index 6f7c54f0d77a9fa15399ac39e74c50b0ce4fab96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1109 zcmW-hacmQH6vyAj=D{i{TI7&36um%+2OhB@7jwkJ-S8Zz9D3+QPg9ng=^uxw<_0C4 zrm&(_8d6P1ns7+PMv7D&q#=zdq{0%LSar%w8dtOaF`&k3ri?f-xaUFge(&Y|@jmY* z-*0~JZQmv>?pe_T0E_#d>U++utK9d{!Ub+#w2S!;U;%7@ddC*G^^+dbOUSZ}h!jQn zd_IrILl6YZ`Dw;W`Ux)y3eQMET3{$FmF5bC*<7xj$+S|bW+KtB?Fq}OnP$~6D!N|Q zw4$PnN>W}Bay;(@gBg}hF-(%C<9>gPqM{^e`Fy6=8}@iY1fdgzN)QTw1Rw%nyNS~i z*r?(}8OMuQ&11#EavF>Axq>~Dvs#YXOdIv2J|0(VF{NV5MN29~#GENO2A>LX2`v~? z*{H&pQXnMKs^FJ7N?^$#<6~&=%*;%y)oM1IjYeZ)Vxm^7RjbuXrBW)Dip64~P{`-= z*=#nG$)wZiWHK3#$78WrG#ZUWBBp5?hN0`arfG_zNRlLqBG2<2$FVFM2n1-Fj$$M- z6Am{+p>a*GDC(#rX9Y3M32~OQ7}lTzD&-eRGU)Zu9uG-W@~KibF`9|xQ_*Z9;>66f zZ6qx{ZfdrnL_=~!6T_+yk~vKbssfvh8>y%oH|1zZ2&+L|VicYhgOnXJB9<0572S|j zjhB?5ATgW}K(yKotzH(#9Cp<9JGw6+5*7ol*4SuZxr~m3wvC|>3Ih852rvUM4NwQD z0aO5r0C@lhAPEoyumHjUI)E#gt5>Uq)hZSWm`b5#p{gRsxh`@sZnzki;R4+0IDiSD z-rn18V7-i02a7i5bWHIWqh>9#9q~59-g?MW(}*zzN)n8UckaYGVi7TgXd+68G$P~$ z$a0WoAwj$542Uen(LR>)xGU~hi3eZ-XaEwxbDNSCu_dGJj^a3sXTgbpnK#YfXN!{n z9ZUNAp4hQ>@<@8%o3T}QZ(gvQn0$WlC;z!!tBv8kYwJ@x6F+zF`(X8_Z@%#O`bKW) zGsic+)cwhgj;#kSUxUxTq6}yGbpILER~x=^c6fRJ=2QFmj?*KTZocyRBVF=^=wnCA zdweH9Jk!GuJpA^?@B3cXdykPT&wqRN!A+Uh=C9s#_Dh}fYjzx3*ZpqeQF^5F+TlaJ zQ)>q=4%mesUp;ZXxb?)PHC@Yw){nlpaNU__514}&%R{$5%O~Fd`o_LDrih(mUk*JP zT>8<5)_n(;Y?41-bosC2_l}&b?S{~Wu4AWuY5y=cc4RAm^`Cm@_!ZyvKVqHd_y-Q( zf0h}(_1ntm`NMlQ{I{hoNABXM{+$1H{@~v$M*ao=>1FS9-t$(${U4xz%eKBRdUp>0 E4}9?2-~a#s diff --git a/doc/manual/rshield.png b/doc/manual/rshield.png deleted file mode 100644 index 7a346cab58d54e25f69005819f5d895bb2ac167b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 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 diff --git a/doc/manual/shoes.png b/doc/manual/shoes.png deleted file mode 100644 index 5667f5462dd0bbd64dc0c8c999efbefae0ce9e13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmW-hZ)_8F7{?zr-Azu?7bQ8z0bMvvO-{K;V-7gYjosKu>bQkNPrYatj!^K_s;B9a zf@ipB(JGacSdt1w8`5BLgH)`hY8QdjtSoy`waFT-g0V`8BU#MAKY2Vzp5OE2dGUOn zC;5K!duw#7ylm-;r2w#O%OgYE+}iKHHND+#zT-J|2A~^8AKkv$ZG99;d5B;zh=?>z zd%a$gBng7xcpt-hC?DaWKoM9uz=$l3rP5-du#n4j(&=_G*^0-Tu~^-*YNlB=jEb(8 zHLa*9ld_x_#hf5y0)aHgC0RDXFpke>({z-gEU(w}c)}zZA_$!zRDw_dWB>^OJ1x9i z$7U7lWt=TyHIJ1HmQz@C77MZYoYl^lt(4J7=(CPmvz1CLShVCqM9P_B#t@PrKCT69 zm5VB@Df>ebql&&DPm3HCV7)BknV+9;x7)2&tJ!SU>-Ac#R;^Yml}f2pDi(`{LLr~e zXS3OKI-N?T5{ZQ4IJRv^qtQqtVw$F57`m=&nx-gQW1Fd% zk+5{f)MADb4Fw~b6jsGhkk_PuDsoxJNJdr13`Rp@SPkehs|bt~pkuZXv9z$M=!UFn zf~*8YndL=4qSa|?jk0tu!%fC~8QmL~2#W<*Yiu^LT*gcWV=)YcP!!SULx6dJ%K#04 z8bAf02#^QJ03-lx01F@tpaZy)xq7wRSgm5AfXO6U7OE=pyz3$t}iC^nns*cpd`bjbn8xRAQlmmh$f9@s`SMOQ# zu(Id6*V&8j*t?q9Fo2NG(xpYN&_4Fs5eNPUowc+bcy?6gPu=@u5+e4FMLmzbw!sDH% zZrhQA>}Pv>PjSoFoxXo8I(q$y4fp!nM%JCN_oNGS`!-p=Mf79B2eBJXC!{eP32f9b1EB=1%$nIz3UtxHP`Qq^P ztM=;?!pgI&&(t>F`0mGv@xGbk|D?9%pYiPa^5?&P*f;RsDmZ4J@9SRm`PviiM*&+l LZylN#9NYgt{5spj diff --git a/doc/manual/slime.png b/doc/manual/slime.png deleted file mode 100644 index 857f98fd3878e89bdc5e4cce500988b0651edd20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42024 zcmV*fKv2JlP) zqSjl^10^v=jgmp5XeMLSB$`fId$p@qR#sN8{P}wLe*0Z}UuR$EI`{oN&pGc~NV@H_ z&U$OtKF`@_56|`7({37E=P%s3W%WH< z*S_!N2fzLJb=-*oKJv~j2jMUGeDwLF`?egw@%Z$i=dZf^gaht7XAwVi^{=eGa>D`q z7Qdq7@E~vb_pAKByEZN0AUrYr7lZNMbNpaeb_4e7dt%r58-&-@=>E znj1I>&hsN%55z6i4Vn7&le(kvjjzlc6Rv`@qTBej1s}uj*2Y}%l+`-E9{qUZ84LUf zCxbbFTZdoAC3lZ_%R#q2XBD1;W+O-5aQG?=zUkQq`YpX@^TO_9SMibYjXS_&;*Q}d z;|O@B{L$- z^>IS|9$VsYBRdcZdw(?OAN#l0IpfPSW8fA_r8wBQ>jNyOsF zc;tc&ehx>w_qYRb1b*w@Q`P|LM4itw-Vhy-SAk*J&jVt{;3tR~E{mK2T$=L5?dWu<@6_&W$^dSm2ugo;gMf z1Wq0+CdcghwN>FbTum?r7t0MFqvLad(@OWQUq6tb#kJr;0I@g}<|prut{uNShT^ca z;qrL{Irlh{pv6?dNIcVSer{b$N#KCQLd-`dz;mW?36M0>N4#p@SUlYRp05T70mXN| z^PTtJdoQr}m9KmSkpBGVKkw+pe*x6r{oUWi_T`sf4)k*8pZ@8e0@xq>*vByJjyvwa zSAgU%eBlc?LWeXg;X)U|iHmdqYl?Fx79pG#N51yp0|+);vt+DbteMSKpr22x2@*U8 ze1!+W_zuARy(YpbDhI?aQp^f4cybtqo%kYt1z*&YSE3irF?drnHY~_5}%y0Tqzuo*ycRJ8;?~xIe;qyf11DE zUrYDvTs3&Nf!;gsyz~D1?*|SkW+9LPMPL#@#ZCehILG!I`xnsr#V>yG>tFvm(F^1g zy}&<2_cy-rjofpHU8Gb?tH-xE zpQw`)W;~PbR*x0tMd6%lho&Y5^CtvyTstikN3tssKaCBkvKem^&3SsvJc|)GDBJx< z?>^x`-29?$3^|X-fjh~O_@cCB?BN({cDR|GoRfKS{5m2Zit&BNE=bIBJf;xFL#pA4 z_nPKp5^}zc&-u7cPbnXB>?lg1TChHmTIaMejKi1T=Mawf*-Dw$OkfAwR4?ZwgZ(T4#V>z z&Z(UDYWZY}OGVck<|QT~mNSmowdv=0Kv&nZ-kv|IjnQ$mA#le@Vs!7Vah^*m$HrV6x~$ggT&@T z#5LmN@!at(>chYP`@jF#V~-Jg?|Rp}Abx>fKvbGD@Qj^TTye$ix8E+!nX(sv#}~ie zzW`(W7duD6Y;%*9lg!Oy2QWv{r$V!eAOVcI5MYl3n3$yS;p5kFfJR@dB&eZDVm$9V zeNp%?e~71z-=c7)4lJQcRJ$hwcbS6SMJP^#+Yq_ZpF895h&8@Sh1v|`85?k70sr`DM77?k2~FO(5tf-x>xtd zBk4fG{gvX1Z(#r>wgW79q1~&5_gGaPj87=obVL!@*ohzN{8;_^N)=T8s^06nM#7US z1I~ehog$P*xUdI6;+PnQ0u$zqN!&Zl;QlIb4*Z= zS2o7g3fGM(z;UG#gIxZ!=<}+nDu)mQO;*ZM_iXd)n8U&zj*o-mfl_UB&`OODHZ!CM zEh$&#fnNBWC^?}a6TOhV*h&8uWiRbssMa^%d^2S)22=L_LI1)L0A@JDICvy?8DXs1 ztcU96v0_feFcS4=hp_{g3au;N4FKyjh+&Boh{{gBJ#!5Zg)!Kso2nDAodv#L{;IKV z+%Fa`;<{CQu+{H4a;)$(L?lg{j|T^lCHH>Jbt~-JoZZmhc*@O90#WVnLmvU zE+|y6sj|xE#4Uq_$E~6K!D(kFmcy8;J52ySMWB%q7|~H23Tv>e9jfR-yvVOEz`G4B zKXb46t)nxao;f!!6(a6_u@vXT=`k87ot!7>er(=wtQ|ZWppLKbz6E!*v|{Y3sn8B` zS8jQ>6l?OcgYlq z90U*1+r_I+S`>ymRc8PU{)-1dy&Bt!qxxxR4RUELQ&u7r(ilQjCNyV&>#I0u6H+K(<;y^;O)dy_W-ZYQ~{4#F|F&t zD>m^$GkQUgQ)8zC0#i*+Ecv%I^`q~7Sd8#ET*WPp3A(ha$MUqVU`%j6OQwbBn#XcP z7vYWN(k8`NhDKOM<$MYN<}DIpDW!CJxVKzqG21pHAT6{A0m?>8+bY& zn!zEA#5iz~U%`tK`~W0eV5e(r9&64xAH_L4cptlllNd^!2oLh#x(eO%E*5FOh1nKV zXgO)HC}4Ww`O5TVKv?lANOIZae)%-#@P7BR#|)%Ah6AYf`xt=}YnhL6`#+C)-{w{B zBXFV)jg$_7y&RVOcf}a@go<&e*&eZm0+T$JqAAN2p;y$$jE)dS^3~0?Vv1a{HA2|Q zoYkGr5|;zL_o9m~0y5!<26_QPpb?Umj%bQgMvNd`&pYotgpnYhp*dqG20(7RBO2Z; ze5JF2alZ&!#xQa)DSM%vLB)w%9OgQ6P^z&~76BZ>NF5QXr&V~^hJYD!JX0K)F;Yq! zDxVJH5C^6;OUsiXA~~Of3Qe;akDs0`o)5jyTi7#e$14x7!R5`C&uhL7nG z-anBsr-JaNa_fQ)0LBEB0H@0|sL;5LA3C!eNhb|9bgLzSyYKdz1#cr(7W}#^Aad=5 zF&>xpF=K0J^EkdT@j@TA%ExG3sEwhIfMcAf6FkQHbytkJAa<^n{zAlB@e>}aJbk!9 zNRy0}7rKvntk*0hVl|$N2!ACK5H^oxH4W)*(YfzFYR&*EgTQn|5xo$n0xF1EKqkXT z7_T5O>67q6D~yDZV}~=QFHS|_4F!_|Nej@GwM^m6IG$o8qz!RcR;s0?Q{0JKp!-Wd zummRNG&YD~92U}#fWZb2-nphvTJ$&}p*SW^Zaz>`-@y?S@JRsvI;$+Jw9{oJX~llUgj}g$J-LP(5?-+ zR@KmoeSq^W=`2uaih6SPLh}yD2hQ~fIxs`H)STgG7JZUpma-Qw!kA$s+Q1l$ui%S+ z+`q7a!3;!A;=sB9a#IydA|9ky6NeKTRu2H4w4%ox=Espt<^jhnrIQw=RFhEc^bdu0 zh~a)&9fxgt8rIK^Exi*uGeblUoQy94+`#Ro2*r)=7$bvg8U`of>H#M@pGkqH%?#yJ z(I#$4Y)V)KhaZ2`J)g9Z0(~l|h>8OjDbQ^$G@#D2k{wPlsDuYBXL5#(c^$vD;M~s| z7dkkEXO7VVfxnys*pMx%;{+}=#z^N6hs|7Q%2-STu4^(z+8C^Lh+V#wW7n-IVm-x3x;}9wn#H3rJHSGmHe#64E4K-FoY-G={O0vKL=x z7zzKy5$LrZ<>*mo6HZ&dT%X(v?bdP^M;X>UMURDW9w#W(yopLY&?-PWlwgcsr&pGQ zXU2i)xWX_7koXbDE41sY0MvDEW8okdS}Hm<*m2<3TwJpKdWpIo1{IypTALNT4ap4t zmTMh@X)+XP6(NkIkdH(t!xesR4H-T^7n*hro+B|p&6%qV(`z1=4ZOM0-+53_#y^1# z?a>%+bpG&RgJZO(n;V;3TxhzByIa?J6V|$nRbq*2#T{8{S}V?UNX2zs@N)LL7doiW z%0t30LifQ>kbnj3!Iec%6(OCok$_&<#=rTSzexfXU0E0m*B3AkHZ^t%>LZUHdDxcZ z#}HL=Cl;qZR(Hyo5Wfl0W6Zw{U^-o$k4fPsGA8G!+rVNe1H;s-JzAWlyhC9mWjIpoD?@{fOQH9{ z2OlIWL+EvNTCA+szy9@5r?K<1pZzR$0@#$j$TajUrHPkVK%F?81}bG1r0p=0P~l!^ zd{HER_d*jqz4K{3R};aQtW>&)8SHh5#{iPBO;N^s2e5UK-eV8YibzYim`;diCPhOq z_Gv+-n&%e2F3XJ(S2}gYtO(?RF%jyR3Bsj9(}N&UTw^{_EtL0|)Df|@C^|e295nXv zj}BgFa-p$y>?apGQ=tFVxzJfFM!=bmay<8rn4}QG^#cdHi{heJnIip;k9^G8Wavjnf4-q@3g92krz z`@qqwl+Vz|vBs}i$+E^nHc}2OF)xBHA6KCjah)hH)A9jNnxMrsI$_Yc z&|K{4V^d}#zD324Q&#t_W4W0mA5(?Kq>lBOCdmtLaG?oxI)o%Ef#g3|OlF`94R0>H{5r7**^3aa zIF(FY@H~F(fqNO*{0bvMVv7;YKon37z%$PQzt;&>>dDk^9l!y8H5FP8WC$wXZHIYV!dOzd+>h3}ji$?%h#LPL?@oiNx(pE_A3vP~qolPKRcKEh6s4q?PS{(j-F`efFnss^D?#8U>2wMFVJo zUIu}fjR4sTaFVTooy4Zui7J*i2jLLbS+>>prWLgGn zx|R5(ZW3^+LB*1l=<5XqwQNx>`8l1C3%{oa%6tu6X!^HsVz_CV>wYUl{}7QVtI#3g zA*;vYIrC|@$5=Qzs>de;;iYcTe`cZDj_V5|U@#LH5*VO`F3rL^A&dm!%rKI23F-F&fJxy1q=9y9OfX3r zqx57ZpaHXHcOvKa?6p7&C(93H?-YRr!SyPl*lmOpY;jM2B;CYdL^<1k5M7(D{*b z1{E&O2@mdtmZdE&H1B_d3+*a&=0ekR<|=gNLhB$LQ{*`Z6?*2F8W);5YMEcfnkT_e zN%Mr|uauKOu}mYSn3V5?YF2Ks45Y5omDFj`$lQaiLU}kJ$X;Sk#xNbx^iG9rBuHR} zkwku07#VxK62KHDJqMUpsJozZLVtE*$KPH};U{96(a z8ULipH-7vlEy}IMxr-GY7YKMG%}w5v9DotJfIVI*qK_%B^q+qP{3bZ@-z zMuw5FAIXLVp-QJ5_cOfVq^kyiJpqWWFL5(-WVl<*`ibatE<6vFqz&F9Rpd~$I(l)K zRLEjl?)?{`QdtUKT0Xao3G{!Wz&@=%WTxhxRW^$pi zlgl*zQYEGpN&!m?wpfuPurd`c%E=5~NFeZb$PA&{%*QGR7(Sxr!lHK4oWI(?XbdA_ z1WAjJ-u&h_GaHHI=N&tCU?&M!(6kjs#$Qi<7-dWr>q0A*i#OzFC_o#WSb?4?F4S~L zX`PpJA)QNMVfnqMO6m+1IZ#-P)Le??z=aNVMaWX-O5uzs>ecjk6DKu(55L|$iQzaR zNKhJ(O`(F%*n=PP5?q>RjiRub3$1Kh>1nKP*N4g?1$u1p4uB`xiDCMRYFuc7q{fAI zll2MXLNkYX9xn8BHo~|_6{l9HH5&jdH9=P=Zxcfp#bgH0KypPomZ2S-Sk$pGpK%0` ztK^7+J`9N7cH3=qWr>x+FcJjprI%iM!womkzXe&%a?mO$%c7Pnmo-wY_F7?gXGC}O zvB5PJ%E~e%BU$bA%*@U7qISd>IS(PKp;UfnV(};NAUWq)Vm1TVt#?}#%ISnEsY&xV zQ<14Ycus$>M2xjf59)Ff&}5kMk)E_j;<4j={=)7xF0_O>^O+=YC@NL_yd5Jr+-?fzN~dtK6RngF%#n=x_)K$U z*uBb1X7HNN(AV@8Mq5G^4o+;Y8ayB;5|v@PvS{}L(o}|77K;=P&?;FM8t@KbB%&7w z!B?2)fc;Y%vLm@&7aAv|WW&x+GZ3e7t`gU{YYt#>r1&fCqIRx|D;r4w9*0;<3H?ft z5IsXxKBzQ$I$_6p>&vXVzuL2rM5y3F`T~0Ez0OuB`0Nfp`g>KOvVrqSdg@TqgYcFw zFobO=IRgbc)W<7wp)->IkLE&?$dPMe6}?SLEWxdFmP>DfO)?oMU2`&nE7+Pm?u8Dm zRhWk)A&;MfETt*Sa?mt}u@joJhmo)WQT!Kw@fW*x?E*^S@q$36BbtFITF#WoILO%H zqZl@cX!btB*DwC5XqHX!a`9y*2MC98tR{-_6uH-Bjox!6N`2)?z?gc z#nA9{LM}rBe3%VgJ-yB2uoDxKR zH!|rml3lxQhmo9d=_!G^K!@AFp(d8p?A`}{U@ob{DzgMCGmV@J&3h-iSA=1uLsFvl zdj5KEZYIq?+rW~*6llQx9q-lZy&mJci^ocNMl z-6lcolNN^_RIB-;q*6n2N^Am$kj8REdo~hXSq@nbp8(0Mpg15;h&k4_hU9$Qm8vAjfo_0EIUd$Ijge-QHH@ zDK`hC*93oQ24@wTtGEX+-Eks~i8k1If#(N+~N&Jq_DM?LrudHjK(R zOZ8W^t)dREMvD&kWSj7*;kC z0O{FC*aN#4VI+F35k}%*p_j=I%n+W0wnUuFNah@3e&ezL97=geL#`FIQ%x+T6EnEg zMRCqqWKRK(-(7A70jpxiUZ7y^eQ{+NZFtS>m ztI(nAZ>XEWy#%Ag;x88 z&iH)JlzLp~jkNi|phD;7-C>M-p(p*5rpGLo3+;6?f`o9+mYhtqd%KnTm{qEa&`4%b zEJ|WL*vxWJYk|O_=tid4gl`$yg5p%=Y$Tu*zAgx442E|ab}#g2AQqw<4r-zo?H#%> z5|;``mo#3F3gUTETqTLM6O zjzoYBg|idIDCgQ@p5;@@A+P+Fm= znYX#n^e;FUT4v`wT$kwf%4vLf!(;`3!J`r*lG#WQr+_O2va*q=NHdItoj|fOfjQWF z1&>6KWPIPEy9FexQK6h7|gn@1P__|WKhzlMXw{{Olrv; z8hrbG)M6pg>N!Bl6Lx7I68e3;2<=*OGDDFIEj^Pn#tXYE`QDpcPmI-pgcKMZT^Q+U zV_PHl!kpBFK69OCDHplW0tpua(JdNWXln01#;a1gbGuy^nm}!Hp*dzI7kc7bK4ih; zH?&&mxMpHWF|9Wz;>TuX)9FVpSH;8<*(0=8k)x5FjR;7p({x0K(j3Z00+$1L_Hxjy z!b83X(ipe|jQvb1>@F{hkQ~?-eX8)9kl`R9;524uTn1W*08B~{sg%6eP6&}m=_T!0 z0+avDJ5@;N?}e>v&hk2v_N>$Pva)h_QB;b6?Xy!BvOBR=k)v4fxt7dOEDFo86XQu_ zEU8i?(-mbsT8wwS3Qz||2kDI}{@&n1k9i}{sB)o2Z*1_TIRHOb<3fuj$uUJPw2!HA zp#@<1+c?MAUQ|}AXkN8vp_+J#LNO;y>U2(K2y{#N+s2Z4^8s{)g#JF5_M~k>_OiPI zU0DhvslvOmk?Yag>yAJTrL;dDbQ~5dO2w6^W&QPi3_bRhb!YkE7du3q1!y?<#M5w zZYivi3*BGBg3~jKTxeo7B$jxH7?WY#bnf{JA)_cKGdP2?+MRGPBF61Yd%GRz1wDhR zGJuDEWt6?wU3VSDGP98o`=uiq5*TR5&Ohp3azwKN9`pOLztA2Qr=E*NXD>8Sin(5^ zN?Aj4qo^GZ%O9d8iASYmHvyRSF))c$N7{Q1clF1HQkYB$7Q#aum_{o)WF9t90$B12*KOi>73Lg~b!6CtppoLkb!XPU`{W<)e|p~+bG0@1~d-kcft zaj2C${_zrDr8qJ(#BO$ z9d#!S$qYrOJvB6u6GNFuqTRzt1ATvOhI+1vVVMgpqV>-_7kZ#N7v!pF@XSmK zF=r(ncylu)GvH2A>N4py1gjZ_%&k?t2Dq}3pf)SHmkCBp&G&31*tftoWG_(4qIRTk zFppmmW2)by5IVBtq4nd&c{ZS((C_IT#dhIBviRTanpi5SLvT`M70i^-?_I)*<*C^( zd)$_(6ujZnqI^(Ao}uL0dQV95iaa@)!TroC?5;u_A@{`#U#TL8ZivTG^3=cfH zGqXN(p~ozaXCDvBH?#H{O)VR=%F;5s5x*=CdS}e*{6?UhQ>;-7O`dqQRj#`Iu z0R5e=fyaE{VTB#5(9alWBLR496pAns8PV*n!m?P(M#2WOkr+n8V4xR&DX7)2khQhc z!Z#Lnmt$E2D3)t+VELT6ILTruBDq!*%hQH}&P-@gAAaA~HEhG5a@Cg@=R!-aPS(?7*LY!f_3Z9)jGq(lc`=zmV?1p}A%>trPfASp z>`VL{nUBoZhvuvlg%C!9P=!E7uooQ|NZ}wO8iR>mLLH)eoQ))(GuDX!U_}?@k%p#P zEi1cq?A4&+O{nMI4o-CfazwpSO)QS5Sio1NO6qJHM}66NVH_nM5`#P+7(e9vDrcB@ zIw8F~c(g1}8T2t~3M_WPge197-3zVCFPu_752hR^Crw2)Whw_1T3Iq)#d6%Jey~&n z7uu`&Hn`9Nd5sHQ%zUb4LAu~=jB%dxipR9M&|E&qu?u`JkNN~Jv~w-E5O`=esKg2p zb)7e#vU<+eDnn(T@pDudN$G(=uUDCreG5VT*0;VDHZV}il9UW1F>M(CWq67ECpK`g zuzTo}(zbzR-+EQbVE1amb%Jy{{aE>ZE)8h?O5+6+i|hzxF9c_-xWsfXiC;w!DxHv` zRY5Ej!OOXF$}1e&XRPy zy)k8?TcIWbKXaiyhgs6B&2tuCTB7&~<3hW!8dT^>=6yP)T-aT!fX9{8+G7Nf>_&Pq#SO}_>gI%o}<=bSZ*`Ny!;J69z#s3=tB0oEPHrxLleRCN$_ z)lp%0tpXvL!E<_pL=8Y4m*CnQ$#A)~O4ktYfd>RgsLkrGfXfKSel6ua#E;cvwYYf>)Stj$GX^&B8Q@aL8oL--k8FFFw zkl3ig?#@`E+-BYB%!M8YEe95{vkt||q`>!%O+_xW^oS``7#BK}JuGsegL+)#IWKpN zuS!_3+{6uBXtx?dLCL5>4;g}N0!pQ0lD9PJRJK+?RmNf{m)B^mLNa`(V8YwlqZc|b z1TWkC;=c+bu~9H(FZKYas0;0R{Hh&|0XPVj0P;Xa*upoz^{sCqYYA(>XFl_p4}IuE zAbEUb_gmg~!?qia|26kfH&Rtr?B66tliagc6 zGgPINNc2J?A&XEtt&kj&874i)dQBC7J!yXr$XU9NDxppm& zm)pR~su3NE!~^kf$##(D8EV1GzeQ~gtP)Wmg+s4* z^iC-o33vn&Ve2w=N$tNSdzlnL^}9=wKw%E{LBrR8XNX?_9jf)7J$nG`&wcK5_*H1( zz;oBsaQBsu+;N@LJe16!SzfG4sV3{hM($4Nm8Dryhn{UQv4%R#48yEZfg9ssu4iFn zvK^5UTuiX`xjtCtYg9yfY*uY?*8V2(NS6@Iogv4X_ zKLJr870Dw~#qNa8g6{0_O{Cy|wOoZ=WihXxlKE3e3&GEg%Yy5>++`_FO7*yGn0!$@2L zJgAG}+z`K;`o{uSI zl3r+PdZ7etW;=KXFim1=93DmzV`sU(d#ZOFT37>Pb)NKrr+ zn3QihXCqy4#T69P(5u0BpjQWD)qch}90R zd-p;nW8|ZcK1w`e3|0YbcUsk)MeP)Jq8*FBWO}HqtSWNw%~ouo!FMoY z#_dHnF*$5Q=9_h`s#BxhZ@800G-JQrm!9q8T zH00nkQcWz0dTnGUmU5nc_PEg4$XsaNG4MuR>7{ux)h_2bWzvY6o2jy7NM^7~V5_N1 z=ep2vr~5h%IfQTw#OCW>_d3X4$W@>hpd-n7_wL;QHfrcF8wqg5N7!c0Alnh5dAWwB9{fD@t?2tFG_02Vc5Wg>qq(*284g@%WAuULEu757ho}?6>y;&V;*-dbkTt% z6crn$P?cq2cMs>vMkUe873pH91?t=H+q}v{W%O?az{^djlCR80V)-kDk;uv-eNx#- zfGG1EAcWaSN!4c|oaxHKK~x#9b7B#SSQu~!$XKA1$}`(2LGTLL*Z^W_QUk6SjA0bu z_!f<4VjDU(2IGt=t{>}Pl4)z4`0YCcW;ODY6L`$r7)t6$PbPthcxFOBHAxga0ZT3t_>^HN4#OCHgaN=Rwy{CsPQ>zPTv`ZzoB{sw;Pk3>QvEaU z|Kk1E+<*QFl64|-31%UAfbJ_+&tPJZ`WR>ab^vn?z=8QZUUUcYGeV2%xSf+3JSxi? z{}iy!zjZN1I+3RnhN_g_^pFN~P@!w(V9AAcb{EcMiU?ieLbIj4=+NRqH+atTaG|?; zH;*?L+7pbVLd#3f+rnhe5Qfc#-6d}WgFUAQ;yFsqR`sP~YZb1cot!vga{lb7NZ&H4 z8uCJsXysufY_K;H!blAEQq5K#Kf8)5|6$y73Gx%r!V&Qoq8I=J@o%%5$iu zBAi<+sYCY_6Z&Zb6ClJC2W-Y_c7VaL;VXJcVh@490NU>_H^82$2tq>Gz7x#ql zHI2gVVo-;|?q12k!Qf6TUkm&ii(F`Lq*UWV<4TJvv~!_d#q}{tlrQp}-3DIS7+0aC z?iRVwLLhI8m$rdpsaSy41BWthgG9aigag$$R_izw2hxocfg=r5H;OSlo-@$IFcN@= zjaq*Ogpsh5rFIxD!e77#nlsy=sU#&G*CYI&N-~g!g91x9E}%s~0(C&zXFvN{mf;b$ zaX5Sm_T^Xl7xiQez^6PE{-Wv+zb>7eiv^L-F&K|SVE`;=Y5{O-V=!#;NA}!Bb{B<% z14bS!D#pbI-}LfJu!s}J*~U1K;>=3@EoLLBnN!~+Z5_QqN@nnBt@hJ%7Ix3+gwEv- zgsMOVp{^b%knY4%(tk*Ps&S!RDi#%o+8A@puJJ|39aNLb)pLx23L3I=Yg}kAxSxH? zo=6lVu(d&&dTKm)NM-=TWI_&|Xy)s=xc7M=k%md(@39r4S79VEqFL$6!$_2|Z+OES z*vtXj7_2;gWcEvdW6uaM!#|7(0brE6I5fTk_)(AoX|Qjx4X6WSWMk4=#tTvu`*CQD z!C?HCqL>2!axMX%>0cOzU&Io?1%e7Z^a1c=isY;#26bm9GvweX z)L@2)7zAc%4&W0ZqL7UQj365cVI(g}Nvf1R$U)N{;V1wS&`Z@9$Hjjk9)U>! z660`O90fb+YQ`|iRgC%V{zYdM{`-ga;&G^N6R|iTmj-;D1?K<$@BbdhgcS`3HBI~< z{NM+GJ(Oe8}`6DOFGv-bH)#mJSj`nadTJhEyvkoOANi%DB)Bz3@GA%zei$)BsE> zmBthSES(=?=Hx;%uuKn=M5wG#uGiF}J+VZ3O)l&{Gns+6j(1qM-HW+<*aYF+p( zjQ`L7`9CX3FsJXaf{%zFB66s#q#Hs;ik=E1iS@yqd>-EJOuDp(QYqneJ~{_?{Hn@i zyRduiI9Y*5AZl`eCkJuWDgTd^WXCp`OF z{6*immqrjtHh{Bmz-Pu(BnS@xkNFItunuLf7q!DM7^Jt}dMm5X0(aD$>4*j@83ab4 z82d+%c!>9ccR}|OzQZ(N4uaUE_RG){zWld;`?vU%$w`1W{|ns!zm1*P26};c91!vr zU&jDI8p{ETe$cIjp8!h10>vI+73js8L2pNT6!rtj*n>j}b;?-C3H{`Fh#QROB>fq- zpFd6~CwsYutZYxU-W#%!JWoTMC#qF}uuTp~H`o^XN7OeGoY|CUso_eD}k-9UDq7W%3NwX*T#SwpO7~VGvl&%2c$SC{;ER zll~zxQPd7_fE;E)S-QCBpjNlhE{w#q1VD~%Du4&tEMNxs0mDEV#VO!QaSA+R7!6lq z4_^Ua665i$AO7%%Ks!cKw8B$`qhY|_{skE0>pb8G`xg-YcYpVHKsfd=`3VPyKnCnP zm3v@fP}q85cO~=_#wzU2d|;&nx7&-#PwUE3ketdE#FOy)c>kqe#2u>Q`NL6dDtpX==Z|z%o&nHh!ykP239(u%H>Ge9+GL-hAbi~0&-K+X^96TSsh5uDi0Xw zN_h#V4IdgowW*6C{Nu}kRwdq(z=E!Ep?$iC#X`aA@Sbywz)5%A%EoxI$|Mx`{0WV* z0ZZL;6?PA#ORsS$MLH)lhz3iSgwlhh#s?~;d$8zugUqBROwSPjf^A4w_8DY05)5O8 znvl$}ZQC~VH$zGTX_d%=xa_jawr<^e>Zzx0-n{v^ zEGB{#f$BQY3xSM1@>e51=AFJdH91`vw&6+~+tN?_66D?>*HXo+zc}FkouG;Q&FEh5R29e@IE3D$BUL`_{T<8!x&F?3k3(Zn0wJ}Od znwg=IxzH@Brw(H^Cb@bz=vj#M)nRheq!YRbZP}|#Varmd%rOr6z`3=GpC`jelCi3E z1+1wYG+kVf#(?_ir=JddzOa8i|M|~<(TiS$Jud(!LD;^1=}Up(v(7pT{{?{Y(dh5{ z7cc`+33oBQQ;>(m5^#wB!gUOo!FL5w$!a@5BV;xH%Y=TYyR=%_34-tjTuG~@eEwel z!btoV$E0}-p-t~JEouOsIyvBd(@i%~A10eht?Q{aV^yPttVE?+BtRS;*}y?W^BEwT zuZa@s#dy;Hgi$n<)Nv+OAUV6|(|xvjx`BP+h26!4R!RL}19L4%89eKQm6#j86uHo@ zJ79KlmDG>Y()0J6V^~KCe+8`-jA7MVuG$V8SD^ze*|N~pir|F~`MU0HqD>JdQt(|- zB+&O!$Ok@bm7gSMR3I}m6@g{3NUR`DlG#X*d8eIr+Dl&Yk{7@D#e(bc#~;6G)25S7 zItd>E$@mnI9zn)3HU-hjk~$FX^j!gjP>-Q)V?V%#|3ac!_?5T4?QQr9%;O*Z=ttO3ehKyf?Nqt(qxcqnt5=XFb)?lM zGZv{bA_qwY1iUkxLo7j4oUSI8gJ<-W)7_hrjdRV;TqmnLBr`~lr9$OwjZkuphfGo*b7r60q6)1sL6>&**rB!DF|I!+Y43lNWvUv1e(-+OiHINKEa|xh7j0eFUTqoUbSVU;qvM4;$kFZ#3y)V`c zR%A$`HBg-z&CR%qb4_(g%QOb*s9r*y4_>lD>jkG*NMQ?gUWbAYYja_Dt_U^iqI_MP z9P@CY-9zI{EH4nhVlK3`ad<+x&@5^dU>Tgr;#7oZp~XVfbQcT(kRV#3Y>O}%ia&Fe zclK3a+E7zqu$PW#0F_}RX7yk{fTL_Ac!IG1j5E%FjD_qKVzCV*Lnfbn_SulVV-=eG z|uabpR`CColD7inMl>O zU@`+U<|cliXH*Njd%u-1V~Xj7&gKoG#`DF+g&qnC7P!#i1d3efTH-|DIoHNG&)J>i zH7>N}?yW11DR!<1TxivZ4ND|}RO3Q(B%6tcr{=B%Cw1I*^nn;0NhZg7BB#i+4d7-?zKCD4IHLvNM=yA0KOrpMT@7? z+aoJrHS(PcyK5;?I|WaN&V}9kCii2WbBzlv(LFyGIwwweRZ1U|-2_^6L@D(cZ(f+x z+OIgq*N*wQ&@L*&Di)qaz$63js$~_D8EEd(YT(oNvK~^Qb1I@IGYGwOWwA7e$~!Zk zftkR}b0BCTerf#z&k)G;U;)4s%lJDY0fSJa4Geq&hqPt^GXM#2qFPJgOj(Kn91KX) zH4TtsJY8Q5H38=UGh9>n2uA?IA)kqGe1-07N_Z?2^nTMNM(_7H>2END-D$)s7OFC* zGOHd#&utWCn?7=&Ov%(1IeLk^Eb(%HA$4)On_;8RM-_ z<;iqH-|i^Er;gu&1LzK05~25>3%#r{H7>N<;WaL_#)Pa)2e2}MoC{4|I^_Ma+5zIm z!l8?O`Xi{<6ng^iPcj3yal2@;@oqzHrX!k+XqCSLdZCtzs=@v6Z=Kw~0NOLpJQIH* ziUH#jPB;O!F=31sc8=%-Bc++FX1usC076i7As7K~;u+v1w5a6*z2bF1*(R+Lck#vi}S{D@GTsH;b=u`lsqJEF!sBTx5jXy=%?J8^AMD3xx1{hxp6@QW?;=7DrmLDhR|9i$CeocX4z+D_QK%|q+r{#kyx_h^!^37Ld*iU zG=O0k1J5V+FW?ynA3>-x{0pBju!;@rQHBtJMBfzzCRxq+lyP11G|2jZ*aWKSsV2*c zzGw~ro^h^Jr*S~KyRi1)FFqw!5qTmDn#wcI1ZZcjT(KgDmzZ-Wha=XyD@;l^DxEMi zHw!I7J+oh>gLM$K5v!4$i~QRa7k1xIF0?{u4KB2^R+dYOZfs;Ov_7Kz&tp6%A#Aui z+MA5ExzNSM)RQzlnSsv85Jr+CDp00t+-Z5CUFiUz040Ty#E6C?n#JpsjRf?CFPFM-YjC8Ce{pYEU*(*QK^BS2I2Z>hNDIB+Mwn225yx6Wcfr zgfK)g)P0=mU-vHzV1f}o!dI{;&^%@$1cOz;Dq>3*#zZBo1rW$rUww5TX~+hq`wEa# zW|HRvtHwGVp3Xt9r4xE04vk@|TkiDo#)}Hx7W>nyk}E_?yRdsMsl#51ZR+BjT`)X9%b8fU)+&0FKB?k$s;Z&>4CGpZutih@rSw!$ z2;&7vV<&J+;S6HdMHgK(B0Gu(FjIfo4~e=oHXuA97|FY$D+_R?G-jg*2wS?Qv6HGY z)L@KfQ4Zz+Q%lDWVdG72dJ{AU9vLb+E{QZTEChhJ*q2?Uf}vp=wG@@GVf7}?*H9Na zgke}1$+?ZWCKf@Z+ILD?f;z2er-v?_9z%$BymWw<8V=f;2$; z@|V9H^*U}m=Z0IJanp!Bmsp+-dMuq!SP~dIf>gwQN@J2P@G1Ta$%#b*srdjQ;0J8O zw@lHBlfZI-uVak?y%Tx@m1hz;5TOQuLns($&&mPxZ{a#|8n_bNx@uzOndkN2 ziqzs77kaXwY+fiP^!qz-p=)E@K~)^%-3eK_rm?`$9nc_h@V4Y!+)&tEn9LP0J()q$ z*pnH&CZ>2J41cICi$cUAz+mmhtX2-7$~!CL7a~pBNZ1cG_KG83_ua`*352JGC&5@01u36vPG*R8bF7$n9;V(%qH5PB*8E)POxRo* z7n(fBHWzy47?uaY-v$?Y<{0)jV(c(~y=$a0cEXkK9t%h6S*Q(~k{Plt-A-n3<5rb1 zbAMpLn?5jhFe7?H7|FAd7)HXF*ByQtpu2P975K~dRf})XHs3(c4`+y&G zT~y_PbY+khF&?_6AUWw+#uph$A`~G=aS&i0DgnMu)}+F`P}Es#76-u@L!H(h27aMD z!-LH_9yF@)X(*}VVVj-*<=9&vHypY*Q7hG@w#vl*r!XwTHK8agwaGSChf3F$s97|xxIvf#z`9lAK z&k1%Zges0A;Ryud$M7@wl!QlGummTAKoqvX?f1X`eTr84t^sxUx9N+f=b5o3D&*um z)AJ0E7jq|QgyXxpq>d-_^F}kmq!tJ2+3n#|*fZ3tRVGqo!}p$eAQj_=Ys5`o72omx zz(ONSReJ%~Mq&4`7Vx6_2I8w3Xz?i(s#4a(?EY|}iz>8pp?yq^3+;A(jptlbp=)F2 z=R!}`h0O+?(5u`D&%D^w( z*JMpn*%pxl@)=^B#jc=NbM1ku%sL*plBNEIJ%8K3a1QL<#!3JHxo)V6KRbZEs2vLe z^WKS6$O@J0V>a<^m>~o@j>^G$Bfmg161zjcsH!d@td(l~ugex%qim|U&=XR`P$$*B zHEz4YxS-}AI+c2fMx5=kxX|wL{#W5bV+@wUdAQJis&Z=R?%~epCSzsH0jDWde4wMK zLS=6J?Ica1TD@{7&e47q4t1viG<7gzCNO*a0=+Dpu52XcGraAH+a4W#nQ-O%d!z5+ z?>9%^0GNSf?(A$}92CfeO9^oGdROE~F_J{(8R(TPW%4~~mB1bTsN zfd?`Zb#kW=WffY9W8wxE3%je^m6UUrz?v(rCgj#CUh~=OLWf9caama|7dlAznPcQ6 z4?JfdY*`bvCse} zuzOX!PGKZwBe8I-!bkwi&Zl1i@k_Y!FTgC{mHsy(JlC4QY7e9eLTzlv+qd>-?$kxIaZ@&3vsw?g^(sPxn z6U0s}AGnrINSNWR%8%6jR5oDZIJ?NB9@wSzh|jap@Ap>hJ8;M2gV^-o({l< zwoIC&TvN1-S<8y0Gk|A`U)GKlk%JXEFaYwLrK{=gLJbkt&|;b~sn=4TF@QgWbI8^m zZ?w{kWcqqOu;Rw5y5w=1na$07gVR*OdNq=#=V{`x?4d&5pVw#g+N+L)T$WWqQ34oq zMYAVUI~1kh>R#kRcfw~mTxc2vfuF>vd*DL1$G9sFf7N*~bD^a|=P}|!hhz_2X^ji* zPnqw29h|@{KMOsqoWP*$B5teXz=XTHdBUaVwl~M1JkYAa<&5Zs+N}Nz5Xjyr*t3)X zA^@1SF2pbXLVue3H~u>UV1PZyPXLB(7MOAX8Aw)^68h=Nf|g5|NqJ^am!j2) z9L!Q;ObGftenp;VmB_*#EH)6%#l$7s#bjprLUDIF6`Tvrjsfhu!`ahl0g;){^K+qhhbkNCt%tuw&;^q3AMJ+7rQJ)z_`bz^I|)qu;OICI zL?u&vp(;av2CB)s!a-TOopB~clBhh>j>V_+A@lt35p#xVEi3B~2nTKvnj%)YC;;ui zJlh|$qz++^VOlcjA>Tz z!G-p^eE+9VDOGqRX!6VALN7O&!M`Yh?}-gXrx$Y=8M1=xg(Q=VmBSfEFHq*$NZ3Zi zSSmCv-r9Qv2@cQ#hcrQz(@Q@S6Z)CMpd=(FEkJE%feuEJ*aHGf09Fxts;G^_7{&&) zYo;#BE`cv_y&FM?#x?^|R*xJW~FI*u!5oY_u(%yEStxbs3oLb4VIc$Dlj$a+_*?aX3y z*r3~q*?$cAur?i)Z8lPod}anesU0L~(5wYkiFtUZ$$4hg9vqOV#e_Wz-+9A(IkAWY z)pi^!R6}DCPbU<@Jupj+3wOW4RSG2+U8F10F!4f<)wZ?8B$aszyL(BUtQ06UVlwpy zwNs5za>cxyGV#;nLT3u}6UK$kDGIeLg;>~q60%y&H><$PnIDoFLUxhAsfXwAM<@W! zyj^I{kZ?pPWU~4Xs^AXx!ybP7+u!bCB>q(xi2-45kI3QxZUHB@{Dfe{FR^0-eOEvi z36Bc=(vHQq=<5QEfj68DY0@Ne0GafXv)Tr!S}b!%%;QS12(kMaJ!PHd2G?OcT0MRMqPTP=5Lo^|z-VQZp>B zDK5KeJm)8j3q8*mBr`9I3tbyCKNp&fSDZtx_sqiXMe?S{IBM^CTC3pA9>3}{sH`Kk z`Sxrih-)yhpghxeMaLD9Y)bV~r$V#!5o1C`k(vgI6ip`+;0ha+G!N$YidKp7I46w% z?svZnRT&#>8cHG;zQX(jHeSF0ev9Ny98FolWK*-S7QW@(tEIAvWln1(G&c(*JFniF zOX@iFCy3BuYn9+e4mNpaCQIPAhjmg&;0i>+!vw+0zGQ5z0F@ZfRWVAEBAKE@mX*4qFkhe9`B02$467oC6FIP- z%xW^Fsk%ezG73$hO|}+>!H_06RTJ0^HkDZqDwcWkSF;9pc#7GHMeVf4Ta=9iCW)6C z_6i}YE)W!86%!A`YAUoBcAsj2J*d#C!&>7xi#EJJTxed1i`g0%+BuaqE;Pk#g9|-# z4B4O*#cfJD!{2ld#qk=Q7h`@J_3 zAO;(_7)BDc0}6JhLIa}24?qRjh=v91p$Ck$p4=%C5UltZe@?0dvk zNjL%vR+6@XF@Q0YXL_FTEi3`-gv5qvEU5#V8TpCsYI3iyq>~~mnaGjJLtgC4X*#MP zC#}h|kz6=yIgr>7$qb(57noSZ!tRZ#l+F(cx}tNT1JBu&5tTCjX>g&7V_d}zDzq1@ zuc^?gDY^e#Xf;3y{>wa4Pc39+Iv}U4u%2Zdk{QBy{|Y7#=$~MQGV6#f{unM|J_Aqy zi`TP}7+&%)Qm-v9iBl+Y|@ok9D}52AY8UFb9d#JQtem_U|&MT zgm4f>bh!jT!G>IA=QNhQWC|fWA&ITU#0GpCW~7){1ViYJ6c#^Pv!TREQHA!$=9PC` zg_bW3t3dEV2PPJb_F7?gCouakX>^zbI#sPHGRuoLFn_T~8`hYRV&MRmqKHYRcUa@!AdD!^<_rK|PcVGGO+jn5kC-1oU3-7%ed$55|KXTgz-X)k)RIOED zlmnTNw_GMz;1U;uRY1LwFrJx)EUClVAXt-}h2y=EC^L&(Xjg~Cr)#7W27X`W2}*?q zkkntxOX@fUk9j8&Ann5LQpP-;kWRSJ!Xvj<2^?mp4Lvbj=-|}-X>g&vYG;iL9Zn;w zHd@7sh28yec*&GnGK15KWUNtpuc^?YzSFp6pFx$yLKrDzBSCz!{dXe{EMvF}BXvvu z`M=ua!Z{NV?0z)FFo;r%zgtk^1^8){0TYC8%5ibRe#LGFQdj{|3ZU$JH?QVvOE zFD5g1O{`E4bxLhJX_B?uDD18f5#9|hbl@i!xzK^EKMxl=|5oNg7jBX9ZE9s@^IDn9 z%4RNfzNj`AT0zi%Npkb;Ua3Kvnyg~h8d66{A7+@XUS znl>aH!bp#d_7%fOWI;c0@OwKOm_X%C_qzDn?~Q+aus;BAqRni34wF8k<-jc{hB3Ss zwy&4W7IF%qyjh|F5*p-|*~?bn_xx2~er2bWa^fnC)CHV|qqzd2qVuGJkmsD4_fAR+DqN8Z9pqJ!MpENK zD?*mJ&^-Q%xzH+ep$im4BP1T^RC#}HI%J`E_wuvwk>RQFhe)J%T263NOU$w)wTGQ} zMXKG6Hz@ARIwJEK=>RH8sW4K=MnXv)hLOakoVfyu&`>ow#9)0N_cSUOQS03UIuDx1os85qdgfVwfW@Uk`9Sf~EL<4ORV z5B!_+SO3d3|K`J|F8tHZ4gYZQ&;Q`^4WHch^M8K9&wu%qKmW~(H(=uvryub7YZpFz za`)bM_L}w&&A-v$Lg&H0Ci;e7(aevOr|BDwk5sb1u@P44z=bZRCFH{H{($^jC6al0 zo5lKN-Dq1(Y-z0e$iqcYk^y5V(h$fnBv}?q*+@V&?9CiTN=&Rh|GNV?l+gD0R*q=JG_SkVh*8qwoLuOYB{LAc(2W&F0(xN*=WHYrA{0jQV3LQC zpkQ}4u%P8;J$-}R@0vp!ze zs?gloqq?(@J6AiPB@Ny?FJpgkX9lobwLUBylNFxb$P55>6EvjDPBF0t0#NuUIF`kv z4Se8S7do)mLpD-44Gj+G;}zSBOx^L$W7quSU8@0L$l?F-;J^96ixL9#Ne#&U; zQ%BE#^5_lE>;C(Sqt_j=agpzQN`b>1Hdere&VGT~;nW5+< z$>WPj$n1dxIZTH$y9)uR*bh_#$)1e_|CYSapgkAENDMEHY7G0@y9nS0Q@{Q$0Jt$; z&CQ&Eu3V*%4_tdI7}I78&r|eROsv{~97du+?l$lj&psd&b{{7OA9vu(pMDVEnK)77 zFgwB9!_NM80#=Pv9WKAY;Ga3B*xYQnW1PsLo#KiVBkePvMPp>HiB&6DU1MV5w?Ywr z{FkLRP$7d2fr(x?oLN7^%Vj~wb^vGe(v>wXYL{oZr)7ksE{?m>nA+|UIx@PV(}xUhZoYQ6(M`HAF0J8|v* zEH3n%h20;=WCo6Bc%nE7Ve7(Q1=&lN6@$PmtOHal8wuzoVGB$whKp2#k{)TO(07jB z!986Vsg@!W>SzXElpO1fYRp7V@tXZOjLP#g#N6_6uV$Jqh0iXb`|y9T4j6J8i%=alWv|8 z#Vg}NdrQP3KUsWfiQ=Cs7n<>c8W%d3YtLs}V@>PYm0_-jo0Azdz`K7ilvr%7;?qW9 zB%l-!h1Uuj3M0{#Mf5ToiJcidjMVd=Qy6J})Cs^^oSdY#0s!;b;DCHPfQtztjwrXT zRVv*z8Sbyu0e6xn4xSs7xyO=YoQT3Gg6Ai5(gYfDK{$cn>AT|0Z?6`PxRGDF4CTd$^EAsb1ICZZIg6@nM|B;7cN zkrW)BBcXrK3;<`*L;x34r5(Ub$8Ep4^g74O0i5CI+~bhb<5W9Q8oK_#W}ESG1}=1- zF_Sv_$%}&v&s~Vx729)R_uHQS!egKEECBe_#VxP;xtE{z)ODdE2OstoCp_u+|L_aY zpU+w-kbXlwXXio(Rw?@ugtJ-}7uxS3NXYFmI7sOFC2)#(7{)jk+Q-zm(Ae)Eg)(Nf z>eIO*htmYv`o#OordBDF+$Jv>@13-YPApCvM!Z58iH>OYM#|Yp*I$2q2qP(&Bro(h z8%a9h%r}KC303UZr0V+tz|>46TKO)vpHccw2qSUHcY3BvJSEv^&C6csP@ccYg|0pC zK#|v4t^~%gpg390E4HI1TPW=Qu3tIs*AD%qE$dEx*0Y|qVZ(+up7ZQbk%PBUHZbIH z<|qI3xX_|E{LFBnYZW=1cgUyKPG)e8AQaqJNX5sylZ?45KqW*Ljn`~8 zp=W>i&>itW?mdg=+8+8 z7=V$tEpEBvDJSnaY}+TF`f3~jzjE_aj>9&OgEx4g}>VLU!|;v@XZt|y<&!MHA*Fy0(<)zL>`0DlW(a55aj zlR0bQ`8Wcv7jIk(hG9JR;5_jWE}0);KR)FKcE021&*5pjbzvLs=Z-^<#r`iI`s$DT z%Gn_foLir`-d-zG7m^uhl90C-0GvBNFowibd1T`vs}ICUWFw&s68@rND6)}Y0AGCZ z#mGiNAK-T%e)soA-~Ha`JH4cR>_?*?0>(hB4B&AXNdOLc3q_A~jmRM`==Hzx8y~pp zs=e1bzSUav%+>hFxC-X zNHLwzp9+?YPaO3h-oFvEXFF#n<_BjL-k4_}ddkgxubL(Hn8Nn88?I)gj`x>sN+P!1%BeL4R_+xouga0A6>1s zjIQOUa%u1cc8+%G2p)S-Cp+%P3GiDu4V`npXZJOST;e)4-;LkG9^H`s`1@`g-L+$MwT{WbsEW$N^2lleq&9rG$-6e(!jE`NeI0IC?BN$R zm1!CBAbwcCMQRJ?XX1AoZ#_hnt+89N+w=QA_0-ETNw7xTa>U_Swz#HXmBBjl(85lx zR#^D3=wL1T=F`9N&!c}vnjP}(k#Y;47P_E({iLt6GzYko-}=_KAbug7F$SWTxw_au z-X1fD|Kg0l_`%D5@WWUC@V{RCU;oP+{tMne-tptHwVCr78eV8v*jPgT@gM&Y$$;NX zFMNvh;O`GFc3Qz1-}$N+dxM!`7|GMMxgUv_RKFDmc7<*1fix$FDCW3vcyrmN9Kahg z2QuV=f43b^Vt9CadwA@cp33SdwZwVgAk<8~Yr{MHjdy5gKX^Ace0pKh_s@QBkJWux zR?1yTd|aB2Ka`T$i(v$L=>5ebU=Lx> zU*|K$O2G@%4H@?A(Ou$o@kjaV{seVHx|W~)4{<@%%E-YwKKJmPRl=&zDEba-veU7Q z|Gxi>hyLV(Kl$eCzVVlr{N-0(_LYxb^--kL0?eqEfh;BD*aG2jbg{=6%U2;|7k^RH z1|XjhIfC3T)(Rqk5oJbB@1?^FqW{6+b;tDU`r*}8sJ!ykGVA$nP$@%7rxPcri&CSb zmW4Y7F{p{|Q=iWd%fFUb^=0IJ54;vW`_P3oh>m`Hw*b@sboZ6*{UZ-ve)8S4v~!9~ zPvRw)51JNy_B%&6NuCq2_}_Gfg(vN_wfVTSs711xN3XMnA%v!J#2Uw3plbFZq(+ zeEK)PzvKHqxbg>o_1eDz!oP6l7g$LS;u;ckipT-~-tSy`;saM+{H8O`xaXpa?tk6u z_T7I!OlqtI_zT2?sEKV#{~r%8tQIJIg<>6850ITt!OP-1{(9*8S5E8a1qlqxBxFLv zu%TfFRaW2}=J!5Vknp~2m{rr$7k73acWU-*A6=p~*zqQnsmI&CPapk>kMH>CLpvUP zppq|Lwp1H>{Lsr~26|9>D=M`FO%Q z2hBp)OR--c*({l?^qP*YF}mc@0eM3(p?Nu`SyAUlK>`Sg-%;sawarhDCLjZ3;+FOdO<4=B9{XB{PWM}e;vIz$b;9O?^WY~ zOqdM>CzV@>(@*@uyEF;h>~YD!XQPMe3prIIzrPX=JfP->bQ?|-rg!)P@y3I%!r=F9 z>q=qcB)|@Cb6lnOG1m!Y;4>(x;qFH9RKR|JKfBa=o4slSG|rYe;r>Zw8DZS(HD@HTwEXIm}bqKAuQR zx;X>>ci;V_cLn`|_ZF~}u%!?dKH24{6Sh-Q`n&yqzYF(OFROnjCKdra&PEC<>pQj` z4~_SZ`fJy&UDr>)K3#bU_JBINnLV`qLBCVJqzzAZX;`ZFXsHgXohyF*fA_i>iLVgA zZgJ^}4l2+)f~IZHV~=DMC+>S+v|AUxz4E&9$}6+I@bT>*_0>1@Xy!F?K27^(ZV&N# zv!M25@#V1L+@(HGx08mXq!0nTa?TAthl z4UFHS&{KzNJ??2|!M)BF)-oZebAm~cwo_dy%1jM&^}*Lo9SR$-Jmlr>C)3w;N`T^E z1AoUws4CPEnUJ)^Gv2^$?}+{`ziVT@L6R2UQ*mHy@7=lm(?6XT0Ia!-qc|ZC1pdq_D?F#_~7ojUTIW0Vvw8xhr zyQRCO9`nDlfH)7`{i%<_(oFpsZ&|-oj44ZdN&6$Oyg`$AaD7c6EmeHn;9C(qxP|aD zE1t691tUApX)cEnl5*S|hIiY{9^Y0OsM|-EWzEVJylEk`q(`V(E-kv4qGiPKeO#@v z=({e2Ju2u&6j^);3SiI-xvpyuT?Wxu2-#e((!tA$P z)Pf=vT3&kIH=fdki*Mv5XUQBc7Aq`QH(Nn=yP=EsO&fMF+7t`{9huLIw`E8Fe21sM z7dA^+F1sJycm+j*UmAbZ-D4p@sMA(zfqW47BD|!KM!12zYMZo6x^F@Cl{n=#Ax#WZ z(-z=|iqMY@8u(+{?j*3^lukc6|1)#W(MKyUYR*ubC%ex7@)s}t{Jvv86(W<E`YIY;d0^Ax_jHZe6{j3aS5rZ z7k#DW{=41r%_*uO|s!UZM)tRnSUH<8FJv#>R6{VS+e5_C5+01vVb~&SzIO&gV z`v~1Ojh7rY584Z~5^Zxf(=P8d`0n>$d~V%vfop3HJYI9}65K2EObfZo>TDARx#32U zK9c_wO(}=Ldm&X>)*}xqgb!}vDN_^M2w*tCT$lrg56=CLMR=xIV zmlTDw0s{;tNxn%y?S~EgG0ZCRANg1FEUXlo4V(%(0lx#=C#KyV|B9xyvx0(65tvvK z=2@i|MJZUD7`$^3O)g#}T|G$CU-d3p)Y1Z6RSpY;4t3$;4Op{0#@1i>Wqzv8lPMC# z99M!Cq3BPR8nwFygDob{1-^)A`754uxei5ZV#l=7CuLiw1QxApc|i%%X$0T0gO=Jd z6=v$&_$$l{_M?E46;D~3e|SCip2xm+=^w-B4bE}AeOmaMCrRsOQXneG4T#6gd*tH6 z%_==ztOammFmBnaa69CRbiF-mQyhaY-gWW2R(31)9K>&x{Kw?IWI>S;Vq9e|2w*M$1Mt5Sl$fDkj|JPr8%=)kn_X$BWHQ^`buyb~0|ocaHgv+`=y9q#<*4psaJ@DIbZOSb;Ku zQ~khE@B8rid!eO2c;WqfF8#otUjNOnUi_8M?f9(Td(Yc*-^usxJMYt9zWnz-bNRzy zlD+5Jdv;y?=C@sTTampKf}c)(p{fbx+^;1te#1o6e8uI6ni?W`&MwX~I4l+dlBni^ zaVgBWA(j(4bOLW!xEvb3?zT9pIS_>nhyfa$WV~z~owx0f;{i_U7q0mSF`!tNf@fH^ zsL2ONTV!NR{uOUWK5A8{lt3QGfk6^<8`$E@`vgT*qtyvHrPJ32MVzJRD&$3L$87^X z54x;e!>KL6)Kz#6zW<_w-+0vqW(!O?w|3eybM9ew|Ae_{l-GT{OfFSer10jpzrS?M z7yX{lm#Fk0O$9tWEDc~0U)H~aA4q3KJJzqd``v54`iUz)hMsTe9mS*(kT=0^#qxn9 zHEe*?iI2c+#b5jvy{XV#65D7W2L>nyf2n`ryI56*lRu-dWEfYB!T%eBaXxM9E(O+?^Jj}5 zDXj~X3Oav(2U#tbo(y%JIShENYx2WomBHRiaL{C>#@()?-#YUiDOCJmh*mu;FbCYb zn(ks&cpkpeWiyJgJ-y;ih0Zf*C4}8j;Ye5)(4DXZDtupC!riWWTN9~2)tDvSM z?+j1`AkiT5^{;>ZTi^Ot$D2@-P1a43iuC#r}o;U+Z671+X75{_S@> zqG=~QaC*J&@XN5ExSF$LFhjEJ4fZx8Jy}e-%yBlNJ0LYo3=NNy>FuUEy4BYie zIx$*9cBv_k{+AGQ!ikX(9^``yMv*r?Gg%PYws00uVNAxU0Xs(zX6-$&61FEtu^dz( z3YDyYB{xPg_5$nM6THWchK*OeX8pD9h;r|#a-@CE@Wi%v7RPI706VWEGwP&Ky1PfG zjVq;RBsf!oOJyXAvci&FlbDXpN)408R&eqyq<<|rhB}y9W+Et_xef~JpV3T zT^R`w4K_Tq$RJuq2>b?jVvsPI;Wen!KO{}WTZYqSrYsWaESN63p64ENEFKaUX?OjH znT_Y?dx(%hi|D2i49gcBvh~boZ^d+RLFzX;tnp#ZE6QHR>*N9;jA=)BsNK^?2zUj z1(4zRV|x*|6yps0-+Jq5AC}Va4=S()?2QIyW}(qNTRrDO1H2 zbJLAyH&3K<@qKY01it83UgLh2;%eoYYOcF-iqf^I+34CtF=^bhR)REg%TW}UUBf*A{8X9TN!e>y8-;*hWmp*IfoplJ?DGe*Q&2L zzm5Ev5DS2CCaV9u@^S*1zl7WCuDcF7RcD=b7TF-Uw|K+R5JIV$LFp1qzSbbUG2`jM zDvGaA0-;zxHDo?G$Tc4Ttzv}PLj6lY!iN~7KHWJDNEdyWB(9HOIbev$mm!Ze$e;_H z*-fJhaL$`Ho+WmtC%uOCC8>wI!-~*JV98JMLhc`ON5b5tuB!)@r?t!Na4X${O<62^ z>BtF>CzAo4C5Ia-_oMh2zOaQ8z}ksQRB!{jByrd4eT%yt{CxHUN%e=c5u|iDlRi^t zoM03}CR$KC&O@&<+&DbxaDTeBd3Yhw`Z{|7cmdnom1;0`U4_z2^H3bNOgE*EaT z1n8bBB9aYMe;D-4Nx6`n?|HUXX5lfZ)^b5}?GH8U;Mt--T<@S->zo;9_U!8|Tebjo z0yfGgT$*0nXT2P^dIeZsV`Sz`?$wMB9(6Hug2z?xa5dGRatJr{?(S=8VUZ4nb%gUL zn>-;kP0N8KlYDIOs^WlH2)6dRhLa`Tfm9U2MW0R<;1S7g54@Tn zlRFh!6i_BTDE;5nV-@cy7L*E_=QIHr@#|foSd_{9eOwW7E1&b6llj1Q*eak)l8Zkm z#@UDs_}47-+A-7q`rUnLyD3FW^&A8@%7b(!n4Vcc7-{UGqCUv;koQu)O!=z(|L|ldUz2c;n1Ny+N z0@=iNb+RO{;x!AehW^DB;l;mxR#*}8^#;G@jWOqR;@{!C#Q~9VL4_sM{c*2bacL+9 z90nEoUARcJ;|+RQ8m(c3QLmc|$(^1isuU5X!iU zZxd1@1C=#I1cbn%4n;Ria0KWcdR)pKW^!H>XFpd2Wal#NG?Q41-8x;T!2DDJiEwEu zx)uuVcIfTz8$9P1_W>kiQ`WfmMM>^g?FKoPn~w6?KMq_GX|uWtUf|dZ9kh10f%ym@0mYUAvk2ch-Ap(Olb9*;A zF3EI%XZE`ykRwldLDkiTSb{4>!ZV$m8t_B{7#hLZ$Gn&}XVEq2H6J~g;e`+!vAig( z)Tb_PD<)&)TN>_m^4srr3pNz86Y)4aog85bRkc*qE)jL(N6>dd-2gw}XDeOfW$i632 zDTWdzWgp+&r?CQ%C4qsTF?6{1&{g{FOJ*2R05P`FiHY_m0tBxhP4H%*CZB zpgs6z_|cHVv3syWANJ68(F^4u$8soNl*_u{G;;G>Q%6BX&eR}vry0Lfi%5`8d~7)> zeEYC)hPj(TUgLhxV*@|FFJD=v(_*Hsj@8zrmxZ}NG6A= zi8VqGF%&aVojNyI!s!`F_F>h~0VFo{zuqTTZ<8dqfbC^LY!D!Uw(Z^)leD{wfmJv0 zdJ4dKMe@v0^4=GhE?zKF^`=~@EU*{WtcJH~D`w74;^FR?XE|S}_ zJ>}kYZ?_c!OZgcE(*Jb0VJW+Of+Fn-ry_7cg_&N^m$DKUgtnjIwuP5yKFh^eTYp1@ zHcT+r8p7l5gyO~v`3{6)O()fjD%PM5?+KA3`1cb-eYY#+(8afIcm;1q5p^L(5~{}4 zR`+b{I}!R;Bf$m#nNC|i`swJ=Qm{5d9&Alf$#!*0h1pjOt|+A@M`A(}zmm)3$>+Ba z_QaH$Cz)}@FVehN5(vDGtmuXd32AphrOIljvl?m07{zT*c1H_c?dMXoJSE3qVd*Nu zOwQ#Kiu?U7OD$;5xvaE`4Z{BF-C(;FK^)BQy?K)0lHC~;4B&w@etTFw{gM?%nu|$6+aZN-N1J(9Ug#vK zI@A3xCTt#;qRza_HD$akxCegkEEJ|#a@9z-1D;BbaJbJb6YByykMCOjt^Gu`4%-#n z@2MT=TbrYFHN!q=t$u0lD5|+$9YVTSVNv!dK)z|kQu5iqn6&^eoRAZ(hj`f1^t|2Y zkC^TfNUxeFNEHjRYlHg{%~E`uvs%8`nzYY3Rmz1Jse-ZmE1e&F+Cg z=skJy8=S_wLYWd3^1r#SmU7_{=kMt4UQ`$}GF_*6(rJ{7LilvaCy8cGL>7r6rv!DG`L%lnFU9n&9@EH79S$S01HqDl-iZ^uK zTKgROu>_G{cx0z0WZxOw> z+bdN6oTqk55Wj#cMXsRB*Y?4Gy=9dW`+#zZ7vT4V`p4`_e)W<4DUW;B8p4DjY zF(1rl@44prdNRGnJAi~N4c$1%^OqibPSE%*(;&oSFXJu9;h$R;F2WQMZ9`9mj$d|r zDBjsxicF3rWYzJ)-cnT^oKO(cCrX&L;Yy39b*`VT0|x8~y0`D&E7Z^wkwZ7rQxrVm z%v6}2-hk5|y=*RSfb%rC`Y*GKUCM|JNX}h+YqHMoHaP<7R9F*Eg912JbH8XF)_y%u zfQluDa^&9wB`PNn{Qn{3QFH_AG)7tfe&Pb}r0 z+ob4SHdum3x)@y0uZT0Nit5?e4o}>xz00=GOL>^3HJ*Pafz_yrBURt?lIf8FI1aHH_?f!@&JEa&| z%=TB7z#+csbH;flxkG?2h;Ra-+y@$|iepFfEv!35!LGTQGY4awX|N_-?ALlG7V#CF zBQo{9@psYB$5nL{*1W9cx0j;a4A#pC6@B_ycMY+`qL(`t$PRuEN%dT7(iNM0GMRlU zV)|J}pNVJb`j~e%3wp52}3XZ((YH^G}_@I zN@6B!ULht~j4%aD%46eMJbFwRx>a^J7V*&FwB~XmngBz))578#s!tWUmQu|ihv|-? z&g`pFuGdw>t!@rgfHq4v*!(Cg`<=`{Wc|xirvvNReV+>~6vNFqoE5qg1)n}`t!%ri z9cwK?B4pC!#KvMG2p?pouW*H7`4a$L#)MHTHz#I< zdEek0G|GBrY)E4&+FZO3wV-IAf8|P)*_(tV(EW!I|IU^TRFR}rbra~afjtOXGBO82me#C zEm-j!icdOgWx4HTZa9+telu6ZV4R28sn2zqXAHAT)N|$LGuCRw^Hf2cpB{8kpkHl- zYvI6f_cH%HKgUeHAY!wH<#*dIy+^ zJY&a`f1UYBAwC}-R`A?rUPs1TE#98%FuMmXI9Bt72`fUb91yCyXF(FkzaFToIZ#5K zz-&AQC-x{84Jq0u#V~26af?sqT};FEKts4{^=3#R)b;YLz@qcBsBIRnJfpE#Zy>Kh zt|k>rzy>a7@liQ3L#&%9>AW$KoK*1xU}G1XBD1pis&Tfy`rud4t~pd7 zRpL&O;?9pYrDZOcvn!@g(^l+qgO5DLAsW{4>_y9uK0nZGOScDjU$RiTw5@Clz1A7@ z;WinmnBmx%$=L!gwxpVrm31d@7*{O9JVacsotc4=BPD!ta84X`)QLxJIMWrC;8ia| zw+H{O;u2E}!RN&#^r7n1 z{u|!t(gNyEb_8&p^>(K<%}v^w_u>gfSoww#7)Tv~(_SkZUUb;jBIoV~&)jKRl||oY zo;g~nvnJmth2;d#R4O2PNsH0%+L779&SU1;(J)q_i%cvRxpWM6c5~m;t;kPk_zZ|! zy7GCPV335GMj>ckj6G)RS-5LkN_mJi=83Nw+e-#QO&Q5_ob1bSJFWN#8{}ShF*<`M zH>ny5&3`vEz9|*Noj7254%na5=;h%n+D%>_v6hJD#_f5BzEX2B=gNg>zq^sL+1$|E zi_a9vIf(F|aqz1a7q=h}K@Nyw+EYyw=Q5@_JeJ#|)hq?i44E{PpKjk-Bx!|t7{f?b z8znl5a}iw~eev?Rd%-0rcL;Z5I2hNpM3Jk-i64ealWxdQx>bhrj4(xB@*OS)sKvIq!U7$ zwxPHuHY7-brWx$vd{ITFlc!__U7)DXyAv*CkIXMiMl5uk>rT|pHM38_Kse#BbC|S1 zhblPFp*&iRJ5g&J%_q90RCuZAN6EE3aT-|iU-F!@4>@GB7L;1=$(mE$sVTMOnBp1~ zH1_b=G+msQQ1pR&<0T*#ja~5m$>=BA@E#GltA@XG3@i+&wP*?tC3qP!qqbP3!~+~s zP{S(k+@9ds4vsMu>k0WGJ`Ld2R}7`*-)^((!h9>%KW?PW)`%jc@n=If*n=9+GcOYC zJ0=!1u7+$0nfH0pPcSnqu}E6LU;L`#A|C22CVz);KdunDhecOPsOaq>;_cJwI;}P3 zDux1OVL2!o-norsek7rOb*2`z_2inKmH|vxmg?8)ouzBQd=bD!gcl?Hp?Xfx`m!Iv z#gTJ~a$2u`0{ZPy8(x}yW3Fx0R{vbCxX4f-ryBX~SkSjU_guKsT$yhtoHexK0F8N6 zdYu)n8kM~u{NSGlSfJH=Il;gkuGLZNs#20{7|PhrRBm1FW&eBI0pK$!8@;uk*71*A z+=i6`Z{@5tmepGPqqasCS!hz%14uNt-F(8Jt{dJx#5+MAo=5#VqA~Zy~`@ zswm2yZyDV+e~dS$Phmm9kwAqP0L@F*U{(Ozpr zT9cW6{_c7WGGWu`yw^VYEW9yMP!7QpAsQi;VDoGr3T4&s*=}k>9ovoMnQzr0s;wzA zE#$yks0I0R0oUxAug$<9^Sum1rqR(jaQ7z!a!?z=7k>yyi+D^?y z{KBVQz(l3mLXZpOhr3V3%#9Xb$a1?Tuk(=o4%lC8LG0aaM8jC|TMN_n3T|^;q!_}< zYuQX%a&RcN713O}FgOB>l>5-9KAW{Q`!QE?Zm4Xzz_pX81D_P1LV1Q){L)`Mlbi^s z_n5-D-av!tG^vRN37jj-v`JSXSW=wp4KIIKab3n1lLU$~Ss^=R1z=<2=sb6x70*p! zlAL-fBcw=D7SS5z>m;a@noZVE}V_fuI zi7-bsxCpIcH;E8m$vRHJd=OlDYK8lgJBdnLaShXT`#|8$k~Sxk&a_TzYmF1I+NCU< z*O5CR2lj+`@xLWWl3 zfwk&C9b9ommo?rqUE-Q*AsJxiGnEU?d%hP9%S>$ar!zCp#G#cntYQXoO#&CI3%6aK z)AcH<#GzUdr7Y4KzLH5YgFp40N9KO8aJ!3+zDA;U09E#hd0$7P7RlMO|<5u)P`zM>gQh|$s zAl(IBuFWe&Q3ai;&=$R|dB%FRsyC{On<^qF+aWm%ta$7BQD120vcMlGCJAI^zQ}zqD#=Cfci_j@gpAW=#%+7HZY77L zSd%rd7k$j&VBZmBOO6BORs%H?piRtb6FE{_z;X_7n}g|c2`(8@efl8z84MycI@Hzp zm5uCtXSvn76W4m;)=oP}ywC(QOoMhrs^;j`4fM${vjVn$ZscLKY3J%?swV)}NMKXt zT0S|IEc5%@Mo8$Z=3a5PfW)49a#RUb@|4 z<~1kF{0^5IfjOiugd_x=q15sQufC`uW)(GrW*Z6f<9y&6S1T0hDmHQTdT}|sGDPis zMUhfh)Lz13*>-?A$rcMu?jKilgBMdWoJdq;0@WtBZkGa*^Us@NhJ!A)Na4t(8`~y8 zO%AJ&5cTRJ?|oQYZlr51Se`Wi2fj*eZm{%c&2QpQE$G93=L0Ki{?)VAHFjo|xEdR$ zEri{hIMd0R?dn>~l~E&NR6}oYh!;^-Ps1n{8P3t~nW+w;2c0e%gc;X(i%rto@!r5Tno|9d`qI9vLKU^VwJA(hA)b9KwkfID|%+G9A6a&knIR$12Qb{EvS~OjJ)^gF> zlsF*`URPeNwT9^k9?EL7-UG+o!S4y^ZNhy`Vn`Rr$(&&+J#z8I2oyWnBd83;KF(pG z40(mbFoVOH(UBEn)dpz$w6k1oyJU*Vx*ny3PyY1NPiKq`066KSlfZrfu#tR%_dKzd zITca)IG0=hv61%RllEB$pL62jXCvtk7%mdmv*Wf};lO-vz96nZgBwfWndV0=linBL zP!{~S)ki${kYi6d>Znb_>&PQdIdwYqFEp?!iriWrc1;Osn*g;k4n=l!BUT*vEscOa zM3BTzFzILZ&I)Us8?nk~Xj{nPsX2gaCPvVt8tQ$~r%-$ZT`jv)Pt{B~{P2?zCIFK0 z_Ui48*0>o7jr3jm+cuRtfVOKeWyzn_S{2qTG9XfanHGZ}2g6sOK8!rl9h9h6giDnPmWY z&Wy+4PAC$myI{kUUJaw4^|7RB%#(=I@O~|eo0{v|*634tP8XG*Mx|eO%LU@=Oy2yQ zg;(aOAzbrb=A6oW>vB|crUVGfM3Ht@!-*%j=QyV~pn+;#$-05Yd4bLM(+!^kn6jiHq6Mg=ZcQSU! z{PH7&Ufwm=+KQFHnF72xQ)~X7TIUpBFPKM>i@&Z+pK1v z^`hOrDbc)UDu8gav2`fjZ}34<)ki@XepGZx)^1dwAvS8i1e0wg0Ctv4E;@yNxhIxt zA&oPkBOM9%gfX^Jca^-|9Nny`Z0(wu8HQ4bb~fo{qr3uPDxkClGS~4&?GFGL z_mQWr4A`1lTPvy2W-R4imHQ*aa9)vK#V1{CNIjEk8s>^GVGR{v z9@j;1E6y~$i@jPKinEWD8u0~qJJmO*N@+fC&6CUctw*LMxT z?!Im$71dnjwd}E6oiwblZG&QF_bspNS5*ERRzP_A?gV`y$t8ATaz2@GOYsw|*)~PwaGx91dRpojid1z>ar}h}f&GUb zdTPyLEUFFe&Y7nef^#j}3E~*ewk?uDC6qJG*Zgr99Hgj@kvR9kLU#wrzP)Vdo&QspFEzi9dv6Q3SA7h?+ z13`HD441Q7+S#~3&0yU$s#`A0Z?6WzT{1)MrgNE5syg0Ku|nm?Ov%XA1Lv%^fxkP3 zo3dpV*>L8AEQbDhH(4>PJ;UaVYBn_I6%c^t>@2e^0(m3M7%H=dGX3+co>}hIsJylH zz3n`g&XQYQ&#Xt)euA|OoNVQVphm4%gIw{&cE^y5&|BeG4<&1sWyVjtn$Tw^l?a%joN+sT>lKQli>JSR=?Kp%-a6Cq7jb}*SV`VU9{nJj|Sns zz~3hSL8G&4uy$m-&ht3kTfX8bSEJ6BM|XdD;kn2OK_FmLc$Jz$Wp7!nRc~=-`*`=O z6&tV1x3?_na_$1(a1aKQq{wCu2k{jU1qN#XZe(-@j&x2x@LZQ=DZt@q#iHUN2s#g- zMl*ds_$3CiYkJW<(5-bnojC*Y0tPod-Z&+uYaVjQR?KgB@Y#q6KB{Hu`MD-TcE;uy zOfHuxo zz$Xb|_V&uvX4lL~j8o8l9$&q?f&ACqV5!wDZBz>^GqH*Vp8*mUYAdR^bDD_Z7VNYb zM!RfRt-UhW6lx>=X9S`U%A}U&ZQWGVOgv-<=xnq5KoqjN&dp+{c@BGoV_PVZkVUs?ok zW4$b<6U|v-UNzt5Va$6Kgko-L+luL8*L`!w`E%Kpm95$6>NYX+=VH+p+9Cvs(MEIg47axE|9~MUEPD0}oEnRZ^w02(my98fgY|Bf};%DWB)< z0rXk{ko>!$$XQ2}Ao6z094^ z=2^m)8)M4_D00j;7*;uSG_xS-JZW=93@f{41sHCtEunjGZBB-aky^w%-@wt#vK2LR zSC)g!F4*34W=AYn z2zmE{nx8z_2%|vvnV+suyb+;fR8d1-nKqSsC^zOhA7s~R$S}Nu*nO^JDhJ8NzR&pl z==D5JeX+JA=lDl$UbeFib8=;VQkgH&NFnya&gmwd%2Dkj*t`SE;%wMEp6L->hB>mh zVZ%%3WD~B~;4D^I@?wVb2T@VfX4j-g z(L@X`F0xPYmoQ!dyQpT!)nbh8BkS$~_DE(#Xcup6zzO%l7ru}+(~&fidk)W(Q8lXI z%3MLA;YK@@JwJfM{8?N)zU%F1ukFTH$?gsa59jrd8}HE?R?|V7a|vD^Hx1G-RYTVHBWYa?uRx%Js5Xj+rmrm28#}> zSP$JZSp1N$jNwr8V1N80#dgP8#MP>i&hO{*axpa|=Z=3KnsVAgF|~W#;CnWQvoB2N z6+mm$mOz?Wmh$Y41w3HrhG?+6igmeQ{UW5KWq5yz1h@i|IgGMK=0`7XBh#&Eu%UW5 z$gw0^sa^u|u9=VBc6HR;6WLv)z@yk&MF)wRq|L16wOk3@sEk*n$A-GCH3#7eOlvQ1 z8fyLKNzx#kx;wMcScel>*`SSjpv7Fb&><|BLyaYMvee}b#oYvYYr$1_n%5c>h-cpr z%kJC`4XkH638z`LWAcd;Usmj)Z7XbTsa{-P0v81vfGz-xstISD(RpG>N1+K&({$!p zk81hYH5aj0z;Cn;kOVHq4rdyHp#t%omDP$swVe9@Pv?}s1E?k4Ea2z zLpQmV)qx8Y=7i)?O+oKU>5tB<@n*x>HyY0ee{$#rSdS=>`AA~}Cja^V4?U_Xbx5Ft9-s5+o< z%xM0yhAU7zXErOUC1;1^q1qXSW`#2~M#*9Q6^v`F@!WpZ^-L!l*E~aw^t9Uhv}cSv z2_d!w!x)q=4`}PD*9!WCO76A5o)q0sF^j5uF4pNi&1wLiS$MRuCemJTK89Nmp`E}A zre&?3YhL~yM_>o8?)+gSH*`bkY*(^IIUQ_fp5)3(inK}dc}A|lyV%GU%*}7zZMIxZ zCio0za&a;RZKgE{bsFe>`M=xVIk%p5I=LJTerRa$GqYBKb0PDZ!fu*1AzYNeA?Loh zur|`6HVwIxjGwjR;q9)sjZ!Bwg@JQ;_p`ilU@i=m2C6-l8iB5$?m1FMjRH>6Fz27& zf$3H(u#%mqGy8+gQxIomeRPV!&w1Ru`?F3Lo3PZDEv8;^S|4}ZnaipQG*4ns(bVtK zNH?C<)}ll1dk6>>`55z5)u#QwViHw5U?D+OTl?m3BDG=#e$x;z>xn%RI$GN;ucTsE cp>e|hKWL~e-JYzA-v9sr07*qoM6N<$f^TQG=l}o! diff --git a/doc/manual/soneup.png b/doc/manual/soneup.png deleted file mode 100644 index f9f869f0c33f06c8b5bf0e2332deb0f32116856e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1488 zcmd^8|8Em@7=HIfZmd8FMQb>v$dMFMW81 zP@usEYf_-YDkUt~kQyebQn1kiQ#xp1hJuwfOC=B*>0ktK7}31m_&0p>c|Y$DZ{Fv9 zlIMB%banER8)q~Ez~qkh))iWvrRD5~I_;mh$#O|6M0dyXHsV@?VYHO-7wjPuT5tL?lVlU@+)(I)Wf*#za~4MiZeof?%`o zR*JQdm`*=VCLi|pR-@5MI9v_}OFm!0?ar%ePEoS5oROrIAoTHkf@OPcwwTo#rRlK6 z5~8Sp$>b+VkJ0Eh7*xI9sna2UD0!U^a%C2&Mv$ zlfKbjcO|BlBT6wO4+g}%U GDL0>ValI-VQ*2=e6O^oek@g4{l{Y&$N@PuThGc1@ z)nc$v`q9zRN~KaRmrJEmp-{-@^SN9uo6V-v=~OC}OePbFL_8jkMx&8PBoqn-0s+6@ z@9}tCE|;pRilWG}EJ>0e2t3bo9A~rH7>1!~+H5vc6y-seYt-p1I~;?OoE5}A-X3SU z2*U=6U1-Q!@LqE+TCf{o&=q|dLo+>%ojWQ7+c8!uQ{-omhEM0d3$ z6*F9ajPCQ9VzME~5pD};T4Sk%nGD8a=<}h&fh>zA69S9^+yp2Bk(DS!k(3?KyH z2heQf1dstV$uzwx70l%@nZ$4y-EI^`WEjmw8jSWd7!5-M(53?bDu6h?w_3tt26Hh? z`LI{Uunqm>L$|T&(wCk3qC=OLh<*XmJoIr-d14VUg&0Ou5qU%k5fUuK8Hmsjq%?Dy zIhtfB15N6*6;G{X1E2vY03(2I93{?S#g0C06bE524lx&~2~{0=m>SY<;IHl#olm)q z^ZTC#%)NY)0jP0wv@Tic9okzM?hG_dC+^RwhI@Xp6UB=h#0R^ZcHL7j`|*Ejzbh&cfD(=lTAg+A}|IY_64~ z+uyvgZO-dyw(iA0wRGLt{mYbrnRAuK!&g4? zKM0M~&5qAIY8}4!sKI-%W%I3dIN`yQ6z{IyB_ro<+h&-oXO4DvH0@g z*3Wj{nYd$G%_obu>}^>c&@GJ-mTdUI@&s0kGHJf@gESF2+{xm diff --git a/doc/manual/spring1.png b/doc/manual/spring1.png deleted file mode 100644 index 8a222f378de25c9d0f2cb9cddbc3ae1a88460a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmW-gLCD)=7{?zsG;Z05Qbs<^AxaJ%1dSLWN(S+3I^#!V8D^M6VEI_k3OPi`AxOli z!4+2}haNh}Awq?S0egtjK@SCo_RvEa6$%z9vO^CQ3i}QN5gzjm-sgRJ4$trZ!vFt# zef^qt@%#(t0pQ}%JMH)C_r=qC_H2E(zrXW4z*)Hd?v1N;%hDuG5xTA;BEv9^MuQ|t zf*=Hm<#>u_35o_o<~5O1cm~Jg$7Ojk9PS2#ZJKVn-E|Z#gJAA?GuNHk_QbL(!x(8= zp(sOH&O~t_2r19^I4)t?m|;Si4jK)QqBA9lz zB_$E0fEQe@X)>%z(<0U2NRlR|MLN#Aqd{DxVczw#*y~4bFR&BOid-Xfbl*}trsC+5 zrHZB^0O$bN0JUYc zU)wFtW>}V(rWgchnkY$iifT-KYD~?j0rhkO-~pJYy1O;5COFHmig0LSDr3x?1oY0Q zHXUl^kaLT;Z@^fCk^1DHxI(NDQ$!C@L*x*lP#~9}FF=>8!`V~?M&cR*L)H>cq9g+d z02}}fK%P=^6}LJ@^(Zc2kwfN#S9sn(C)JTKBH}c<1oena_aw;lk@cUB3Hi ztJP|^;h?TJU%m8kp$Nk;5RqkBnx;vT zBnU#3IbNU`j-VJY6+xGHRbX*Ad|Z|%gTbcPTW8s--CoA=JPfD4Kk>Y=`$oM>wl+ zQs6kpQ5UQ9aT#w1;X3zMU2oBGW~ntz%yDc~p} zGh|j38A+f8p4x7=>-BoIS}m8$`FuW|PA8Mecsw2shgDUTWmyzOzu)imdfjff)9IvX znj}dSML`hwzVCUS<2bf$o2IGjx~6H0qR6r=iejVD;CVj6AlSBAE7zUb&e*h$bfd3o zU0F>XZ&)m+F^ojfJV`RdxX6b6_E9e>vZ&t<^2G1PUMF-?-;O;qa*e>&T9)b> zvaLy$D)v(^i>%Z)B3Er$lA{Zz!fO&6CteWRE#GuJ-Le(klvG`i)dpg?S=x({c0U)7 zVlH>+wnl^k)L!FqiK7wbImR)%E~+YW90F_sjsX?`Q-Co*1yBIw03Cn?AOvUuH~_U} zwO{KsP9|8Em}MA-Xjv%Bb&6_CeQHe2r~&nK3g81+r@EUZE=D-Xv5IlvV5VTgo`lRM zpjItv;gVCExNpKxha>IDKXHLrA!dj^qK?QTLZL!mhOP*0z7A(Y6Iq$3MV723ozqxzx>K*U!McBD^>FX=clxN}A zuetp3pFe*zfAEXH`0?H9^7$_gk00K7WB1!XK797>f7kB4{=@Cv51#%EsPE6e0@Rhe zpYHALHJh+g*K03b`h@=Hcer(S=ktHxdH&_69>KkfFgn=2_t*R1{8kIX{?+TvpY{&F F{2!`ufDr%y diff --git a/doc/manual/spring3.png b/doc/manual/spring3.png deleted file mode 100644 index c7b88b88af5c19c35fb11a0118655e793ad819e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1069 zcmW-gacCQL6vyA#^ki|%G|XFjLWWn!+MAp+9mfdU;jZ1ai{?si_2$kR-L>S8V@7w_ zIPZ^}JtWMa5d+3?Xv!jl8f?VOr6qr4I3ZwQod$^-Fv^5X>kQgKDTvS8;P-w%-XHJt z-jDD1U6_c7JGS?42Y?;pVEb(S;f^d)(cp3u$sZLy-_rKd86y-os8B>sjIf!u%wz9E*oMoF64FI(L(7cmsEn5 z%qAp87Xwj&mU(}eqj;7KGCqd(_IkZ;x7+D-+U<6;*=#f#^?JQlt5qtMa=BbA77K+! zE|<$@vzbgLl}g#RZCO?#k%-6Rx~^-QrmCuIw9M7I1%Mza!?f+DMSlF%Cxk&p~Q4a)kIkd ziBgak8IBJi8f$H(RTZu|Y{~RHsxK)J1_Q3v*luIBijIS(iP0$XJo^0z&;z&$&;n=x z)Bwr=1po&i1z-Uf05Jd+z?IC^tJ}qT9g9Uwr_nG_mXYIJ7r7YsxEPn=0^DjFKnIZT z_FZdZtBQ38%O>VkOoz~-)(vtk?(M|9t*ED=5Z5HAh)@#l&513LAl6K7*5Lk+%eJtg1Timl!2!I8k0Z0JPT}n>CZWv9s6jxz22TmOHg0BC$UjE75 zfm`DvPn{U6-~K+l)84!5{7aAgJW+jUXY89B_U4Bx$F@9v^u9i4`1ebA?DW46?wP-| zIsA9l+B`gdWPN$x;I>yrC!c@w?V*9sR^Gog-T(0?+K;7yJ?~w8V&L@s^9QCb99rD+ z>B9%aJ~zI+a%XO6ao@o^`!7z+jBT8Zym2ZsIDMnDP z;4*u4Y3k8)3)ANhUi|L*vuEqgnZi5vnHP3Pp80%^y7EWmzgg+X-0)s?Oq+H84CAAb Kk)@+A&i@ZH{KZiK diff --git a/doc/manual/spring4.png b/doc/manual/spring4.png deleted file mode 100644 index d16919266b9cae87bd09e1fbc6df909f78754606..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1045 zcmW-gafsV=6vrRjMvnE)>Iw^(Va1^J%(gJAhMJAwqTC$6j!tx0}Gy`vID38_{;|H_a47L-sim^ z-|z3x%r0qs-M#AoU_3rOHS5=yey43I%0kw_pSMNy$p zC=dt`1i^A)nhBC&B1nSFGg6cm7z*q4Th;1nxx7*=4)XbaHrsQYj%Bq>vuPNfrZrTx zCd&(wR1t(S&%4oRk!AA?lcVWOIGm;^nKA(zW#GMRKbZQFJ#l`>7!Fbqx8R8^H_S&}4C6nUQKIF4o6NF+kjw2i6MFq!P@ zdRx^zSy_-0B|$83LWbomhBfGjLWM<=j0Qt=AV3mcC0{RP7mDdh-Y#WRZrUt3M$XbQ zrs^27ttV2dm{bHk!Kq?Y5!h13$lFTBOxU`RRHB;1$UH4ZDJN~DEH!D$njtAFFUe6s zVmKj!Xsz_rZbMvj*##%;YN4!1SPb}DW3Pve2D&af4(d7z0*1o~Fa)>`&;@7#cmOqk z3V;ic14si{07(E1z?aO|YcRlO6RTCs=h3oIQIO+&7x@@Je2mZV0e*J|zywfk&t2(Z zw}DL;YYvt*%=4J0RxNTR73?R2T|LlJiA5Re5-f;!_QWn?4Ka^sB1(ufB2)w@aZq3( zOZ(=Gh%Cj?A(jgGBkov<2Venc01_Z@n^F>SkU+<8#Wu7{;HJQ=nC73WwJZJ~xE!B) zYHqrDTBm(sMt&(bE2l zFSCp5?>Y43Td#b3@ys)@_RNxfbZ2~G`^LF%zI6SLnRn2;ZP_pg_BubG1NSo1MvxM@~N&KRkELoL$Fy@QjZX7ByeBflMty?W!Hhflpc nc}+jJ<-Qs3@i)KT;;k9^>GcgKe&6c94dOd?O?@%>!omLmsSCM8 diff --git a/doc/manual/spring5.png b/doc/manual/spring5.png deleted file mode 100644 index 0eedf4a6fd0b2bdf117fddd71266533d22990b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1104 zcmW-hafsV=6vy8jyXeB`?W#nK*o|yftzOiCVJjGK>BzR;mbnar3)<6o6c;2&ZdXUp z>UCI0$I9qN#UQ;=M<-QJ4N}j7<#uSrqTTHD*vhD|xlXH8JhyWwJhQ?3y~q3Gecprb zm*2siJET=B?^+1}tF~^5?DFac@7;gvaxZ^A`0|4Q%VFo}?#*5sph(I`M59qeq-omk z_md<^5CqEyn2?VO5Izdza7f}9Aw*-PvQ#cF7K^=nzMIW<(&@Hsw=An+7>;M!(oTx@+_MTg)$723IvigouDYo?>BtDI7!9`LL&%;AY=duKm@>E2QRj; zUB^}xn=aN%SaYzNLpQZlw);h^>lmG!zL3$HDW#E=Yj)JNq_Qa%4Z+dF*%+Tzxun7- zUL+H{ge&ek)Q zmNHaZmlLt5sfuw$h(&o-Fd&Ub{?wns{;b?4{e!g$?OjKfOMdU%ls0)xEs`rxy;~dCQ;Ud!AWi z4t}!Y!UH4uYXhsVJ{34NHgRz2r1{~ssYjlF_wCIi>&K^=;Uia;O>P&Da#z<5J$`)e zTSJdtd3Dv^V0+@XFAkjBAGs}k@%_xvHEZXd+cM-k{phbD=cn(Pm^``fOZC1ZwL;{`duQq{n`#}M-uBIOFSG80Q{CLg&y3fF u@qLHS4$pnnnVVhl&tt+5wf{1It-LTVo!HptzV^Nb*t&T~Le$OWa2^&BmwnVNZ#+gyg%OOz2y7N zZ~NG4VW59jKL8Ajjts4J>T>5Tnl{zR-^|#w7+@-ltz0+kv|fs&T!bi!i0JWn+-^5X zk_168te5t?C@`svb|8>un55sIplQqNH9ejvMHz0l?sA1mGDHw6LC6Fl0SEv*0Cw9r(ZE&} z8)d8)v6{n*jpY;;ty}q6FKcvcy`9pU3AJv?HB+j@#G)bOBYalpY%Q1!v2i6}%1l)9 z>w+)D(=z83Sr5lh0l(W%yL!D|r_*V-+pSis(P-3awQ99msZ>g(Qn6Uf=kvK-E|bZm z)9F+yl}IEk%Q8(f8jVIG5nb0cO;c4>Q4~p%1VP|=J{SzLEXy#A&*!6QI*O4!vQ$c7Jv>Q-`(47 zVY7@?8;dc_s+bI->6tXBZp76NyP6@grVuA3C<##D@7;+_#3Eu6QAZRIX++3zkYORk zK%92W>Ejs>OS>5l>8!YCr62$UKm$+!a`1JKC&L00lzP}{oc15etAS8uZL4xmzjIWrCX2B-u300nHS~MugCW6*z)q8 z_pd)(nU#)?dyS_~FFajawnaLW=M?|| diff --git a/doc/manual/spring7.png b/doc/manual/spring7.png deleted file mode 100644 index 98c88bcd6a6a66e9f53313c8a361825abcd0dbbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmW-gL5SmI6vyArps^E|?hqts4pDL_nnM>+3l0V71n zxIu~*iBP3r4q2#}L(vL3ROq40F4#knf<+2jma@!B4;6Zt!yccRh3|bI-{JlK5B~r6 z&Cw0*^4?2(0C4&6y@L;`_vMRvZnwG*e*X4PfL%Cx|M+_KWoeSG6S}S=BEv8gMUf;) z5QHGH9ABqdqE3S$^P0#hJcGmGlYala*V}Zv>oi@pTFWS!2f@_yCaycS?U7}bhB45z zLQ#6MoQYyr5K^9Rb6mo*F~fv39Z-~4uQy53AqblwOoA`~GyoLp2P93RbiLoh!2JdMNN99a~ z)g?v|XpyIQuD;!F*X#9awOTHh^Z9%_olYi`@pwEO4$HFa_xnXrPQWPKBu$6`<-)06YNmLU*&o#Rw-EmJ#-BOl6Fj^MKy? z^;NUJaLB1e+&5sT!9aaFCoT|6#1zp()DSsDC=|#g=m^l_s&F<`fsr^$V8}}1X_RCD z0e}Ob0mutVuHst9sA|O-%yP(l@CwiS@4S3a?ZBh#O!;m4EHzhA7? zYWw?_POj`)qdXKfCwI&gsqbU;fJ8{Pe*epP&8ohWDZR z$`yF#^xn0@JGG-1yhpEn|1Z(1^=t6OwMRR>y?1}ufrmG@AGe=<{86O`hu3c${Pxbt G?f(Itw|^V} diff --git a/doc/manual/spring8.png b/doc/manual/spring8.png deleted file mode 100644 index ec552eebfe18578a7b21343ff6e27e563aec1312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 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 q9igzY7bv!?X#}ytH`deoJ diff --git a/doc/manual/tag.png b/doc/manual/tag.png deleted file mode 100644 index 72954b2b78795d80a37a0a893b56f8f128356c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8905 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 iAX#Jp$s$X0<^KU`XF|Tb)&_n60000zZQ# diff --git a/doc/manual/thanks.png b/doc/manual/thanks.png deleted file mode 100644 index 8cb0ad1159b40e4f1fca83255106e529a0c44699..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6951 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 diff --git a/doc/manual/thz.png b/doc/manual/thz.png deleted file mode 100644 index f4db3c59ce66c64eab6b0d2d2dfc33b6272e265c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23896 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 diff --git a/doc/manual/title.png b/doc/manual/title.png deleted file mode 100644 index e4ea963a95bc7af8d6d0491c526ea2a4c33c7055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34519 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 K@P!xlPyP>#8Qx6* diff --git a/doc/manual/toneup.png b/doc/manual/toneup.png deleted file mode 100644 index 425973294424925218d840cc94086c58b4a1172a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1487 zcmd^8@oy7#6n~>G2h>rekkd6--2G5Yk%N?YN{JVCBgZW4=5FH{7bs9oNsds-&2)MR zWz^7N!6r1O;9&~vhe`@gETKPCtP4oNW(=sLVO5(9w24DXLSRbFo;UstU%v1Aet3DG z_enmVcd)aAZ<^aY7XX^t*R^#Sb+M5xvrWc7XP0x-C`4cThPA})+13Tt7Ew-aoaub9 zu2%(^`*0>3TF&5y)k*s(hiJ2NBr)p7V-sD$*%~qj~693FSuCV$*>MYb+RIr zbKE7J9@gx-Y>jY)>I6e;tW+?ULtRHrL$4QE7VUNfr~}*uC<7D$@&Flt6o3v81qcBc zHu3|=0ET3SUbPw)3Ybn~EQYFzqKFJ*xX6Gpo&jTE7y!m}7(f9KXZB83u$;q!ju{Py zWQ@5nWP7BNlL1TBZz+4tMTxj1K$eGL?io)kBW4g|hzcT)NFhRsg(L%U8X}ZoP6tQZ z7|Kf9%*KjmR&oQ-02BZTV4guqa#-`AW{lz(j3q%2fRa*_`;Ri?#tr=4*VXZi+YG<| zS-_I(7Z`wst?g}Vy8FiumqNSuFJC}BBu_tBy>&b4M-Oz)|MZ$rrEgT7G0-+9@30 zIWSB3c@YGjZu|KD`{SnhGXG}s`skOLShEh_Hr!cwf8wdOvU%jSd7}&8o7(nd*Rr0T zEv;AnJ@MPiVo&6!%jd||BZ<>&I=teKvrj&Q%HX*mH=vzZ^#ZLP|DNc!+|%1l*G({S zXmrEHrtNU~%(V%!Q(At^b%4`lRu1PHe{AZ1d!xPo*1jV!b^EP>BQQtU zdHA`$o6~!{?hfoB@9Y&m+%oInshxOJ{>GF$z5C=+&xWfj$nuS5^QJ4Kj~AbRJpRK= ziQM{AOL`}6UCB;|OkcET_xP}(f6-UngWZi6J61LRv-xb-vB4$xRv&6>DSf`VwuU&6 b92vKV&kz23t;aTPxDDFZcC>xnx^4e|2zmhV diff --git a/doc/manual/unknown.png b/doc/manual/unknown.png deleted file mode 100644 index a59a6c7645d451003ee3a71548e0af10b17a0409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoPp|+9hRXR}Wk7+wo-U3d6}R5r(Dy$aAktRI z#v{<7>aAdK#Kcix)&vK&9}FBaY=%C@hKzECrlE{-j4x^#oYa0yH@xvPfT!wK&RZd# zlW`|L7rWZ-e7*C|?U|Awv*BRIGADtyM1|Srw>RWBmxXT1Uz*(6AAE3MsC22`_3$@+ ztbBb}jwx>{{5vV^!K~D~nY;z&;uaI6o_5XrCRC=zvX6UjYxhgG8+`qj3o~D`T(eoZ z{qNT;&;9kS8n6Fb{43_o@1j#*&i5u09{=)w{N&lhSw&T;k1gd^8 z*lz3|6@013-NO8u?bHJmd*>C|SH-Jtm@VCzy7qwEl)E8EnA($f-|p~IJ|CUcXy4yE z<44J7t=r*S?!;twmgnsbc{|&D<6)<3o%8pF{Qgsre11{w$;=C{7B$Yk_kDqt;z`k; zUM3qfD_+krQQX8Wv9V$QXSRKvdI?3&)9x~BSH;^Ni~Zr=zbYf%@zd*99jtG4)$XR` zh5r7tEpt_VLeXuJeP^y7dGGbF{)wCIhNW^5>JtvE)O^q4ta{hsPxVuWKe8#a6(=|_ kajF0bMtG<~7!S_>W>LELtRVE+JuQ%kr>mdKI;Vst0OyF@`2YX_ diff --git a/doc/manual/water.png b/doc/manual/water.png deleted file mode 100644 index 2d5d607e06c19ba59dbb8eb1245dde1772e40533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28174 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 diff --git a/doc/manual/wpnpanel_auto.png b/doc/manual/wpnpanel_auto.png deleted file mode 100644 index af71f98bff842bd32831c97c07e148b602a4cea1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1399 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 a1y`wiTGgrzFhpB_NDv9vg|~#Iefck)WS*7) diff --git a/doc/manual/wpnpanel_explosion.png b/doc/manual/wpnpanel_explosion.png deleted file mode 100644 index f3bd45decb7f51d119f8cc5a6e940ae596efeeb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1359 zcmXw(4NOy46o3x`mQhWex&h)S6GJup6hWyd`lv-qsrax^s~~I93Bg*6V$&hhR+&^M z@)$o>K`a?caR#aqSApr%_=66iI-PYvR-Ds{Ogl#=+r*qbU6$N?PwvS{&X+Iu+F3Ryp{M;NOz{pPx7+1%Ih{_2 z!_nQ{P1Cg9ZnxQNR;$%wv6#(filR&=lfhun>-Ac#Ha|aKsZ=Ty3X&wnVlhDw0)c?f z=ks_xE|(h+5WwMZSS%LPowic;#=W*fMr-9~mVH|e?kcD#&Mn)TwR59Pw=PwawPZua z!W?N_rYK^0;!IIoFkK>TFA|^Bikj3!{rZKJQeaZV88Y~KGD0opDMeu!1Xn5uCinqy z5mO?)LP0Pq3002~0c+eez3+!WPcQqrSV)7jbWBxxmx zifAa~!Ol?71%YNVY+yrK*6YUFR`usqt3TBzr)I^(5+4D+qom*Q8Qzf*Z<*dI z0d#?j2HFA^0~nN`B!Czi8o6@iVM9ZoUf-3OX%z}fqodab2haWSCDOzA%_FQGK;u2! z=s@{(Bxn>gxcC&!(_6So1JE=W44_m3LAc#`?HabWVtF|h6`@RqbLL=RAVb3}H$Wf2 zS%4z|%xhNzFcb5iFaZGXe`hSlzQf?KYwZ@L#YCF4gjT^<5L|-C;Ykk(9y2p_Ns=tg zOp(^suGw4~GbyPxRsO-eR4>YYs-ZDK__xaBIWs+sUfZmHUO87)oxIh}&O5s3)u!<3 z~m~AN|c(c648Cl{;Q_wEF8) zUi){~9G|%Q;ITH%#m?}wc3%f)ReY~^%wkuQ-?z{6N|R=v7&~xABXMfBnal++?nWU%t&o3NRxq>?@yDA=?3yC9t8olDPBk4<-LwDk?AgM5L?jBD*s!C`eo;OBRk)49;(3?~!(7=1vt)E*`wSZkpKJhjZ5=QWmN%WmNugwZR4z zq%i$q?}xrHth;q~r@Hy@FDb0vY*Xj#SF@*^`$JoN69+FkN7y&}#?>8uZ>I5F!^@{D z-+$WpNuK}Z$hKue3znb!KJBn%j$WABa}`Kac*RlU8duq&Weq-AE*^9aNI8{-9u{|ClFozxag!ywovUEjq J+Y;68e*wU$O4|Sc diff --git a/doc/manual/wpnpanel_grenade.png b/doc/manual/wpnpanel_grenade.png deleted file mode 100644 index f0e18fa08bfa338c5524def0b0de8ebb1e966398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1455 zcmXw&3rv$&6o8Kis}JxO1q(857YN0n6alGD+z*smd08l}-FU1ZG8Dw>np$4kDr$Yr zGLhm0EDi);P=!fV)L$dB43rulV~AP_n#$Z{1RcK5eqEN_b5G96N$!^~_v}bmDs-7J zeF6ZuL@$XF)7g)X&&Q3W?|+^QO6W93DHcXTQ}?HXbm5pC5g!3?N<3`3tvZ(&1~3*9;v|C6(b1uyA-mmfv)OujdaPEf z#bTi-%4{~9Os0m02BXnfQBk4S>vcMvMx#-y)e40oJ3Cu0m&;@_kw_#I3Q3aW@pxP= zm&4((SS%)!Ne~2s!JuEK8uaFx?WXeNieg)o!s7~lZ7x}vxlk|X>14s0B(7TIpDX0Z`QAw+E0*U)a+$&Y zQ~kXOd}_miTi9p8TWx4EhVGJi-u~I_R3saS!U0!6l+ORmqvuo?%}<& z*j0gNRd_^-6`{Dz6IC#h2amJh_cZ8|!o_$vC4jm`P!S4|BhYtaB;?sh~!IQ;*-4Cnjn7ZoG`85ytUqQ z(r5Z6c+L!WV+Ilgdjf-Se1JzRkM=coXv-UOi}!xDLLC*892i8-0Q^WvedN=8BqKjC zeNX~u0~-aD5sVtp$U#m5IXF1d-riqb-K|!)NhA#s5hVcusa{?ocZQLAipK`9{61=b z!yGG0JCLN1S8e0!DURC6l52pXK%)V<97xh`$E#Pdu@QIgMx_$PVw^h{Jv?X{`q%-w z0Zs!{0nooa7l7WF|Ag@XIR86i(Dtnwt65<-%8fdaPC+VUTp7tCIRqzmKkqSs!)MV^ z5t8|$>hhGmm4TB5r-_o`+wGq`U+xsX)$D=8CtJ#Tr5DTcs~R6qa1513vj+*E7~QS| z7jrt^TxAk?1ww zdt-U)!MoctRy_Fmr(-+)=51;nI{R$a{EdYR&L2$edQmL*XkNCnCSjoZ`cYHji6q;| z^Go?5O=AkRhIA;t>azFb5rmDJk`=fn9uFi8y;rf&s zPT;q3N>|DHME2z!565p2UAsStTehjU+5QG2XNE0|Vl~BE+;6mgq7688;qdAl zv9|Sv#qFKzjN;DMR__BZ3kmM~+Fr$*4XfX>E}%o$ZLwg%AsxL^0MUY_QB9HQoBsvn C41Rh5 diff --git a/doc/manual/wpnpanel_rail.png b/doc/manual/wpnpanel_rail.png deleted file mode 100644 index bf0822360903e25dbf24d6bc40d06275ef83c22f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1489 zcmXw(3rv$&6o3x`tKwK4vQ?;~Ou?cE#TWH~{QefGZ>{O^SZ==FPysfYa%8I2@gwop!t3 zX0y>WZM9m>X0yp;G8&BrgF&y?>vTGbqBI(fTCL8?$|6ZpsZ`44a;a2G5QI=D6bJ-- zKA*?qaX1_{o6TaenA2&K-delOT%|Sb{>iv~L*1xWlaUrQ))?_il|<_Ku-#F%2`yRKqC)UN%^E?aw5T#3Au!TGb?y} z@MJdjJFw>_cG>V|3)-8|W6=r<19b(?YL#Q(>du{M_R_>QN{%n?;k~oi zX27$Bcp@1M;aKK_g)o={y_s-#CA1~O`8cpd!_kFc2nWOgL_4AxQIDublp_id*@$4b zgV_vvJ*d?nmxDk6Y&J7r(BGx(Y>`~77MP29)oJ5(5>`Pl(?@hTkfzaSM2bR^M1nvb z4*>=M8~}F46@VGQ2%ra`0Mq~^fE<7T5CHH1*Z^p?4%XE<_4=;j;x?6vPD^W&%S{Ba zD-_E3u-P99eIUmRGRMM7cSr`%pgiv{S@wg)>DNT5tr3bwp{#bMWOqn}HfT=XGKoZ`p`qV#xwCJ-M7keO_F%<*)ZW2$ zc1*s41dYN&4uPKLYm7XS0-6Sj0+IxRa60kwWvs8q@^UOFK!pNl%)ki~7#e0d0XhKA z0Mr05w_OFmyqN!l2?6;3J7Y2S?UdcBwi-#JPOeiEYNbF)@CZJeFRK#v0*sQxM2V7? z$SNvid#l67m95BH{miG>Uz}I+a?GQxF5GipJUG=Zp3511bXt5_?6GI>QUV@*p0^`r zTBdw#Y0=$ZZ>-&Vix)EFcv|^7U~YiuMa)6F^LVCUqV4^YqQe8M3%-lTy_t##QRd1cwLm4TyDD>J$#)#k`{Mze1XajDR+_x8;0ALhGSN{)9P?OD>$ zHGN-R>8%Lbr8$?oR4m>bL0nVmp<($@{^@sqUi0ibxewL_7IphvGR+ZPe zc%*Krcwo3zSYB8@vtm>H`Ip>R38@F$f0)^3m0sWMc9p&~CxvVZ|3ehA{PHWlhbKCNZ?kjRXutK7Lj~QcK_;B%jqkPIf>4ckoy8QMvP50OT_~CH; mS$C~p@I(d{l#YRms0>vy7?$ diff --git a/doc/manual/wpnpanel_scatter.png b/doc/manual/wpnpanel_scatter.png deleted file mode 100644 index 497f1abe1421f6d0cde6916548a939345e8b1d03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1370 zcmXw(4NOy46o3zktD>f6;wnE{CP-mS3xXC0^I2LfQn6BCo&5M{pFS9lXM&SjE{TAae$Qbhan2IP2m#LMXHKR~V{)(b zD0vLP$G!mCeE|P3CG7)%{6K(*sQ~ZQ0C2V)KNlMgFcmhei;tX`m>3%yb2uD!yWM89 zS*_Ndo*tT}Ef$N}Y&Mxp27{rxx>~Q->vTGbqBI(fN~Oxm$|6Zpp-{+VGKoY&5QIP= z;Pd%B9*@iAayT3|o6TaenC`SmZ!vymuF;wf?J|_+Rqf3=xI3+6d*Yrg^8AmYa}y&n zTjuU=O-L+NPGAQi&RsL|uBAo)qX5!BiYyBMVSUc%;ZXj^IiK9t58g z956S)n~fuOyn77?dhl8YTHCP4gmfKt9Kp7tiBkn*jcP}o(tae}R+eNfitD9hI68=f z?but5?fG~z0jpPFi5up_crFZO!fz?in*cw=z?n$+{C%ii0f=LWRzx$R9#MrTL*yf} z5y5H&vl;YyP^myB13n+vZ05dtWI$o-5Ovn^%>~@Lq`5i~OC7+}5$$%QX*3v+qL3t! zAdt&NfH43&fR%9tUbsMln~ zE2dXU0PSF>fi{4F0*VBZ0AhG}ysPVWeSN=1(-9wU5(3t zKfpHt#{rnvt^{Bv=09Nq0N(%3Sd4uuWwod*2GXFD=~RSD!B-Gmg2(1bYXn2gO!ci5 z3*$p&^_9x)MP9DOzenv@@}#(CGVYgApWe3YzOSyT`Ez2!u2&uFoAWGmkfX>WR(7%0 zR16irJJOW%_11y2Bj?UuKbPa4aCwpSs&k*={88u1rWT8b|I-&)?38AeMfrtKNSu6K zh0iKat+@6}UGl7`jEy^I-QVc@IGk|0-|n~n$Gz4UdmX(kmrl%)M>j|sgMM~DQ113< zSRNf)wcjzG?p{8(wJ@V3uXcCSWx3yl)R17eWZ7VP!{1fW{(Hq6BNxT2u1%YgHP7jL zq4Z$)XxEvbzLcj%-tLh*p;;j=;_T-75?-3g@!chD#FfLHo}U~j92;0ZC6>48a5689 zwXgWw#iz9&7@sV7P*OHSypo=`G8#-Q=gwObDXdnu(6=-x^QGia;N(uPoAQ&{LuY*& zy1U)V9$jpZC>N#=3?`>mCH*8&YH*|XJJyFGKa&z7vq5ZnW+)e6) z&9|~`j-L*%h<@wzuF=Vq$F~a|F*_E=+Ftr!>A&OWxM4Rwbl0D{C+cm|&lqSAZ<$a( zDHArdX2dwThG-LVPoq(KT;*@7bv3GA1VvI}7G4Oo6#MQO>@1@~o~sS|BlgDU0?Q+4 UC8?dynC}PHMy?mPM5KQDFG;UltN;K2 diff --git a/doc/manual/wshield.png b/doc/manual/wshield.png deleted file mode 100644 index 20e3cf3445255adc7d97facc1b0f4c745aabab5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1400 zcmd^8@oO7(6o1{2n~gPttVDa3Y&}?@2y}BzL^VCdFjc{e@cEyN? z%WQ^W1i7(n&F~nv5oV?tR*f1kZjnuwvAAX!U0^|?bdW*Sio>n=L!a0E8$Q18`+j)5 z&-=jV^A3)U3SFH&odD1^GCa7$sq3BWTeI5v@13BpIE9!R**--4yvDQ6(_`%PUs~x* z4)4?fI{#Y9j;&|v~nwDymvml#(nLL~&LSavYZp2CYCK!!RaI zrzk4n^TkOr=Jo0xkLGqqT&^%dCvrmMtu$v5>fv zHx{#c+tONTwUJV438@+v%SNc63;8IY)i_HHnqf962jUVF6KPHGhj~ikd?A+P7;k{~ z(3E>|ak1TQw_2@cvstg#tJP|yQYn|q#bU8gDCG0`TrOwZb|#Zar_-raDv?OUQ50F0MNt$4f#>;PFvzkj!!UlopQ5N3Mx%?7NGlw!$x2z2W`&T=@oAPz zFsx29D&?0*AMf=B+#bs1@)G5oS+tY0nRw2O*~zFC*V2ZX(v^fJ8>$!!hoUkck+^V( zmHB|gF?K>VV^Ts3#ll=f3Mc|C1}Q#38gVtM%MndfR6&x1f*9Zgn&te6`a)A~l=ur4 zGi&%P#gpU-od!p1Y&Nk}Ld!zKz;GBj4t+iZSOk~{XaH0J$^Zp`9DoIo0*C`RHi`f! z0FGpiUhOtkDwxlsX`-&9Bq7T>E^=U;=fF4^4uCVA0MG!WmAwm1Y?QEKVZp$xf@Too z&@AAY3Vgb=a)DQ(k3K4P~*es+ONK%eD{X9dml!qZ* z&WgKM3IZ?y6o41NwSr>v*bbrLjA9LHHds;6a+>!0t-^KZ29~CFjNaw8!tZ|;@bKJM zEI*8&H-`Vi% zr`~(;&GQovO!~jw*!S=5wOJ@n&3E6}{P^Laj#qn5c0G3Gr(c&&?>)0Wb1i#Lv6k6%P`nQrbswQBcP*RJPA$P>LC+fu#j=grB@2M=vn?)ZYZ$z1*52C=m7%6+Ht=>i%wQ#y0m3|NZ^mvi8)*Y~O*;w>5^7Q`+(E z&un_+@}qwCl_S$fUeo^=EWUK`$xBnUx#wduAN5{aw%>hv)69*}%KKk%_fvEImRwT zLcqF?2ubGyKl>y0XMIGo>~MLfXRbX``k9@_xQbpD2j*}2n2jS zpU2}N2!dvUB<1x739la{mJ-4wM+LB4zF8<-&*gfVOxLzM$z^_r$tRkflh zB}pm@LZ0JtEbD~B8Je~!Dn*i3FqjAg;(ov3^XXo1)Z>W|gh~)HK}Y}s01tq@4qk0y zyN1mQHcD8_W7WY*8cWvAg4xd*T}SVvwN^@PSaLlfRZX#E2!$A*(>X_D?Ff@p!U>s< zOO!5zB0MQ`L6He?v_DMwDAL>S_q*M0r_*V-+s$UPUa!|`wQ99mE|*KCQlU`D=kwWY zHj~Mu)9F+yWm#4tk%-6Ru~H>XNDnvcd{d zm=h?53n3c4w$iHb7ah821|8Lx5gIp8d-2+pyze{&+DZt0IPiC zV|%7vxbjZ(*F|gdx}oXy#ew7Z|8U7WdiKJZtuKH0`o{ya^WQhw1G|2s=5L%D{p!gr z+lJwS4^|!eYi#cPf#08d`?JBnCr>@Qu6KC2P@ zd~EtOKc5-dxbysX^75{O2fv*j&fV1Jx4-mFaAjp;?$v)*|MI{>cK5NjaG|@CT=+M& zcW9_r+_X469HfX>zC5XI7LQ+E7@dB4P2 z_B`I*k-K#C=*1)3Cr`h4?!Dz=X3Kq#EE%mYmQJ5Jarjns==N4;eeFM(U79XV*-!m^ zIe+cM*J6?V>HUwM`23UR%IaeIn)k;REZ_6crw`wl**JL3{UTs|-^AFtz0-651B)iu AX8-^I diff --git a/readme.txt b/readme.txt index f96d3823..8a09f0bc 100644 --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,4 @@ -Here it is! SRB2 v2.1.11 source code! +Here it is! SRB2 v2.1.12 source code! (why do we keep the version number up to date when everything else in this file is hilariously old? - Inuyasha) diff --git a/src/blua/lapi.c b/src/blua/lapi.c index 2d837057..73fbbf56 100644 --- a/src/blua/lapi.c +++ b/src/blua/lapi.c @@ -319,21 +319,6 @@ LUA_API lua_Number lua_tonumber (lua_State *L, int idx) { return 0; } - -LUA_API lua_Integer lua_tointeger (lua_State *L, int idx) { - TValue n; - const TValue *o = index2adr(L, idx); - if (tonumber(o, &n)) { - lua_Integer res; - lua_Number num = nvalue(o); - lua_number2integer(res, num); - return res; - } - else - return 0; -} - - LUA_API int lua_toboolean (lua_State *L, int idx) { const TValue *o = index2adr(L, idx); return !l_isfalse(o); @@ -446,14 +431,6 @@ LUA_API void lua_pushnumber (lua_State *L, lua_Number n) { } -LUA_API void lua_pushinteger (lua_State *L, lua_Integer n) { - lua_lock(L); - setnvalue(L->top, cast_num(n)); - api_incr_top(L); - lua_unlock(L); -} - - LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) { lua_lock(L); luaC_checkGC(L); diff --git a/src/blua/lauxlib.c b/src/blua/lauxlib.c index c43cefd1..db7d9d0d 100644 --- a/src/blua/lauxlib.c +++ b/src/blua/lauxlib.c @@ -186,20 +186,6 @@ LUALIB_API lua_Number luaL_optnumber (lua_State *L, int narg, lua_Number def) { } -LUALIB_API lua_Integer luaL_checkinteger (lua_State *L, int narg) { - lua_Integer d = lua_tointeger(L, narg); - if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */ - tag_error(L, narg, LUA_TNUMBER); - return d; -} - - -LUALIB_API lua_Integer luaL_optinteger (lua_State *L, int narg, - lua_Integer def) { - return luaL_opt(L, luaL_checkinteger, narg, def); -} - - LUALIB_API int luaL_getmetafield (lua_State *L, int obj, const char *event) { if (!lua_getmetatable(L, obj)) /* no metatable? */ return 0; diff --git a/src/blua/lauxlib.h b/src/blua/lauxlib.h index 03204105..c5ea45a1 100644 --- a/src/blua/lauxlib.h +++ b/src/blua/lauxlib.h @@ -54,9 +54,8 @@ LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg, LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg); LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def); -LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg); -LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg, - lua_Integer def); +#define luaL_checkinteger luaL_checknumber +#define luaL_optinteger luaL_optnumber LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t); diff --git a/src/blua/lua.h b/src/blua/lua.h index a945fcb5..4e26c2a7 100644 --- a/src/blua/lua.h +++ b/src/blua/lua.h @@ -100,7 +100,7 @@ typedef LUA_NUMBER lua_Number; /* type for integer functions */ -typedef LUA_INTEGER lua_Integer; +#define lua_Integer lua_Number @@ -144,7 +144,7 @@ LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2); LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx); -LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx); +#define lua_tointeger lua_tonumber LUA_API int (lua_toboolean) (lua_State *L, int idx); LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); LUA_API size_t (lua_objlen) (lua_State *L, int idx); @@ -159,7 +159,7 @@ LUA_API const void *(lua_topointer) (lua_State *L, int idx); */ LUA_API void (lua_pushnil) (lua_State *L); LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); -LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); +#define lua_pushinteger lua_pushnumber LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l); LUA_API void (lua_pushstring) (lua_State *L, const char *s); LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, diff --git a/src/blua/lvm.c b/src/blua/lvm.c index 17764846..a921d443 100644 --- a/src/blua/lvm.c +++ b/src/blua/lvm.c @@ -323,7 +323,7 @@ static void Arith (lua_State *L, StkId ra, TValue *rb, case TM_SUB: setnvalue(ra, luai_numsub(nb, nc)); break; case TM_MUL: setnvalue(ra, luai_nummul(nb, nc)); break; case TM_DIV: if (nc == 0) { lua_pushliteral(L, "divide by zero error"); lua_error(L); } else setnvalue(ra, luai_numdiv(nb, nc)); break; - case TM_MOD: setnvalue(ra, luai_nummod(nb, nc)); break; + case TM_MOD: if (nc == 0) { lua_pushliteral(L, "modulo by zero error"); lua_error(L); } else setnvalue(ra, luai_nummod(nb, nc)); break; case TM_POW: setnvalue(ra, luai_numpow(nb, nc)); break; case TM_UNM: setnvalue(ra, luai_numunm(nb)); break; case TM_AND: setnvalue(ra, luai_numand(nb, nc)); break; @@ -494,7 +494,7 @@ void luaV_execute (lua_State *L, int nexeccalls) { if (nc == 0) { lua_pushliteral(L, "divide by zero error"); lua_error(L); - } + } else setnvalue(ra, luai_numdiv(nb, nc)); } @@ -503,7 +503,19 @@ void luaV_execute (lua_State *L, int nexeccalls) { continue; } case OP_MOD: { - arith_op(luai_nummod, TM_MOD); + TValue *rb = RKB(i); + TValue *rc = RKC(i); + if (ttisnumber(rb) && ttisnumber(rc)) { + lua_Number nb = nvalue(rb), nc = nvalue(rc); + if (nc == 0) { + lua_pushliteral(L, "modulo by zero error"); + lua_error(L); + } + else + setnvalue(ra, luai_nummod(nb, nc)); + } + else + Protect(Arith(L, ra, rb, rc, TM_MOD)); continue; } case OP_POW: { diff --git a/src/command.c b/src/command.c index baf97cbd..09588eb8 100644 --- a/src/command.c +++ b/src/command.c @@ -1055,9 +1055,22 @@ static void Setvalue(consvar_t *var, const char *valstr, boolean stealth) if (var->PossibleValue) { - INT32 v = atoi(valstr); - if (!v && valstr[0] != '0') - v = INT32_MIN; // Invalid integer trigger + INT32 v; + + if (var->flags & CV_FLOAT) + { + double d = atof(valstr); + if (!d && valstr[0] != '0') + v = INT32_MIN; + else + v = (INT32)(d * FRACUNIT); + } + else + { + v = atoi(valstr); + if (!v && valstr[0] != '0') + v = INT32_MIN; // Invalid integer trigger + } if (var->PossibleValue[0].strvalue && !stricmp(var->PossibleValue[0].strvalue, "MIN")) // bounded cvar { @@ -1134,13 +1147,13 @@ found: var->string = var->zstring = Z_StrDup(valstr); - if (var->flags & CV_FLOAT) + if (override) + var->value = overrideval; + else if (var->flags & CV_FLOAT) { double d = atof(var->string); var->value = (INT32)(d * FRACUNIT); } - else if (override) - var->value = overrideval; else var->value = atoi(var->string); diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 659dac1d..e24a1426 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2921,6 +2921,12 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum) displayplayer = newplayernum; secondarydisplayplayer = newplayernum; DEBFILE("spawning me\n"); + // Apply player flags as soon as possible! + players[newplayernum].pflags &= ~(PF_FLIPCAM|PF_ANALOGMODE); + if (cv_flipcam.value) + players[newplayernum].pflags |= PF_FLIPCAM; + if (cv_analog.value) + players[newplayernum].pflags |= PF_ANALOGMODE; } else { @@ -2928,6 +2934,12 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum) DEBFILE("spawning my brother\n"); if (botingame) players[newplayernum].bot = 1; + // Same goes for player 2 when relevant + players[newplayernum].pflags &= ~(/*PF_FLIPCAM|*/PF_ANALOGMODE); + //if (cv_flipcam2.value) + //players[newplayernum].pflags |= PF_FLIPCAM; + if (cv_analog2.value) + players[newplayernum].pflags |= PF_ANALOGMODE; } D_SendPlayerConfig(); addedtogame = true; diff --git a/src/d_main.c b/src/d_main.c index bf1bc733..4cea94a8 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1087,14 +1087,14 @@ void D_SRB2Main(void) #endif D_CleanFile(); -#if 1 // md5s last updated 8/05/14 +#if 1 // md5s last updated 11/10/14 // Check MD5s of autoloaded files W_VerifyFileMD5(0, "ac309fb3c7d4b5b685e2cd26beccf0e8"); // srb2.srb/srb2.wad W_VerifyFileMD5(1, "f39b6c849295e3c81875726e8cc0e2c7"); // zones.dta W_VerifyFileMD5(2, "cfca0f1c73023cbbd8f844f45480f799"); // player.dta W_VerifyFileMD5(3, "85901ad4bf94637e5753d2ac2c03ea26"); // rings.dta - W_VerifyFileMD5(4, "3d6cfc185fd7c195eb934ce593b0248f"); // patch.dta + W_VerifyFileMD5(4, "a45cc59d13dce924f2112b3e4201d0ae"); // patch.dta // don't check music.dta because people like to modify it, and it doesn't matter if they do // ...except it does if they slip maps in there, and that's what W_VerifyNMUSlumps is for. #endif diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 5e81a5a5..377da843 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -164,6 +164,7 @@ static void Command_Archivetest_f(void); // ========================================================================= void SendWeaponPref(void); +void SendWeaponPref2(void); static CV_PossibleValue_t usemouse_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Force"}, {0, NULL}}; #if (defined (__unix__) && !defined (MSDOS)) || defined(__APPLE__) || defined (UNIXCOMMON) @@ -1345,26 +1346,34 @@ void SendWeaponPref(void) XBOXSTATIC UINT8 buf[1]; buf[0] = 0; - if (cv_flipcam.value) + if (players[consoleplayer].pflags & PF_FLIPCAM) buf[0] |= 1; + if (players[consoleplayer].pflags & PF_ANALOGMODE) + buf[0] |= 2; SendNetXCmd(XD_WEAPONPREF, buf, 1); +} - if (splitscreen) - { - buf[0] = 0; - if (cv_flipcam2.value) - buf[0] |= 1; - SendNetXCmd2(XD_WEAPONPREF, buf, 1); - } +void SendWeaponPref2(void) +{ + XBOXSTATIC UINT8 buf[1]; + + buf[0] = 0; + if (players[secondarydisplayplayer].pflags & PF_FLIPCAM) + buf[0] |= 1; + if (players[secondarydisplayplayer].pflags & PF_ANALOGMODE) + buf[0] |= 2; + SendNetXCmd2(XD_WEAPONPREF, buf, 1); } static void Got_WeaponPref(UINT8 **cp,INT32 playernum) { UINT8 prefs = READUINT8(*cp); + + players[playernum].pflags &= ~(PF_FLIPCAM|PF_ANALOGMODE); if (prefs & 1) players[playernum].pflags |= PF_FLIPCAM; - else - players[playernum].pflags &= ~PF_FLIPCAM; + if (prefs & 2) + players[playernum].pflags |= PF_ANALOGMODE; } void D_SendPlayerConfig(void) @@ -1373,6 +1382,8 @@ void D_SendPlayerConfig(void) if (splitscreen || botingame) SendNameAndColor2(); SendWeaponPref(); + if (splitscreen) + SendWeaponPref2(); } // Only works for displayplayer, sorry! @@ -1798,7 +1809,6 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum) if (demorecording) // Okay, level loaded, character spawned and skinned, G_BeginRecording(); // I AM NOW READY TO RECORD. demo_start = true; - metal_start = true; } static void Command_Pause(void) diff --git a/src/d_player.h b/src/d_player.h index b0484f0a..b9fcdef7 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -151,6 +151,7 @@ typedef enum /*** misc ***/ PF_FORCESTRAFE = 1<<29, // Turning inputs are translated into strafing inputs + PF_ANALOGMODE = 1<<30, // Analog mode? // free: 1<<30 and 1<<31 } pflags_t; diff --git a/src/dehacked.c b/src/dehacked.c index 334179ac..ccb7248e 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -7273,6 +7273,7 @@ static const char *const PLAYERFLAG_LIST[] = { /*** misc ***/ "FORCESTRAFE", // Translate turn inputs into strafe inputs + "ANALOGMODE", // Analog mode? NULL // stop loop here. }; diff --git a/src/doomdef.h b/src/doomdef.h index a978e047..a9e18eaf 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -144,8 +144,8 @@ extern FILE *logstream; #define VERSIONSTRING "Trunk" #else #define VERSION 201 // Game version -#define SUBVERSION 11 // more precise version number -#define VERSIONSTRING "v2.1.11" +#define SUBVERSION 12 // more precise version number +#define VERSIONSTRING "v2.1.12" #endif // Modification options @@ -428,9 +428,8 @@ extern const char *compdate, *comptime, *comprevision; // Compile them at your own risk! /// Max recursive portal renders -/// \note sadly some additional work will need to be done -/// before anything > 1 will function correctly -#define PORTAL_LIMIT 1 +/// \note obsoleted by cv_maxportals +//#define PORTAL_LIMIT 8 /// Fun experimental slope stuff! //#define SLOPENESS @@ -453,7 +452,7 @@ extern const char *compdate, *comptime, *comprevision; //#define CHAOSISNOTDEADYET /// Polyobject fake flat code -//#define POLYOBJECTS_PLANES +#define POLYOBJECTS_PLANES /// Blue spheres for future use. /// \todo Remove this define. @@ -493,4 +492,7 @@ extern const char *compdate, *comptime, *comprevision; #define CLIENT_LOADINGSCREEN #endif +/// Experimental tweaks to analog mode. (Needs a lot of work before it's ready for primetime.) +//#define REDSANALOG + #endif // __DOOMDEF__ diff --git a/src/doomstat.h b/src/doomstat.h index 3cf70e46..b05b3833 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -165,7 +165,6 @@ extern cutscene_t *cutscenes[128]; // For the Custom Exit linedef. extern INT16 nextmapoverride; -extern INT32 nextmapgametype; extern boolean skipstats; extern UINT32 totalrings; // Total # of rings in a level diff --git a/src/f_finale.c b/src/f_finale.c index 103c7df3..f541995d 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -958,29 +958,30 @@ boolean F_IntroResponder(event_t *event) // CREDITS // ========= static const char *credits[] = { - "\1Sonic Team Junior", - "\1Staff", + "\1Sonic Robo Blast II", + "\1Credits", "", "\1Game Design", - "\"SSNTails\"", "Ben \"Mystic\" Geyer", + "\"SSNTails\"", "Johnny \"Sonikku\" Wallbank", "", "\1Programming", - "\"SSNTails\"", "Alam \"GBC\" Arias", "Logan \"GBA\" Arias", + "Tim \"RedEnchilada\" Bordelon", "Callum Dickinson", "Scott \"Graue\" Feeney", "Nathan \"Jazz\" Giroux", "Thomas \"Shadow Hog\" Igoe", "\"Monster\" Iestyn Jealous", + "Ronald \"Furyhunter\" Kinard", // The SDL2 port "John \"JTE\" Muniz", + "\"SSNTails\"", "Matthew \"Inuyasha\" Walsh", "", "\1Programming", "\1Assistance", - "Tim \"RedEnchilada\" Bordelon", "Andrew \"orospakr\" Clunis", "Gregor \"Oogaland\" Dick", "Julio \"Chaos Zero 64\" Guir", @@ -993,7 +994,6 @@ static const char *credits[] = { "Ben \"Cue\" Woodford", "", "\1Sprite Artists", - "\"SSNTails\"", "Odi \"Iceman404\" Atunzu", "Victor \"VAdaPEGA\" Ara\x1Fjo", // Araújo -- sorry for our limited font! D: "Jim \"MotorRoach\" DeMello", @@ -1001,6 +1001,7 @@ static const char *credits[] = { "Sherman \"CoatRack\" DesJardins", "Andrew \"Senku Niola\" Moran", "David \"Instant Sonic\" Spencer Jr.", + "\"SSNTails\"", "", "\1Texture Artists", "Ryan \"Blaze Hedgehog\" Bloom", @@ -1010,8 +1011,6 @@ static const char *credits[] = { "", "\1Music and Sound", "\1Production", - "\"SSNTails\"", - "Michael \"Spazzo\" Antonakes", "Malcolm \"RedXVI\" Brown", "David \"Bulmybag\" Bulmer", "Paul \"Boinciel\" Clempson", @@ -1021,12 +1020,12 @@ static const char *credits[] = { "Jarel \"Arrow\" Jones", "Stefan \"Stuf\" Rimalia", "Shane Strife", + "\"Spazzo\"", "David \"Big Wave Dave\" Spencer Sr.", "David \"Instant Sonic\" Spencer Jr.", + "\"SSNTails\"", "", "\1Level Design", - "\"SSNTails\"", - "Michael \"Spazzo\" Antonakes", "Matthew \"Fawfulfan\" Chapman", "Paul \"Boinciel\" Clempson", "Desmond \"Blade\" DesJardins", @@ -1038,12 +1037,22 @@ static const char *credits[] = { "Thomas \"Shadow Hog\" Igoe", "Erik \"Torgo\" Nielsen", "Wessel \"Spherallic\" Smit", + "\"Spazzo\"", + "\"SSNTails\"", "Rob Tisdell", "Jarrett \"JEV3\" Voight", "Johnny \"Sonikku\" Wallbank", "Matthew \"Inuyasha\" Walsh", "Marco \"Digiku\" Zafra", "", + "\1Boss Design", + "Ben \"Mystic\" Geyer", + "Thomas \"Shadow Hog\" Igoe", + "John \"JTE\" Muniz", + "Samuel \"Prime 2.0\" Peters", + "\"SSNTails\"", + "Johnny \"Sonikku\" Wallbank", + "", "\1Testing", "Hank \"FuriousFox\" Brannock", "Cody \"SRB2 Playah\" Koester", @@ -1060,9 +1069,12 @@ static const char *credits[] = { "Alex \"MistaED\" Fuller", "FreeDoom Project", // Used some of the mancubus and rocket launcher sprites for Brak "Randy Heit ()", // For his MSPaint sprite that we nicked -#if 0 // (don't take your anger out on me anymore, ok, JTE...?) - "Abigail \"Raspberry\" Fox", // (Inuyasha's girlfriend. >_> <_< >_>) -#endif + "", + "\1Produced By", + "Sonic Team Junior", + "", + "\1Published By", + "A 28K dialup modem", "", "\1Thank you", "\1for playing!", diff --git a/src/g_game.c b/src/g_game.c index 21112ca3..50f30dfc 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -131,7 +131,6 @@ boolean countdowntimeup = false; cutscene_t *cutscenes[128]; INT16 nextmapoverride; -INT32 nextmapgametype; boolean skipstats; // Pointers to each CTF flag @@ -244,7 +243,6 @@ mobj_t *metalplayback; static UINT8 *metalbuffer = NULL; static UINT8 *metal_p; static UINT16 metalversion; -boolean metal_start; // extra data stuff (events registered this frame while recording) static struct { @@ -283,6 +281,8 @@ static void UserAnalog_OnChange(void); static void UserAnalog2_OnChange(void); static void Analog_OnChange(void); static void Analog2_OnChange(void); +void SendWeaponPref(void); +void SendWeaponPref2(void); static CV_PossibleValue_t crosshair_cons_t[] = {{0, "Off"}, {1, "Cross"}, {2, "Angle"}, {3, "Point"}, {0, NULL}}; static CV_PossibleValue_t joyaxis_cons_t[] = {{0, "None"}, @@ -595,14 +595,18 @@ void G_AddTempNightsRecords(UINT32 pscore, tic_t ptime, UINT8 mare) void G_SetNightsRecords(void) { INT32 i; + UINT32 totalscore = 0; + tic_t totaltime = 0; + + const size_t glen = strlen(srb2home)+1+strlen("replay")+1+strlen(timeattackfolder)+1+strlen("MAPXX")+1; + char *gpath; + char lastdemo[256], bestdemo[256]; if (!ntemprecords.nummares) return; // Set overall { - UINT32 totalscore = 0; - tic_t totaltime = 0; UINT8 totalrank = 0, realrank = 0; for (i = 1; i <= ntemprecords.nummares; ++i) @@ -648,6 +652,50 @@ void G_SetNightsRecords(void) memset(&ntemprecords, 0, sizeof(nightsdata_t)); + // Save demo! + bestdemo[255] = '\0'; + lastdemo[255] = '\0'; + G_SetDemoTime(totaltime, totalscore, 0); + G_CheckDemoStatus(); + + I_mkdir(va("%s"PATHSEP"replay", srb2home), 0755); + I_mkdir(va("%s"PATHSEP"replay"PATHSEP"%s", srb2home, timeattackfolder), 0755); + + if ((gpath = malloc(glen)) == NULL) + I_Error("Out of memory for replay filepath\n"); + + sprintf(gpath,"%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(gamemap)); + snprintf(lastdemo, 255, "%s-last.lmp", gpath); + + if (FIL_FileExists(lastdemo)) + { + UINT8 *buf; + size_t len = FIL_ReadFile(lastdemo, &buf); + + snprintf(bestdemo, 255, "%s-time-best.lmp", gpath); + if (!FIL_FileExists(bestdemo) || G_CmpDemoTime(bestdemo, lastdemo) & 1) + { // Better time, save this demo. + if (FIL_FileExists(bestdemo)) + remove(bestdemo); + FIL_WriteFile(bestdemo, buf, len); + CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW RECORD TIME!"), M_GetText("Saved replay as"), bestdemo); + } + + snprintf(bestdemo, 255, "%s-score-best.lmp", gpath); + if (!FIL_FileExists(bestdemo) || (G_CmpDemoTime(bestdemo, lastdemo) & (1<<1))) + { // Better score, save this demo. + if (FIL_FileExists(bestdemo)) + remove(bestdemo); + FIL_WriteFile(bestdemo, buf, len); + CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW HIGH SCORE!"), M_GetText("Saved replay as"), bestdemo); + } + + //CONS_Printf("%s '%s'\n", M_GetText("Saved replay as"), lastdemo); + + Z_Free(buf); + } + free(gpath); + // If the mare count changed, this will update the score display CV_AddValue(&cv_nextmap, 1); CV_AddValue(&cv_nextmap, -1); @@ -909,6 +957,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics) // these ones used for multiple conditions boolean turnleft, turnright, mouseaiming, analogjoystickmove, gamepadjoystickmove; player_t *player = &players[consoleplayer]; + camera_t *thiscam = &camera; static INT32 turnheld; // for accelerative turning static boolean keyboard_look; // true if lookup/down using keyboard @@ -1172,8 +1221,16 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics) cmd->forwardmove = (SINT8)(cmd->forwardmove + forward); cmd->sidemove = (SINT8)(cmd->sidemove + side); - localangle += (cmd->angleturn<<16); - cmd->angleturn = (INT16)(localangle >> 16); + if (cv_analog.value) { + cmd->angleturn = (INT16)(thiscam->angle >> 16); + if (player->awayviewtics) + cmd->angleturn = (INT16)(player->awayviewmobj->angle >> 16); + } + else + { + localangle += (cmd->angleturn<<16); + cmd->angleturn = (INT16)(localangle >> 16); + } //Reset away view if a command is given. if ((cmd->forwardmove || cmd->sidemove || cmd->buttons) @@ -1190,6 +1247,7 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics) // these ones used for multiple conditions boolean turnleft, turnright, mouseaiming, analogjoystickmove, gamepadjoystickmove; player_t *player = &players[secondarydisplayplayer]; + camera_t *thiscam = (player->bot == 2 ? &camera : &camera2); static INT32 turnheld; // for accelerative turning static boolean keyboard_look; // true if lookup/down using keyboard @@ -1463,8 +1521,16 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics) } } - localangle2 += (cmd->angleturn<<16); - cmd->angleturn = (INT16)(localangle2 >> 16); + if (cv_analog2.value) { + cmd->angleturn = (INT16)(thiscam->angle >> 16); + if (player->awayviewtics) + cmd->angleturn = (INT16)(player->awayviewmobj->angle >> 16); + } + else + { + localangle2 += (cmd->angleturn<<16); + cmd->angleturn = (INT16)(localangle2 >> 16); + } } // User has designated that they want @@ -1497,25 +1563,45 @@ static void Analog_OnChange(void) if (leveltime > 1) CV_SetValue(&cv_cam_dist, 128); - if (netgame) - CV_StealthSetValue(&cv_analog, 0); - else if (cv_analog.value || demoplayback) + if (cv_analog.value || demoplayback) CV_SetValue(&cv_cam_dist, 192); + + if (!cv_chasecam.value && cv_analog.value) { + CV_SetValue(&cv_analog, 0); + return; + } + + if (cv_analog.value) + players[consoleplayer].pflags |= PF_ANALOGMODE; + else + players[consoleplayer].pflags &= ~PF_ANALOGMODE; + + SendWeaponPref(); } static void Analog2_OnChange(void) { - if (!splitscreen || !cv_cam2_dist.string) + if (!(splitscreen || botingame) || !cv_cam2_dist.string) return; // cameras are not initialized at this point if (leveltime > 1) CV_SetValue(&cv_cam2_dist, 128); - if (netgame) - CV_StealthSetValue(&cv_analog2, 0); - else if (cv_analog2.value) + if (cv_analog2.value) CV_SetValue(&cv_cam2_dist, 192); + + if (!cv_chasecam2.value && cv_analog2.value) { + CV_SetValue(&cv_analog2, 0); + return; + } + + if (cv_analog2.value) + players[secondarydisplayplayer].pflags |= PF_ANALOGMODE; + else + players[secondarydisplayplayer].pflags &= ~PF_ANALOGMODE; + + SendWeaponPref2(); } // @@ -1999,7 +2085,7 @@ void G_PlayerReborn(INT32 player) exiting = players[player].exiting; jointime = players[player].jointime; spectator = players[player].spectator; - pflags = (players[player].pflags & (PF_TIMEOVER|PF_FLIPCAM|PF_TAGIT|PF_TAGGED)); + pflags = (players[player].pflags & (PF_TIMEOVER|PF_FLIPCAM|PF_TAGIT|PF_TAGGED|PF_ANALOGMODE)); // As long as we're not in multiplayer, carry over cheatcodes from map to map if (!(netgame || multiplayer)) @@ -2838,23 +2924,12 @@ static void G_DoWorldDone(void) { if (server) { - INT32 nextgametype; - - // for custom exit (linetype 2) that changes gametype - if (nextmapgametype != -1) - nextgametype = nextmapgametype; - else - { - // use current gametype by default - nextgametype = gametype; - } - - if (gametype == GT_COOP && nextgametype == GT_COOP) + if (gametype == GT_COOP) // don't reset player between maps - D_MapChange(nextmap+1, nextgametype, ultimatemode, false, 0, false, false); + D_MapChange(nextmap+1, gametype, ultimatemode, false, 0, false, false); else // resetplayer in match/chaos/tag/CTF/race for more equality - D_MapChange(nextmap+1, nextgametype, ultimatemode, true, 0, false, false); + D_MapChange(nextmap+1, gametype, ultimatemode, true, 0, false, false); } gameaction = ga_nothing; @@ -3618,6 +3693,7 @@ static ticcmd_t oldcmd; // Not used for Metal Sonic #define GZT_SPRITE 0x10 // Animation frame #define GZT_EXTRA 0x20 +#define GZT_NIGHTS 0x40 // NiGHTS Mode stuff! // GZT_EXTRA flags #define EZT_THOK 0x01 // Spawned a thok object @@ -3632,6 +3708,21 @@ static ticcmd_t oldcmd; static mobj_t oldmetal, oldghost; +void G_SaveMetal(UINT8 **buffer) +{ + I_Assert(buffer != NULL && *buffer != NULL); + + WRITEUINT32(*buffer, metal_p - metalbuffer); +} + +void G_LoadMetal(UINT8 **buffer) +{ + I_Assert(buffer != NULL && *buffer != NULL); + + G_DoPlayMetal(); + metal_p = metalbuffer + READUINT32(*buffer); +} + ticcmd_t *G_CopyTiccmd(ticcmd_t* dest, const ticcmd_t* src, const size_t n) { return M_Memcpy(dest, src, n*sizeof(*src)); @@ -3814,6 +3905,13 @@ void G_WriteGhostTic(mobj_t *ghost) if (!(demoflags & DF_GHOST)) return; // No ghost data to write. + if (ghost->player && ghost->player->pflags & PF_NIGHTSMODE && ghost->tracer) + { + // We're talking about the NiGHTS thing, not the normal platforming thing! + ziptic |= GZT_NIGHTS; + ghost = ghost->tracer; + } + ziptic_p = demo_p++; // the ziptic, written at the end of this function #define MAXMOM (0xFFFF<<8) @@ -3875,10 +3973,7 @@ void G_WriteGhostTic(mobj_t *ghost) } // Store the sprite frame. - if (ghost->player && ghost->player->pflags & PF_NIGHTSMODE && ghost->tracer) - frame = ghost->tracer->frame & 0xFF; // get frame from NiGHTS tracer - else - frame = ghost->frame & 0xFF; // get frame from player + frame = ghost->frame & 0xFF; if (frame != oldghost.frame) { oldghost.frame = frame; @@ -3887,10 +3982,7 @@ void G_WriteGhostTic(mobj_t *ghost) } // Check for sprite set changes - if (ghost->player && ghost->player->pflags & PF_NIGHTSMODE && ghost->tracer) - sprite = ghost->tracer->sprite; // get sprite from NiGHTS tracer - else - sprite = ghost->sprite; // get sprite from player + sprite = ghost->sprite; if (sprite != oldghost.sprite) { oldghost.sprite = sprite; @@ -3957,12 +4049,16 @@ void G_ConsGhostTic(void) { UINT8 ziptic; UINT16 px,py,pz,gx,gy,gz; + mobj_t *testmo; + boolean nightsfail = false; if (!demo_p || !demo_start) return; if (!(demoflags & DF_GHOST)) return; // No ghost data to use. + testmo = players[0].mo; + // Grab ghost data. ziptic = READUINT8(demo_p); if (ziptic & GZT_XYZ) @@ -3988,6 +4084,12 @@ void G_ConsGhostTic(void) demo_p++; if (ziptic & GZT_SPRITE) demo_p++; + if(ziptic & GZT_NIGHTS) { + if (!testmo->player || !(testmo->player->pflags & PF_NIGHTSMODE) || !testmo->tracer) + nightsfail = true; + else + testmo = testmo->tracer; + } if (ziptic & GZT_EXTRA) { // But wait, there's more! @@ -4029,7 +4131,12 @@ void G_ConsGhostTic(void) mobj = NULL; // wasn't this one, keep searching. } if (mobj && mobj->health != health) // Wasn't damaged?! This is desync! Fix it! + { + if (demosynced) + CONS_Alert(CONS_WARNING, M_GetText("Demo playback has desynced!\n")); + demosynced = false; P_DamageMobj(mobj, players[0].mo, players[0].mo, 1); + } } } if (ziptic & EZT_SPRITE) @@ -4037,24 +4144,24 @@ void G_ConsGhostTic(void) } // Re-synchronise - px = players[0].mo->x>>FRACBITS; - py = players[0].mo->y>>FRACBITS; - pz = players[0].mo->z>>FRACBITS; + px = testmo->x>>FRACBITS; + py = testmo->y>>FRACBITS; + pz = testmo->z>>FRACBITS; gx = oldghost.x>>FRACBITS; gy = oldghost.y>>FRACBITS; gz = oldghost.z>>FRACBITS; - if (px != gx || py != gy || pz != gz) + if (nightsfail || px != gx || py != gy || pz != gz) { if (demosynced) CONS_Alert(CONS_WARNING, M_GetText("Demo playback has desynced!\n")); demosynced = false; - P_UnsetThingPosition(players[0].mo); - players[0].mo->x = oldghost.x; - players[0].mo->y = oldghost.y; - P_SetThingPosition(players[0].mo); - players[0].mo->z = oldghost.z; + P_UnsetThingPosition(testmo); + testmo->x = oldghost.x; + testmo->y = oldghost.y; + P_SetThingPosition(testmo); + testmo->z = oldghost.z; } if (*demo_p == DEMOMARKER) @@ -4272,7 +4379,7 @@ void G_ReadMetalTic(mobj_t *metal) UINT16 speed; UINT8 statetype; - if (!metal_p || !metal_start) + if (!metal_p) return; ziptic = READUINT8(metal_p); @@ -4517,11 +4624,7 @@ void G_BeginRecording(void) memset(name,0,sizeof(name)); demo_p = demobuffer; - demoflags = DF_GHOST; - if (modeattacking == ATTACKING_RECORD) - demoflags |= DF_RECORDATTACK; - else if (modeattacking == ATTACKING_NIGHTS) - demoflags |= DF_NIGHTSATTACK; + demoflags = DF_GHOST|(modeattacking<frontsector->floorheight); + if (cullheight->flags & ML_NOCLIMB) // Group culling + { + if (!viewcullheight) + return false; + + // Make sure this is part of the same group + if (viewcullheight->frontsector == cullheight->frontsector) + { + // OK, we can cull + if (vz > cullplane && toph < cullplane) // Cull if below plane + return true; + + if (bottomh > cullplane && vz <= cullplane) // Cull if above plane + return true; + } + } + else // Quick culling + { + if (vz > cullplane && toph < cullplane) // Cull if below plane + return true; + + if (bottomh > cullplane && vz <= cullplane) // Cull if above plane + return true; + } + + return false; +} + // -----------------+ // HWR_DrawSprite : Draw flat sprites // : (monsters, bonuses, weapons, lights, ...) @@ -4607,29 +4647,8 @@ static void HWR_ProjectSprite(mobj_t *thing) if (thing->subsector->sector->cullheight) { - float cullplane = FIXED_TO_FLOAT(thing->subsector->sector->cullheight->frontsector->floorheight); - if (thing->subsector->sector->cullheight->flags & ML_NOCLIMB) // Group culling - { - // Make sure this is part of the same group - if (viewsector->cullheight && viewsector->cullheight->frontsector - == thing->subsector->sector->cullheight->frontsector) - { - // OK, we can cull - if (gr_viewz > cullplane && gzt < cullplane) // Cull if below plane - return; - - if (gz > cullplane && gr_viewz <= cullplane) // Cull if above plane - return; - } - } - else // Quick culling - { - if (gr_viewz > cullplane && gzt < cullplane) // Cull if below plane - return; - - if (gz > cullplane && gr_viewz <= cullplane) // Cull if above plane - return; - } + if (HWR_DoCulling(thing->subsector->sector->cullheight, viewsector->cullheight, gr_viewz, gz, gzt)) + return; } heightsec = thing->subsector->sector->heightsec; @@ -4795,6 +4814,8 @@ static void HWR_DrawSkyBackground(player_t *player) FOutVector v[4]; angle_t angle; float dimensionmultiply; + float aspectratio; + float angleturn; // 3--2 // | /| @@ -4830,9 +4851,9 @@ static void HWR_DrawSkyBackground(player_t *player) // Y angle = aimingangle; - float aspectratio = (float)vid.width/(float)vid.height; + aspectratio = (float)vid.width/(float)vid.height; dimensionmultiply = ((float)textures[skytexture]->height/(128.0f*aspectratio)); - float angleturn = (((float)ANGLE_45-1.0f)*aspectratio)*dimensionmultiply; + angleturn = (((float)ANGLE_45-1.0f)*aspectratio)*dimensionmultiply; // Middle of the sky should always be at angle 0 // need to keep correct aspect ratio with X diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c index 0f0f7e01..631bb665 100644 --- a/src/hardware/r_opengl/r_opengl.c +++ b/src/hardware/r_opengl/r_opengl.c @@ -399,10 +399,10 @@ static PFNgluBuild2DMipmaps pgluBuild2DMipmaps; #ifndef MINI_GL_COMPATIBILITY /* 1.3 functions for multitexturing */ -typedef void (APIENTRY *PFNGLACTIVETEXTUREPROC) (GLenum); -static PFNGLACTIVETEXTUREPROC pglActiveTexture; -typedef void (APIENTRY *PFNGLMULTITEXCOORD2FPROC) (GLenum, GLfloat, GLfloat); -static PFNGLMULTITEXCOORD2FPROC pglMultiTexCoord2f; +typedef void (APIENTRY *PFNglActiveTexture) (GLenum); +static PFNglActiveTexture pglActiveTexture; +typedef void (APIENTRY *PFNglMultiTexCoord2f) (GLenum, GLfloat, GLfloat); +static PFNglMultiTexCoord2f pglMultiTexCoord2f; #endif #endif @@ -526,21 +526,18 @@ boolean SetupGLFunc13(void) #ifdef STATIC_OPENGL gl13 = true; #else - const char *glversion = (const char *)pglGetString(GL_VERSION); - UINT32 majorversion = 0, minorversion = 0; - - if (glversion != NULL && sscanf(glversion, "%u.%u", &majorversion, &minorversion) == 2) // There is a version number I can identify + if (isExtAvailable("GL_ARB_multitexture", gl_extensions)) { - if (majorversion > 1 || (majorversion == 1 && minorversion >= 3)) // Version of OpenGL is equal to or greater than 1.3 - { - // Get the functions - pglActiveTexture = GetGLFunc("glActiveTexture"); - pglMultiTexCoord2f = GetGLFunc("glMultiTexCoord2f"); + // Get the functions + pglActiveTexture = GetGLFunc("glActiveTextureARB"); + pglMultiTexCoord2f = GetGLFunc("glMultiTexCoord2fARB"); + + gl13 = true; // This is now true, so the new fade mask stuff can be done, if OpenGL version is less than 1.3, it still uses the old fade stuff. + DBG_Printf("GL_ARB_multitexture support: enabled\n"); - if (pglMultiTexCoord2f) - gl13 = true; // This is now true, so the new fade mask stuff can be done, if OpenGL version is less than 1.3, it still uses the old fade stuff. - } } + else + DBG_Printf("GL_ARB_multitexture support: disabled\n"); #undef GETOPENGLFUNC #endif diff --git a/src/hu_stuff.c b/src/hu_stuff.c index a6c6dbe0..80e30beb 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -1028,20 +1028,26 @@ UINT16 hu_demorings; static void HU_DrawDemoInfo(void) { V_DrawString(4, 188-24, V_YELLOWMAP, va(M_GetText("%s's replay"), player_names[0])); - V_DrawString(4, 188-16, V_YELLOWMAP|V_MONOSPACE, "SCORE:"); - V_DrawRightAlignedString(120, 188-16, V_MONOSPACE, va("%d", hu_demoscore)); + if (modeattacking) + { + V_DrawString(4, 188-16, V_YELLOWMAP|V_MONOSPACE, "SCORE:"); + V_DrawRightAlignedString(120, 188-16, V_MONOSPACE, va("%d", hu_demoscore)); - V_DrawString(4, 188- 8, V_YELLOWMAP|V_MONOSPACE, "TIME:"); - if (hu_demotime != UINT32_MAX) - V_DrawRightAlignedString(120, 188- 8, V_MONOSPACE, va("%i:%02i.%02i", - G_TicsToMinutes(hu_demotime,true), - G_TicsToSeconds(hu_demotime), - G_TicsToCentiseconds(hu_demotime))); - else - V_DrawRightAlignedString(120, 188- 8, V_MONOSPACE, "--:--.--"); + V_DrawString(4, 188- 8, V_YELLOWMAP|V_MONOSPACE, "TIME:"); + if (hu_demotime != UINT32_MAX) + V_DrawRightAlignedString(120, 188- 8, V_MONOSPACE, va("%i:%02i.%02i", + G_TicsToMinutes(hu_demotime,true), + G_TicsToSeconds(hu_demotime), + G_TicsToCentiseconds(hu_demotime))); + else + V_DrawRightAlignedString(120, 188- 8, V_MONOSPACE, "--:--.--"); - V_DrawString(4, 188 , V_YELLOWMAP|V_MONOSPACE, "RINGS:"); - V_DrawRightAlignedString(120, 188 , V_MONOSPACE, va("%d", hu_demorings)); + if (modeattacking == ATTACKING_RECORD) + { + V_DrawString(4, 188 , V_YELLOWMAP|V_MONOSPACE, "RINGS:"); + V_DrawRightAlignedString(120, 188 , V_MONOSPACE, va("%d", hu_demorings)); + } + } } // Heads up displays drawer, call each frame diff --git a/src/info.c b/src/info.c index a15646f0..c8f754b5 100644 --- a/src/info.c +++ b/src/info.c @@ -570,7 +570,7 @@ state_t states[NUMSTATES] = {SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE14}, // S_EGGMOBILE3_DIE13 {SPR_EGGO, 9, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE3_DIE14 {SPR_EGGO, 10, 5, {NULL}, 0, 0, S_EGGMOBILE3_FLEE2}, // S_EGGMOBILE3_FLEE1 - {SPR_EGGO, 11, 5, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE1}, // S_EGGMOBILE3_FLEE2 + {SPR_EGGO, 11, 5, {NULL}, 0, 0, S_EGGMOBILE3_FLEE1}, // S_EGGMOBILE3_FLEE2 // Boss 3 Propeller {SPR_PRPL, 0, 1, {NULL}, 0, 0, S_PROPELLER2}, // S_PROPELLER1 @@ -3349,7 +3349,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = sfx_None, // seesound 2*TICRATE, // reactiontime sfx_None, // attacksound - S_CCOMMAND1, // painstate + S_CCOMMAND3, // painstate 200, // painchance sfx_dmpain, // painsound S_NULL, // meleestate @@ -13452,7 +13452,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13479,7 +13479,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13506,7 +13506,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13533,7 +13533,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13560,7 +13560,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13587,7 +13587,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13614,7 +13614,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13641,7 +13641,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13668,7 +13668,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13695,7 +13695,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13722,7 +13722,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13749,7 +13749,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13776,7 +13776,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13803,7 +13803,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13830,7 +13830,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -13857,7 +13857,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1000, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP, // flags + MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, diff --git a/src/lua_baselib.c b/src/lua_baselib.c index 6124b349..ad5d740f 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -1744,7 +1744,26 @@ static int lib_gDoReborn(lua_State *L) static int lib_gExitLevel(lua_State *L) { + int n = lua_gettop(L); // Num arguments NOHUD + + // LUA EXTENSION: Custom exit like support + // Supported: + // G_ExitLevel(); [no modifications] + // G_ExitLevel(int) [nextmap override only] + // G_ExitLevel(bool) [skipstats only] + // G_ExitLevel(int, bool) [both of the above] + if (n >= 1) + { + if (lua_isnumber(L, 1) || n >= 2) + { + nextmapoverride = (INT16)luaL_checknumber(L, 1); + lua_pop(L, 1); // pop nextmapoverride; skipstats now 1 if available + } + skipstats = lua_optboolean(L, 1); + } + // --- + G_ExitLevel(); return 0; } diff --git a/src/lua_hook.h b/src/lua_hook.h index 85d00533..fae3bb7e 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -71,7 +71,7 @@ boolean LUAh_MobjDeath(mobj_t *target, mobj_t *inflictor, mobj_t *source); // Ho #define LUAh_JumpSpinSpecial(player) LUAh_PlayerHook(player, hook_JumpSpinSpecial) // Hook for P_DoJumpStuff (Spin button effect (mid-air)) boolean LUAh_BotTiccmd(player_t *bot, ticcmd_t *cmd); // Hook for B_BuildTiccmd boolean LUAh_BotAI(mobj_t *sonic, mobj_t *tails, ticcmd_t *cmd); // Hook for B_BuildTailsTiccmd by skin name -boolean LUAh_LinedefExecute(line_t *line, mobj_t *mo); // Hook for linedef executors +boolean LUAh_LinedefExecute(line_t *line, mobj_t *mo, sector_t *sector); // Hook for linedef executors boolean LUAh_PlayerMsg(int source, int target, int flags, char *msg); // Hook for chat messages boolean LUAh_DeathMsg(player_t *player, mobj_t *inflictor, mobj_t *source); // Hook for hurt messages diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index 4e9328e1..532726ac 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -873,7 +873,7 @@ boolean LUAh_BotAI(mobj_t *sonic, mobj_t *tails, ticcmd_t *cmd) } // Hook for linedef executors -boolean LUAh_LinedefExecute(line_t *line, mobj_t *mo) +boolean LUAh_LinedefExecute(line_t *line, mobj_t *mo, sector_t *sector) { if (!gL || !(hooksAvailable[hook_LinedefExecute/8] & (1<<(hook_LinedefExecute%8)))) return false; @@ -898,7 +898,8 @@ boolean LUAh_LinedefExecute(line_t *line, mobj_t *mo) LUA_PushUserdata(gL, line, META_LINE); LUA_PushUserdata(gL, mo, META_MOBJ); - LUA_Call(gL, 2); // pops hook function, line, mo + LUA_PushUserdata(gL, sector, META_SECTOR); + LUA_Call(gL, 3); // pops hook function, line, mo, sector lua_pop(gL, -1); lua_gc(gL, LUA_GCSTEP, 1); diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c index 6800a2f9..19390d50 100644 --- a/src/lua_hudlib.c +++ b/src/lua_hudlib.c @@ -13,6 +13,7 @@ #include "doomdef.h" #ifdef HAVE_BLUA #include "r_defs.h" +#include "r_local.h" #include "st_stuff.h" // hudinfo[] #include "g_game.h" #include "p_local.h" // camera_t @@ -222,6 +223,11 @@ static int hudinfo_num(lua_State *L) return 1; } +static int colormap_get(lua_State *L) +{ + return luaL_error(L, "colormap is not a struct."); +} + static int patch_get(lua_State *L) { patch_t *patch = *((patch_t **)luaL_checkudata(L, 1, META_PATCH)); @@ -352,7 +358,7 @@ static int libd_draw(lua_State *L) patch = *((patch_t **)luaL_checkudata(L, 3, META_PATCH)); flags = luaL_optinteger(L, 4, 0); if (!lua_isnoneornil(L, 5)) - colormap = luaL_checkudata(L, 5, META_COLORMAP); + colormap = *((UINT8 **)luaL_checkudata(L, 5, META_COLORMAP)); flags &= ~V_PARAMMASK; // Don't let crashes happen. @@ -374,7 +380,7 @@ static int libd_drawScaled(lua_State *L) patch = *((patch_t **)luaL_checkudata(L, 4, META_PATCH)); flags = luaL_optinteger(L, 5, 0); if (!lua_isnoneornil(L, 6)) - colormap = luaL_checkudata(L, 6, META_COLORMAP); + colormap = *((UINT8 **)luaL_checkudata(L, 6, META_COLORMAP)); flags &= ~V_PARAMMASK; // Don't let crashes happen. @@ -490,6 +496,35 @@ static int libd_stringWidth(lua_State *L) return 1; } +static int libd_getColormap(lua_State *L) +{ + INT32 skinnum = TC_DEFAULT; + skincolors_t color = luaL_optinteger(L, 2, 0); + UINT8* colormap = NULL; + //HUDSAFE + if (lua_isnoneornil(L, 1)) + ; // defaults to TC_DEFAULT + else if (lua_type(L, 1) == LUA_TNUMBER) // skin number + { + skinnum = (INT32)luaL_checkinteger(L, 1); + if (skinnum < TC_ALLWHITE || skinnum >= MAXSKINS) + return luaL_error(L, "argument #1 is out of range"); + } + else // skin name + { + const char *skinname = luaL_checkstring(L, 1); + INT32 i = R_SkinAvailable(skinname); + if (i != -1) // if -1, just default to TC_DEFAULT as above + skinnum = i; + } + + // all was successful above, now we generate the colormap at last! + + colormap = R_GetTranslationColormap(skinnum, color, GTC_CACHE); + LUA_PushUserdata(L, colormap, META_COLORMAP); // push as META_COLORMAP userdata, specifically for patches to use! + return 1; +} + static luaL_Reg lib_draw[] = { {"patchExists", libd_patchExists}, {"cachePatch", libd_cachePatch}, @@ -500,6 +535,7 @@ static luaL_Reg lib_draw[] = { {"drawFill", libd_drawFill}, {"drawString", libd_drawString}, {"stringWidth", libd_stringWidth}, + {"getColormap", libd_getColormap}, {NULL, NULL} }; @@ -592,6 +628,11 @@ int LUA_HudLib(lua_State *L) lua_setmetatable(L, -2); lua_setglobal(L, "hudinfo"); + luaL_newmetatable(L, META_COLORMAP); + lua_pushcfunction(L, colormap_get); + lua_setfield(L, -2, "__index"); + lua_pop(L,1); + luaL_newmetatable(L, META_PATCH); lua_pushcfunction(L, patch_get); lua_setfield(L, -2, "__index"); diff --git a/src/lua_maplib.c b/src/lua_maplib.c index 3209fc53..80f66ed6 100644 --- a/src/lua_maplib.c +++ b/src/lua_maplib.c @@ -89,7 +89,8 @@ enum line_e { line_validcount, line_firsttag, line_nexttag, - line_text + line_text, + line_callcount }; static const char *const line_opt[] = { @@ -111,6 +112,7 @@ static const char *const line_opt[] = { "firsttag", "nexttag", "text", + "callcount", NULL}; enum side_e { @@ -574,6 +576,9 @@ static int line_get(lua_State *L) case line_text: lua_pushstring(L, line->text); return 1; + case line_callcount: + lua_pushinteger(L, line->callcount); + return 1; } return 0; } @@ -1033,7 +1038,7 @@ static int ffloor_set(lua_State *L) boolean flag; fixed_t lastpos = *ffloor->topheight; sector_t *sector = §ors[ffloor->secnum]; - sector->floorheight = (fixed_t)luaL_checkinteger(L, 3); + sector->ceilingheight = (fixed_t)luaL_checkinteger(L, 3); flag = P_CheckSector(sector, true); if (flag && sector->numattached) { @@ -1052,7 +1057,7 @@ static int ffloor_set(lua_State *L) boolean flag; fixed_t lastpos = *ffloor->bottomheight; sector_t *sector = §ors[ffloor->secnum]; - sector->ceilingheight = (fixed_t)luaL_checkinteger(L, 3); + sector->floorheight = (fixed_t)luaL_checkinteger(L, 3); flag = P_CheckSector(sector, true); if (flag && sector->numattached) { diff --git a/src/m_menu.c b/src/m_menu.c index 830b2644..b8be38e8 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -250,7 +250,8 @@ static void M_ModeAttackEndGame(INT32 choice); static void M_SetGuestReplay(INT32 choice); static void M_ChoosePlayer(INT32 choice); menu_t SP_GameStatsDef, SP_LevelStatsDef; -static menu_t SP_TimeAttackDef, SP_NightsAttackDef, SP_ReplayDef, SP_GuestReplayDef, SP_GhostDef; +static menu_t SP_TimeAttackDef, SP_ReplayDef, SP_GuestReplayDef, SP_GhostDef; +static menu_t SP_NightsAttackDef, SP_NightsReplayDef, SP_NightsGuestReplayDef, SP_NightsGhostDef; // Multiplayer #ifndef NONET @@ -733,6 +734,17 @@ static menuitem_t SP_ReplayMenu[] = {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_TimeAttackDef, 50} }; +static menuitem_t SP_NightsReplayMenu[] = +{ + {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Score", M_ReplayTimeAttack, 8}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Time", M_ReplayTimeAttack,16}, + + {IT_WHITESTRING|IT_CALL, NULL, "Replay Last", M_ReplayTimeAttack,29}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Guest", M_ReplayTimeAttack,37}, + + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_NightsAttackDef, 50} +}; + static menuitem_t SP_GuestReplayMenu[] = { {IT_WHITESTRING|IT_CALL, NULL, "Save Best Score as Guest", M_SetGuestReplay, 0}, @@ -745,6 +757,17 @@ static menuitem_t SP_GuestReplayMenu[] = {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_TimeAttackDef, 50} }; +static menuitem_t SP_NightsGuestReplayMenu[] = +{ + {IT_WHITESTRING|IT_CALL, NULL, "Save Best Score as Guest", M_SetGuestReplay, 8}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Best Time as Guest", M_SetGuestReplay,16}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Last as Guest", M_SetGuestReplay,24}, + + {IT_WHITESTRING|IT_CALL, NULL, "Delete Guest Replay", M_SetGuestReplay,37}, + + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_NightsAttackDef, 50} +}; + static menuitem_t SP_GhostMenu[] = { {IT_STRING|IT_CVAR, NULL, "Best Score", &cv_ghost_bestscore, 0}, @@ -757,18 +780,37 @@ static menuitem_t SP_GhostMenu[] = {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_TimeAttackDef, 50} }; +static menuitem_t SP_NightsGhostMenu[] = +{ + {IT_STRING|IT_CVAR, NULL, "Best Score", &cv_ghost_bestscore, 8}, + {IT_STRING|IT_CVAR, NULL, "Best Time", &cv_ghost_besttime, 16}, + {IT_STRING|IT_CVAR, NULL, "Last", &cv_ghost_last, 24}, + + {IT_STRING|IT_CVAR, NULL, "Guest", &cv_ghost_guest, 37}, + + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_NightsAttackDef, 50} +}; + // Single Player Nights Attack static menuitem_t SP_NightsAttackMenu[] = { {IT_STRING|IT_CVAR, NULL, "Level", &cv_nextmap, 44}, - {IT_STRING|IT_CVAR, NULL, "Show Records For", &cv_dummymares, 60}, - {IT_WHITESTRING|IT_CALL, NULL, "Start", M_ChooseNightsAttack, 130}, + {IT_STRING|IT_CVAR, NULL, "Show Records For", &cv_dummymares, 54}, + + {IT_DISABLED, NULL, "Guest Option...", &SP_NightsGuestReplayDef, 108}, + {IT_DISABLED, NULL, "Replay...", &SP_NightsReplayDef, 118}, + {IT_DISABLED, NULL, "Ghosts...", &SP_NightsGhostDef, 128}, + {IT_WHITESTRING|IT_CALL, NULL, "Start", M_ChooseNightsAttack, 138}, }; enum { nalevel, narecords, + + naguest, + nareplay, + naghost, nastart }; @@ -1515,6 +1557,40 @@ static menu_t SP_NightsAttackDef = 0, NULL }; +static menu_t SP_NightsReplayDef = +{ + "M_NIGHTS", + sizeof(SP_NightsReplayMenu)/sizeof(menuitem_t), + &SP_NightsAttackDef, + SP_NightsReplayMenu, + M_DrawNightsAttackMenu, + 32, 120, + 0, + NULL +}; +static menu_t SP_NightsGuestReplayDef = +{ + "M_NIGHTS", + sizeof(SP_NightsGuestReplayMenu)/sizeof(menuitem_t), + &SP_NightsAttackDef, + SP_NightsGuestReplayMenu, + M_DrawNightsAttackMenu, + 32, 120, + 0, + NULL +}; +static menu_t SP_NightsGhostDef = +{ + "M_NIGHTS", + sizeof(SP_NightsGhostMenu)/sizeof(menuitem_t), + &SP_NightsAttackDef, + SP_NightsGhostMenu, + M_DrawNightsAttackMenu, + 32, 120, + 0, + NULL +}; + menu_t SP_PlayerDef = { @@ -1682,7 +1758,7 @@ static void Nextmap_OnChange(void) char *leveltitle; char tabase[256]; short i; - boolean active = false; + boolean active; // Update the string in the consvar. Z_Free(cv_nextmap.zstring); @@ -1697,9 +1773,53 @@ static void Nextmap_OnChange(void) SP_NightsAttackMenu[narecords].status = IT_DISABLED; else SP_NightsAttackMenu[narecords].status = IT_STRING|IT_CVAR; + + // Do the replay things. + active = false; + SP_NightsAttackMenu[naguest].status = IT_DISABLED; + SP_NightsAttackMenu[nareplay].status = IT_DISABLED; + SP_NightsAttackMenu[naghost].status = IT_DISABLED; + + // Check if file exists, if not, disable REPLAY option + sprintf(tabase,"%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s",srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value)); + for (i = 0; i < 4; i++) { + SP_NightsReplayMenu[i].status = IT_DISABLED; + SP_NightsGuestReplayMenu[i].status = IT_DISABLED; + } + if (FIL_FileExists(va("%s-score-best.lmp", tabase))) { + SP_NightsReplayMenu[0].status = IT_WHITESTRING|IT_CALL; + SP_NightsGuestReplayMenu[0].status = IT_WHITESTRING|IT_CALL; + active = true; + } + if (FIL_FileExists(va("%s-time-best.lmp", tabase))) { + SP_NightsReplayMenu[1].status = IT_WHITESTRING|IT_CALL; + SP_NightsGuestReplayMenu[1].status = IT_WHITESTRING|IT_CALL; + active = true; + } + if (FIL_FileExists(va("%s-last.lmp", tabase))) { + SP_NightsReplayMenu[2].status = IT_WHITESTRING|IT_CALL; + SP_NightsGuestReplayMenu[2].status = IT_WHITESTRING|IT_CALL; + active = true; + } + if (FIL_FileExists(va("%s-guest.lmp", tabase))) { + SP_NightsReplayMenu[3].status = IT_WHITESTRING|IT_CALL; + SP_NightsGuestReplayMenu[3].status = IT_WHITESTRING|IT_CALL; + active = true; + } + if (active) { + SP_NightsAttackMenu[naguest].status = IT_WHITESTRING|IT_SUBMENU; + SP_NightsAttackMenu[nareplay].status = IT_WHITESTRING|IT_SUBMENU; + SP_NightsAttackMenu[naghost].status = IT_WHITESTRING|IT_SUBMENU; + } + else if(itemOn == nareplay) // Reset lastOn so replay isn't still selected when not available. + { + currentMenu->lastOn = itemOn; + itemOn = nastart; + } } else if (currentMenu == &SP_TimeAttackDef) { + active = false; SP_TimeAttackMenu[taguest].status = IT_DISABLED; SP_TimeAttackMenu[tareplay].status = IT_DISABLED; SP_TimeAttackMenu[taghost].status = IT_DISABLED; @@ -5287,54 +5407,69 @@ void M_DrawNightsAttackMenu(void) if (P_HasGrades(cv_nextmap.value, 0)) V_DrawScaledPatch(200, 28 + 8, 0, ngradeletters[bestoverall]); - if (P_HasGrades(cv_nextmap.value, cv_dummymares.value)) + if (currentMenu == &SP_NightsAttackDef) { - V_DrawString(160-88, 130, V_YELLOWMAP, "BEST GRADE:"); - V_DrawSmallScaledPatch(160 + 86 - (ngradeletters[bestgrade]->width/2), - 130 + 8 - (ngradeletters[bestgrade]->height/2), - 0, ngradeletters[bestgrade]); - } - - if (!bestscore) - sprintf(beststr, "(none)"); - else - sprintf(beststr, "%u", bestscore); - - V_DrawString(160 - 88, 140, V_YELLOWMAP, "BEST SCORE:"); - V_DrawRightAlignedString(160 + 88, 140, V_ALLOWLOWERCASE, beststr); - - if (besttime == UINT32_MAX) - sprintf(beststr, "(none)"); - else - sprintf(beststr, "%i:%02i.%02i", G_TicsToMinutes(besttime, true), - G_TicsToSeconds(besttime), - G_TicsToCentiseconds(besttime)); - - V_DrawString(160-88, 150, V_YELLOWMAP, "BEST TIME:"); - V_DrawRightAlignedString(160+88, 150, V_ALLOWLOWERCASE, beststr); - - if (cv_dummymares.value == 0) { - // Draw record emblems. - em = M_GetLevelEmblems(cv_nextmap.value); - while (em) + if (P_HasGrades(cv_nextmap.value, cv_dummymares.value)) { - switch (em->type) - { - case ET_NGRADE: yHeight = 130; break; - case ET_NTIME: yHeight = 150; break; - default: - goto skipThisOne; - } - - if (em->collected) - V_DrawSmallMappedPatch(160+88, yHeight, 0, W_CachePatchName(M_GetEmblemPatch(em), PU_CACHE), - R_GetTranslationColormap(TC_DEFAULT, M_GetEmblemColor(em), GTC_CACHE)); - else - V_DrawSmallScaledPatch(160+88, yHeight, 0, W_CachePatchName("NEEDIT", PU_CACHE)); - - skipThisOne: - em = M_GetLevelEmblems(-1); + V_DrawString(160-88, 112, V_YELLOWMAP, "BEST GRADE:"); + V_DrawSmallScaledPatch(160 + 86 - (ngradeletters[bestgrade]->width/2), + 112 + 8 - (ngradeletters[bestgrade]->height/2), + 0, ngradeletters[bestgrade]); } + + if (!bestscore) + sprintf(beststr, "(none)"); + else + sprintf(beststr, "%u", bestscore); + + V_DrawString(160 - 88, 122, V_YELLOWMAP, "BEST SCORE:"); + V_DrawRightAlignedString(160 + 88, 122, V_ALLOWLOWERCASE, beststr); + + if (besttime == UINT32_MAX) + sprintf(beststr, "(none)"); + else + sprintf(beststr, "%i:%02i.%02i", G_TicsToMinutes(besttime, true), + G_TicsToSeconds(besttime), + G_TicsToCentiseconds(besttime)); + + V_DrawString(160-88, 132, V_YELLOWMAP, "BEST TIME:"); + V_DrawRightAlignedString(160+88, 132, V_ALLOWLOWERCASE, beststr); + + if (cv_dummymares.value == 0) { + // Draw record emblems. + em = M_GetLevelEmblems(cv_nextmap.value); + while (em) + { + switch (em->type) + { + case ET_NGRADE: yHeight = 112; break; + case ET_NTIME: yHeight = 132; break; + default: + goto skipThisOne; + } + + if (em->collected) + V_DrawSmallMappedPatch(160+88, yHeight, 0, W_CachePatchName(M_GetEmblemPatch(em), PU_CACHE), + R_GetTranslationColormap(TC_DEFAULT, M_GetEmblemColor(em), GTC_CACHE)); + else + V_DrawSmallScaledPatch(160+88, yHeight, 0, W_CachePatchName("NEEDIT", PU_CACHE)); + + skipThisOne: + em = M_GetLevelEmblems(-1); + } + } + } + // ALWAYS DRAW level name even when not on this menu! + else + { + consvar_t *ncv; + INT32 x = SP_NightsAttackDef.x; + INT32 y = SP_NightsAttackDef.y; + + ncv = (consvar_t *)SP_NightsAttackMenu[0].itemaction; + V_DrawString(x, y + SP_NightsAttackMenu[0].alphaKey, V_TRANSLUCENT, SP_NightsAttackMenu[0].text); + V_DrawString(BASEVIDWIDTH - x - V_StringWidth(ncv->string, 0), + y + SP_NightsAttackMenu[0].alphaKey, V_YELLOWMAP|V_TRANSLUCENT, ncv->string); } } } @@ -5368,16 +5503,25 @@ static void M_NightsAttack(INT32 choice) } // Player has selected the "START" from the nights attack screen -// (no demo recording yet) static void M_ChooseNightsAttack(INT32 choice) { + char nameofdemo[256]; (void)choice; emeralds = 0; M_ClearMenus(true); modeattacking = ATTACKING_NIGHTS; - // Demos and NiGHTS don't play well together - G_DeferedInitNew(false, G_BuildMapName(cv_nextmap.value), (UINT8)(cv_chooseskin.value-1), false, false); + I_mkdir(va("%s"PATHSEP"replay", srb2home), 0755); + I_mkdir(va("%s"PATHSEP"replay"PATHSEP"%s", srb2home, timeattackfolder), 0755); + + snprintf(nameofdemo, sizeof nameofdemo, "replay"PATHSEP"%s"PATHSEP"%s-last", timeattackfolder, G_BuildMapName(cv_nextmap.value)); + + if (!cv_autorecord.value) + remove(va("%s"PATHSEP"%s.lmp", srb2home, nameofdemo)); + else + G_RecordDemo(nameofdemo); + + G_DeferedInitNew(false, G_BuildMapName(cv_nextmap.value), 0, false, false); } // Player has selected the "START" from the time attack screen @@ -5415,28 +5559,50 @@ static void M_ReplayTimeAttack(INT32 choice) M_ClearMenus(true); modeattacking = ATTACKING_RECORD; // set modeattacking before G_DoPlayDemo so the map loader knows - switch(choice) { - default: - case 0: // best score - which = "score-best"; - break; - case 1: // best time - which = "time-best"; - break; - case 2: // best rings - which = "rings-best"; - break; - case 3: // last - which = "last"; - break; - case 4: // guest - // srb2/replay/main/map01-guest.lmp - G_DoPlayDemo(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-guest.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value))); - return; + if (currentMenu == &SP_ReplayDef) + { + switch(choice) { + default: + case 0: // best score + which = "score-best"; + break; + case 1: // best time + which = "time-best"; + break; + case 2: // best rings + which = "rings-best"; + break; + case 3: // last + which = "last"; + break; + case 4: // guest + // srb2/replay/main/map01-guest.lmp + G_DoPlayDemo(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-guest.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value))); + return; + } + // srb2/replay/main/map01-sonic-time-best.lmp + G_DoPlayDemo(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%s-%s.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value), cv_chooseskin.string, which)); + } + else if (currentMenu == &SP_NightsReplayDef) + { + switch(choice) { + default: + case 0: // best score + which = "score-best"; + break; + case 1: // best time + which = "time-best"; + break; + case 2: // last + which = "last"; + break; + case 3: // guest + which = "guest"; + break; + } + // srb2/replay/main/map01-score-best.lmp + G_DoPlayDemo(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%s.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value), which)); } - - // srb2/replay/main/map01-sonic-time-best.lmp - G_DoPlayDemo(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%s-%s.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value), cv_chooseskin.string, which)); } static void M_EraseGuest(INT32 choice) @@ -5445,17 +5611,24 @@ static void M_EraseGuest(INT32 choice) (void)choice; if (FIL_FileExists(rguest)) remove(rguest); - M_SetupNextMenu(&SP_TimeAttackDef); + if (currentMenu == &SP_NightsGuestReplayDef) + M_SetupNextMenu(&SP_NightsAttackDef); + else + M_SetupNextMenu(&SP_TimeAttackDef); CV_AddValue(&cv_nextmap, -1); CV_AddValue(&cv_nextmap, 1); M_StartMessage(M_GetText("Guest replay data erased.\n"),NULL,MM_NOTHING); } -static void M_OverwriteGuest(const char *which) +static void M_OverwriteGuest(const char *which, boolean nights) { char *rguest = Z_StrDup(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-guest.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value))); UINT8 *buf; - size_t len = FIL_ReadFile(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%s-%s.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value), cv_chooseskin.string, which), &buf); + size_t len; + if (!nights) + len = FIL_ReadFile(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%s-%s.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value), cv_chooseskin.string, which), &buf); + else + len = FIL_ReadFile(va("%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s-%s.lmp", srb2home, timeattackfolder, G_BuildMapName(cv_nextmap.value), which), &buf); if (!len) { return; } @@ -5465,7 +5638,10 @@ static void M_OverwriteGuest(const char *which) } FIL_WriteFile(rguest, buf, len); Z_Free(rguest); - M_SetupNextMenu(&SP_TimeAttackDef); + if (currentMenu == &SP_NightsGuestReplayDef) + M_SetupNextMenu(&SP_NightsAttackDef); + else + M_SetupNextMenu(&SP_TimeAttackDef); CV_AddValue(&cv_nextmap, -1); CV_AddValue(&cv_nextmap, 1); M_StartMessage(M_GetText("Guest replay data saved.\n"),NULL,MM_NOTHING); @@ -5474,30 +5650,32 @@ static void M_OverwriteGuest(const char *which) static void M_OverwriteGuest_Time(INT32 choice) { (void)choice; - M_OverwriteGuest("time-best"); + M_OverwriteGuest("time-best", currentMenu == &SP_NightsGuestReplayDef); } static void M_OverwriteGuest_Score(INT32 choice) { (void)choice; - M_OverwriteGuest("score-best"); + M_OverwriteGuest("score-best", currentMenu == &SP_NightsGuestReplayDef); } static void M_OverwriteGuest_Rings(INT32 choice) { (void)choice; - M_OverwriteGuest("rings-best"); + M_OverwriteGuest("rings-best", false); } static void M_OverwriteGuest_Last(INT32 choice) { (void)choice; - M_OverwriteGuest("last"); + M_OverwriteGuest("last", currentMenu == &SP_NightsGuestReplayDef); } static void M_SetGuestReplay(INT32 choice) { void (*which)(INT32); + if (currentMenu == &SP_NightsGuestReplayDef && choice >= 2) + choice++; // skip best rings switch(choice) { case 0: // best score @@ -5526,51 +5704,39 @@ static void M_SetGuestReplay(INT32 choice) static void M_ModeAttackRetry(INT32 choice) { (void)choice; - if (modeattacking == ATTACKING_RECORD) // Cancel recording - { - G_CheckDemoStatus(); + G_CheckDemoStatus(); // Cancel recording + if (modeattacking == ATTACKING_RECORD) M_ChooseTimeAttack(0); - } else if (modeattacking == ATTACKING_NIGHTS) - { - // No demos to cancel M_ChooseNightsAttack(0); - } } static void M_ModeAttackEndGame(INT32 choice) { (void)choice; - if (modeattacking == ATTACKING_RECORD) // Cancel recording + G_CheckDemoStatus(); // Cancel recording + + if (gamestate == GS_LEVEL || gamestate == GS_INTERMISSION) + Command_ExitGame_f(); + + M_StartControlPanel(); + switch(modeattacking) { - G_CheckDemoStatus(); - - if (gamestate == GS_LEVEL || gamestate == GS_INTERMISSION) - Command_ExitGame_f(); - - M_StartControlPanel(); + default: + case ATTACKING_RECORD: currentMenu = &SP_TimeAttackDef; - itemOn = currentMenu->lastOn; - modeattacking = ATTACKING_NONE; - G_SetGamestate(GS_TIMEATTACK); - S_ChangeMusic(mus_racent, true); - // Update replay availability. - CV_AddValue(&cv_nextmap, 1); - CV_AddValue(&cv_nextmap, -1); - } - else if (modeattacking == ATTACKING_NIGHTS) - { - // No demos to cancel - if (gamestate == GS_LEVEL || gamestate == GS_INTERMISSION) - Command_ExitGame_f(); - - M_StartControlPanel(); + break; + case ATTACKING_NIGHTS: currentMenu = &SP_NightsAttackDef; - itemOn = currentMenu->lastOn; - modeattacking = ATTACKING_NONE; - G_SetGamestate(GS_TIMEATTACK); - S_ChangeMusic(mus_racent, true); + break; } + itemOn = currentMenu->lastOn; + G_SetGamestate(GS_TIMEATTACK); + modeattacking = ATTACKING_NONE; + S_ChangeMusic(mus_racent, true); + // Update replay availability. + CV_AddValue(&cv_nextmap, 1); + CV_AddValue(&cv_nextmap, -1); } // ======== diff --git a/src/m_random.c b/src/m_random.c index ddf5e135..fce65b88 100644 --- a/src/m_random.c +++ b/src/m_random.c @@ -131,7 +131,9 @@ INT32 P_RandomKeyD(const char *rfile, INT32 rline, INT32 a) { CONS_Printf("P_RandomKey() at: %sp %d\n", rfile, rline); #endif - return (INT32)(((P_Random()|(P_Random() << 8))/65536.0f)*a); + INT32 prandom = P_Random(); // note: forcing explicit function call order + prandom |= P_Random() << 8; // (function call order is not strictly defined) + return (INT32)((prandom/65536.0f)*a); } /** Provides a random number in between a specific range. @@ -148,7 +150,9 @@ INT32 P_RandomRangeD(const char *rfile, INT32 rline, INT32 a, INT32 b) { CONS_Printf("P_RandomRange() at: %sp %d\n", rfile, rline); #endif - return (INT32)(((P_Random()|(P_Random() << 8))/65536.0f)*(b-a+1))+a; + INT32 prandom = P_Random(); // note: forcing explicit function call order + prandom |= P_Random() << 8; // (function call order is not strictly defined) + return (INT32)((prandom/65536.0f)*(b-a+1))+a; } /** Provides a random byte without saving what the seed would be. diff --git a/src/p_enemy.c b/src/p_enemy.c index 2a8280f1..54e15112 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -2089,7 +2089,7 @@ void A_Boss1Laser(mobj_t *actor) actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y); if (mobjinfo[locvar1].seesound) S_StartSound(actor, mobjinfo[locvar1].seesound); - if (!(actor->spawnpoint->options & MTF_AMBUSH)) + if (!(actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH)) { point = P_SpawnMobj(x + P_ReturnThrustX(actor, actor->angle, actor->radius), y + P_ReturnThrustY(actor, actor->angle, actor->radius), actor->z - actor->height / 2, MT_EGGMOBILE_TARGET); point->fuse = actor->tics+1; @@ -2097,10 +2097,10 @@ void A_Boss1Laser(mobj_t *actor) P_SetTarget(&actor->target, point); } } - else if (actor->target && !(actor->spawnpoint->options & MTF_AMBUSH)) + else if (actor->target && !(actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH)) actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y); - if (actor->spawnpoint->options & MTF_AMBUSH) + if (actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH) angle = FixedAngle(FixedDiv(actor->tics*160*FRACUNIT, actor->state->tics*FRACUNIT) + 10*FRACUNIT); else angle = R_PointToAngle2(z + (mobjinfo[locvar1].height>>1), 0, actor->target->z, R_PointToDist2(x, y, actor->target->x, actor->target->y)); @@ -9608,10 +9608,6 @@ void A_TrapShot(mobj_t *actor) missile->momz = FixedMul(FINESINE(vertang>>ANGLETOFINESHIFT), speed); } -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// TODO: Test the HELL out of these, then remove these annoying lines that are only here to remind you of that -SH // -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Function: A_VileTarget // // Description: Spawns an object directly on the target, and sets this object as the actor's tracer. diff --git a/src/p_floor.c b/src/p_floor.c index 6d28175e..f798174a 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -1242,11 +1242,8 @@ void T_FloatSector(levelspecthink_t *floater) if (actionsector) { - boolean tofloat = false; - boolean floatanyway = false; // Ignore the crumblestate setting. - fixed_t waterheight = actionsector->floorheight - 512*FRACUNIT; - - waterheight = P_SectorCheckWater(actionsector, floater->sector); // find the highest suitable water block around + //boolean floatanyway = false; // Ignore the crumblestate setting. + fixed_t waterheight = P_SectorCheckWater(actionsector, floater->sector); // find the highest suitable water block around if (waterheight == cheeseheight) // same height, no floating needed ; @@ -1254,10 +1251,8 @@ void T_FloatSector(levelspecthink_t *floater) ; else if (floater->sector->ceilingheight == actionsector->ceilingheight && waterheight > cheeseheight) // too high ; - else // we have something to float in! Or we're for some reason above the ground, let's fall anyway - tofloat = true; - - if (tofloat && (floater->sector->crumblestate == 0 || floater->sector->crumblestate >= 3 || floatanyway)) + // we have something to float in! Or we're for some reason above the ground, let's fall anyway + else if (floater->sector->crumblestate == 0 || floater->sector->crumblestate >= 3/* || floatanyway*/) EV_BounceSector(floater->sector, FRACUNIT, floater->sourceline); P_RecalcPrecipInSector(actionsector); @@ -2252,6 +2247,9 @@ void T_EachTimeThinker(levelspecthink_t *eachtime) // This should now run ONLY the stuff for eachtime->sourceline itself, instead of all trigger linedefs sharing the same tag. // Makes much more sense doing it this way, honestly. P_RunTriggerLinedef(eachtime->sourceline, players[affectPlayer].mo, sec); + + if (!eachtime->sourceline->special) // this happens only for "Trigger on X calls" linedefs + P_RemoveThinker(&eachtime->thinker); } } @@ -2852,30 +2850,33 @@ void EV_CrumbleChain(sector_t *sec, ffloor_t *rover) fixed_t topy, bottomy; fixed_t topz; fixed_t a, b, c; + mobjtype_t type = MT_ROCKCRUMBLE1; + + // If the control sector has a special + // of Section3:7-15, use the custom debris. + if (GETSECSPECIAL(rover->master->frontsector->special, 3) >= 8) + type = MT_ROCKCRUMBLE1+(GETSECSPECIAL(rover->master->frontsector->special, 3)-7); // soundorg z height never gets set normally, so MEH. sec->soundorg.z = sec->floorheight; S_StartSound(&sec->soundorg, sfx_crumbl); - // Find the leftmost vertex in the subsector. + // Find the outermost vertexes in the subsector for (i = 0; i < sec->linecount; i++) + { + // Find the leftmost vertex in the subsector. if ((sec->lines[i]->v1->x < sec->lines[leftmostvertex]->v1->x)) leftmostvertex = i; - - // Find the rightmost vertex in the subsector. - for (i = 0; i < sec->linecount; i++) + // Find the rightmost vertex in the subsector. if ((sec->lines[i]->v1->x > sec->lines[rightmostvertex]->v1->x)) rightmostvertex = i; - - // Find the topmost vertex in the subsector. - for (i = 0; i < sec->linecount; i++) + // Find the topmost vertex in the subsector. if ((sec->lines[i]->v1->y > sec->lines[topmostvertex]->v1->y)) topmostvertex = i; - - // Find the bottommost vertex in the subsector. - for (i = 0; i < sec->linecount; i++) + // Find the bottommost vertex in the subsector. if ((sec->lines[i]->v1->y < sec->lines[bottommostvertex]->v1->y)) bottommostvertex = i; + } leftx = sec->lines[leftmostvertex]->v1->x+(16<lines[rightmostvertex]->v1->x; @@ -2892,13 +2893,7 @@ void EV_CrumbleChain(sector_t *sec, ffloor_t *rover) mobj_t *spawned = NULL; for (c = topz; c > *rover->bottomheight; c -= (32<master->frontsector->special, 3) >= 8) - spawned = P_SpawnMobj(a, b, c, MT_ROCKCRUMBLE1+(GETSECSPECIAL(rover->master->frontsector->special, 3)-7)); - else - spawned = P_SpawnMobj(a, b, c, MT_ROCKCRUMBLE1); - + spawned = P_SpawnMobj(a, b, c, type); spawned->fuse = 3*TICRATE; } } diff --git a/src/p_local.h b/src/p_local.h index f5c765fe..9f8918cd 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -373,6 +373,10 @@ void P_DoNightsScore(player_t *player); extern INT32 ceilmovesound; +// Factor to scale scrolling effect into mobj-carrying properties = 3/32. +// (This is so scrolling floors and objects on them can move at same speed.) +#define CARRYFACTOR ((3*FRACUNIT)/32) + void P_MixUp(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle, INT16 starpostx, INT16 starposty, INT16 starpostz, INT32 starpostnum, tic_t starposttime, angle_t starpostangle, diff --git a/src/p_map.c b/src/p_map.c index be59af0a..62cbf7b7 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -211,12 +211,160 @@ void P_DoSpring(mobj_t *spring, mobj_t *object) } } +static void P_DoFanAndGasJet(mobj_t *spring, mobj_t *object) +{ + player_t *p = object->player; // will be NULL if not a player + fixed_t zdist; // distance between bottoms + fixed_t speed = spring->info->mass; // conveniently, both fans and gas jets use this for the vertical thrust + SINT8 flipval = P_MobjFlip(spring); // virtually everything here centers around the thruster's gravity, not the object's! + + if (p && object->state == &states[object->info->painstate]) // can't use fans and gas jets when player is in pain! + return; + + // is object below thruster's position? if not, calculate distance between their bottoms + if (spring->eflags & MFE_VERTICALFLIP) + { + if (object->z + object->height > spring->z + spring->height) + return; + zdist = (spring->z + spring->height) - (object->z + object->height); + } + else + { + if (object->z < spring->z) + return; + zdist = object->z - spring->z; + } + + switch (spring->type) + { + case MT_FAN: // fan + if (zdist > (spring->health << FRACBITS)) // max z distance determined by health (set by map thing angle) + break; + if (flipval*object->momz >= FixedMul(speed, spring->scale)) // if object's already moving faster than your best, don't bother + break; + if (p && (p->climbing || p->pflags & PF_GLIDING)) // doesn't affect Knux when he's using his abilities! + break; + + object->momz += flipval*FixedMul(speed/4, spring->scale); + + // limit the speed if too high + if (flipval*object->momz > FixedMul(speed, spring->scale)) + object->momz = flipval*FixedMul(speed, spring->scale); + + if (p && !p->powers[pw_tailsfly]) // doesn't reset anim for Tails' flight + { + P_ResetPlayer(p); + if (p->panim != PA_FALL) + P_SetPlayerMobjState(object, S_PLAY_FALL1); + } + break; + case MT_STEAM: // Steam + if (zdist > FixedMul(16*FRACUNIT, spring->scale)) + break; + if (spring->state != &states[S_STEAM1]) // Only when it bursts + break; + + object->momz = flipval*FixedMul(speed, FixedSqrt(FixedMul(spring->scale, object->scale))); // scale the speed with both objects' scales, just like with springs! + + if (p) + { + P_ResetPlayer(p); + if (p->panim != PA_FALL) + P_SetPlayerMobjState(object, S_PLAY_FALL1); + } + break; + default: + break; + } +} + +static void P_DoTailsCarry(player_t *sonic, player_t *tails) +{ + INT32 p; + fixed_t zdist; // z distance between the two players' bottoms + + if ((tails->pflags & PF_CARRIED) && tails->mo->tracer == sonic->mo) + return; + if ((sonic->pflags & PF_CARRIED) && sonic->mo->tracer == tails->mo) + return; + + if (!tails->powers[pw_tailsfly] && !(tails->charability == CA_FLY && (tails->mo->state >= &states[S_PLAY_SPC1] && tails->mo->state <= &states[S_PLAY_SPC4]))) + return; + + if (tails->bot == 1) + return; + + if (sonic->pflags & PF_NIGHTSMODE) + return; + + if (sonic->mo->tracer && sonic->mo->tracer->type == MT_TUBEWAYPOINT + && !(sonic->pflags & PF_ROPEHANG)) + return; // don't steal players from zoomtubes! + + if ((sonic->mo->eflags & MFE_VERTICALFLIP) != (tails->mo->eflags & MFE_VERTICALFLIP)) + return; // Both should be in same gravity + + if (tails->mo->eflags & MFE_VERTICALFLIP) + { + if (tails->mo->ceilingz - (tails->mo->z + tails->mo->height) < sonic->mo->height-FixedMul(2*FRACUNIT, sonic->mo->scale)) + return; + } + else if (tails->mo->z - tails->mo->floorz < sonic->mo->height-FixedMul(2*FRACUNIT, sonic->mo->scale)) + return; // No room to pick up this guy! + + // Search in case another player is already being carried by this fox. + for (p = 0; p < MAXPLAYERS; p++) + if (playeringame[p] && players[p].mo + && players[p].pflags & PF_CARRIED && players[p].mo->tracer == tails->mo) + return; + + if (tails->mo->eflags & MFE_VERTICALFLIP) + zdist = (sonic->mo->z + sonic->mo->height) - (tails->mo->z + tails->mo->height); + else + zdist = tails->mo->z - sonic->mo->z; + + if (zdist <= sonic->mo->height + FixedMul(FRACUNIT, sonic->mo->scale) + && zdist > sonic->mo->height*2/3 + && P_MobjFlip(tails->mo)*sonic->mo->momz <= 0) + { + // Why block opposing teams from tailsflying each other? + // Sneaking into the hands of a flying tails player in Race might be a viable strategy, who knows. + /* + if (gametype == GT_RACE || gametype == GT_COMPETITION + || (netgame && (tails->spectator || sonic->spectator)) + || (G_TagGametype() && (!(tails->pflags & PF_TAGIT) != !(sonic->pflags & PF_TAGIT))) + || (gametype == GT_MATCH) + || (G_GametypeHasTeams() && tails->ctfteam != sonic->ctfteam)) + sonic->pflags &= ~PF_CARRIED; */ + if (tails->spectator || sonic->spectator) + sonic->pflags &= ~PF_CARRIED; + else + { + if (sonic-players == consoleplayer && botingame) + CV_SetValue(&cv_analog2, false); + P_ResetPlayer(sonic); + P_SetTarget(&sonic->mo->tracer, tails->mo); + sonic->pflags |= PF_CARRIED; + S_StartSound(sonic->mo, sfx_s3k4a); + P_UnsetThingPosition(sonic->mo); + sonic->mo->x = tails->mo->x; + sonic->mo->y = tails->mo->y; + P_SetThingPosition(sonic->mo); + } + } + else { + if (sonic-players == consoleplayer && botingame) + CV_SetValue(&cv_analog2, true); + sonic->pflags &= ~PF_CARRIED; + } +} + // // PIT_CheckThing // static boolean PIT_CheckThing(mobj_t *thing) { - fixed_t blockdist, topz, tmtopz; + fixed_t blockdist; // don't clip against self tmsprung = false; @@ -662,103 +810,17 @@ static boolean PIT_CheckThing(mobj_t *thing) if (thing->flags & MF_PUSHABLE) { - if (tmthing->eflags & MFE_VERTICALFLIP) - { - if (thing->z + thing->height <= tmthing->z + tmthing->height) - { - switch (tmthing->type) - { - case MT_FAN: // fan - if (thing->z + thing->height >= tmthing->z + tmthing->height - (tmthing->health << FRACBITS) && thing->momz > -FixedMul(tmthing->info->mass, tmthing->scale)) - { - thing->momz -= FixedMul(tmthing->info->mass/4, tmthing->scale); - - if (thing->momz < -FixedMul(tmthing->info->mass, tmthing->scale)) - thing->momz = -FixedMul(tmthing->info->mass, tmthing->scale); - } - break; - case MT_STEAM: // Steam - if (tmthing->state == &states[S_STEAM1] && thing->z + thing->height >= tmthing->z + tmthing->height - FixedMul(16*FRACUNIT, tmthing->scale)) // Only when it bursts - thing->momz = -FixedMul(tmthing->info->mass, FixedSqrt(FixedMul(tmthing->scale, thing->scale))); - break; - default: - break; - } - } - } - else - { - if (thing->z >= tmthing->z) - { - switch (tmthing->type) - { - case MT_FAN: // fan - if (thing->z <= tmthing->z + (tmthing->health << FRACBITS) && thing->momz < FixedMul(tmthing->info->mass, tmthing->scale)) - { - thing->momz += FixedMul(tmthing->info->mass/4, tmthing->scale); - - if (thing->momz > FixedMul(tmthing->info->mass, tmthing->scale)) - thing->momz = FixedMul(tmthing->info->mass, tmthing->scale); - } - break; - case MT_STEAM: // Steam - if (tmthing->state == &states[S_STEAM1] && thing->z <= tmthing->z + FixedMul(16*FRACUNIT, tmthing->scale)) // Only when it bursts - thing->momz = FixedMul(tmthing->info->mass, FixedSqrt(FixedMul(tmthing->scale, thing->scale))); - break; - default: - break; - } - } - } + if (tmthing->type == MT_FAN || tmthing->type == MT_STEAM) + P_DoFanAndGasJet(tmthing, thing); } if (tmthing->flags & MF_PUSHABLE) { - if ((thing->eflags & MFE_VERTICALFLIP) && tmthing->z + tmthing->height <= thing->z + thing->height) - { - switch (thing->type) - { - case MT_FAN: // fan - if (tmthing->z + tmthing->height >= thing->z + thing->height - (thing->health << FRACBITS) && tmthing->momz > -FixedMul(thing->info->mass, thing->scale)) - { - tmthing->momz -= FixedMul(thing->info->mass/4, thing->scale); - - if (tmthing->momz < -FixedMul(thing->info->mass, thing->scale)) - tmthing->momz = -FixedMul(thing->info->mass, thing->scale); - } - break; - case MT_STEAM: // Steam - if (thing->state == &states[S_STEAM1] && tmthing->z + tmthing->height >= thing->z + thing->height - FixedMul(16*FRACUNIT, thing->scale)) // Only when it bursts - tmthing->momz = -FixedMul(thing->info->mass, FixedSqrt(FixedMul(thing->scale, tmthing->scale))); - break; - default: - break; - } - } - else if (!(thing->eflags & MFE_VERTICALFLIP) && tmthing->z >= thing->z) - { - switch (thing->type) - { - case MT_FAN: // fan - if (tmthing->z <= thing->z + (thing->health << FRACBITS) && tmthing->momz < FixedMul(thing->info->mass, thing->scale)) - { - tmthing->momz += FixedMul(thing->info->mass/4, thing->scale); - - if (tmthing->momz > FixedMul(thing->info->mass, thing->scale)) - tmthing->momz = FixedMul(thing->info->mass, thing->scale); - } - break; - case MT_STEAM: // Steam - if (thing->state == &states[S_STEAM1] && tmthing->z <= thing->z + FixedMul(16*FRACUNIT, thing->scale)) // Only when it bursts - tmthing->momz = FixedMul(thing->info->mass, FixedSqrt(FixedMul(thing->scale, tmthing->scale))); - break; - default: - break; - } - } + if (thing->type == MT_FAN || thing->type == MT_STEAM) + P_DoFanAndGasJet(thing, tmthing); if ((!(thing->eflags & MFE_VERTICALFLIP) && (tmthing->z <= (thing->z + thing->height + FixedMul(FRACUNIT, thing->scale)) && (tmthing->z + tmthing->height) >= thing->z)) - || ((thing->eflags & MFE_VERTICALFLIP) && (tmthing->z + tmthing->height >= (thing->z - FixedMul(FRACUNIT, thing->scale)) && tmthing->z <= (thing->z + thing->height)))) + || ((thing->eflags & MFE_VERTICALFLIP) && (tmthing->z + tmthing->height >= (thing->z - FixedMul(FRACUNIT, thing->scale)) && tmthing->z <= (thing->z + thing->height)))) { if (thing->flags & MF_SPRING) { @@ -799,78 +861,7 @@ static boolean PIT_CheckThing(mobj_t *thing) { if (tmthing->player && thing->player) { - if ((tmthing->player->pflags & PF_CARRIED) && tmthing->tracer == thing) - return true; - else if ((thing->player->pflags & PF_CARRIED) && thing->tracer == tmthing) - return true; - else if (tmthing->player->powers[pw_tailsfly] - || (tmthing->player->charability == CA_FLY && (tmthing->state >= &states[S_PLAY_SPC1] && tmthing->state <= &states[S_PLAY_SPC4]))) - { - INT32 p; - - if (tmthing->player->bot == 1) - return true; - - if (thing->player->pflags & PF_NIGHTSMODE) - return true; - - if (thing->tracer && thing->tracer->type == MT_TUBEWAYPOINT - && !(thing->player->pflags & PF_ROPEHANG)) - return true; // don't steal players from zoomtubes! - - if ((thing->eflags & MFE_VERTICALFLIP) != (tmthing->eflags & MFE_VERTICALFLIP)) - return true; // Both should be in same gravity - - if ((tmthing->eflags & MFE_VERTICALFLIP) - && tmthing->ceilingz - (tmthing->z + tmthing->height) < thing->height-FixedMul(2*FRACUNIT, thing->scale)) - return true; - else if (tmthing->z - tmthing->floorz < thing->height-FixedMul(2*FRACUNIT, thing->scale)) - return true; // No room to pick up this guy! - - // Search in case another player is already being carried by this fox. - for (p = 0; p < MAXPLAYERS; p++) - if (playeringame[p] && players[p].mo - && players[p].pflags & PF_CARRIED && players[p].mo->tracer == tmthing) - return true; - - if ((!(tmthing->eflags & MFE_VERTICALFLIP) && (tmthing->z <= thing->z + thing->height + FixedMul(FRACUNIT, thing->scale)) - && tmthing->z > thing->z + thing->height*2/3 - && thing->momz <= 0) - || ((tmthing->eflags & MFE_VERTICALFLIP) && (tmthing->z + tmthing->height >= thing->z - FixedMul(FRACUNIT, thing->scale)) - && tmthing->z + tmthing->height < thing->z + thing->height - thing->height*2/3 - && thing->momz >= 0)) - { - // Why block opposing teams from tailsflying each other? - // Sneaking into the hands of a flying tails player in Race might be a viable strategy, who knows. - /* - if (gametype == GT_RACE || gametype == GT_COMPETITION - || (netgame && (tmthing->player->spectator || thing->player->spectator)) - || (G_TagGametype() && (!(tmthing->player->pflags & PF_TAGIT) != !(thing->player->pflags & PF_TAGIT))) - || (gametype == GT_MATCH) - || (G_GametypeHasTeams() && tmthing->player->ctfteam != thing->player->ctfteam)) - thing->player->pflags &= ~PF_CARRIED; */ - if (tmthing->player->spectator || thing->player->spectator) - thing->player->pflags &= ~PF_CARRIED; - else - { - if (thing->player-players == consoleplayer && botingame) - CV_SetValue(&cv_analog2, false); - P_ResetPlayer(thing->player); - P_SetTarget(&thing->tracer, tmthing); - thing->player->pflags |= PF_CARRIED; - S_StartSound(thing, sfx_s3k4a); - P_UnsetThingPosition(thing); - thing->x = tmthing->x; - thing->y = tmthing->y; - P_SetThingPosition(thing); - } - } - else { - if (thing->player-players == consoleplayer && botingame) - CV_SetValue(&cv_analog2, true); - thing->player->pflags &= ~PF_CARRIED; - } - } + P_DoTailsCarry(thing->player, tmthing->player); return true; } } @@ -882,114 +873,33 @@ static boolean PIT_CheckThing(mobj_t *thing) if (thing->player) { - if (tmthing->eflags & MFE_VERTICALFLIP) //doesn't matter what gravity player's following! Just do your stuff in YOUR direction only + // Doesn't matter what gravity player's following! Just do your stuff in YOUR direction only + if (tmthing->eflags & MFE_VERTICALFLIP + && (tmthing->z + tmthing->height + tmthing->momz > thing->z + || tmthing->z + tmthing->height + tmthing->momz >= thing->z + thing->height)) + ; + else if (!(tmthing->eflags & MFE_VERTICALFLIP) + && (tmthing->z + tmthing->momz > thing->z + thing->height + || tmthing->z + tmthing->momz <= thing->z)) + ; + else if (P_IsObjectOnGround(thing) + && !P_IsObjectOnGround(tmthing) // Don't crush if the monitor is on the ground... + && (tmthing->flags & MF_SOLID)) { - // Objects kill you if it falls from above. - if (tmthing->z + tmthing->height + tmthing->momz >= thing->z - && tmthing->z + tmthing->height + tmthing->momz < thing->z + thing->height - && P_IsObjectOnGround(thing) - && !P_IsObjectOnGround(tmthing) // Don't crush if the monitor is on the ground... - && (tmthing->flags & MF_SOLID)) + if (tmthing->flags & (MF_MONITOR|MF_PUSHABLE)) { - if (tmthing->flags & (MF_MONITOR|MF_PUSHABLE)) - { - if (thing != tmthing->target) - P_DamageMobj(thing, tmthing, tmthing->target, 10000); + // Objects kill you if it falls from above. + if (thing != tmthing->target) + P_DamageMobj(thing, tmthing, tmthing->target, 10000); - tmthing->momz = -tmthing->momz/2; // Bounce, just for fun! - // The tmthing->target allows the pusher of the object - // to get the point if he topples it on an opponent. - } - } - - if (thing->z + thing->height <= tmthing->z + tmthing->height && !(thing->state == &states[thing->info->painstate])) // Stuff where da player don't gotta move - { - switch (tmthing->type) - { - case MT_FAN: // fan - if (thing->z + thing->height >= tmthing->z + tmthing->height - (tmthing->health << FRACBITS) && thing->momz > -FixedMul(tmthing->info->mass, tmthing->scale) && !(thing->player->climbing || (thing->player->pflags & PF_GLIDING))) - { - thing->momz -= FixedMul(tmthing->info->mass/4, tmthing->scale); - - if (thing->momz < -FixedMul(tmthing->info->mass, tmthing->scale)) - thing->momz = -FixedMul(tmthing->info->mass, tmthing->scale); - - if (!thing->player->powers[pw_tailsfly]) - { - P_ResetPlayer(thing->player); - if (thing->player->panim != PA_FALL) - P_SetPlayerMobjState(thing, S_PLAY_FALL1); - } - } - break; - case MT_STEAM: // Steam - if (tmthing->state == &states[S_STEAM1] && thing->z + thing->height >= tmthing->z + tmthing->height - FixedMul(16*FRACUNIT, tmthing->scale)) // Only when it bursts - { - thing->momz = -FixedMul(tmthing->info->mass, FixedSqrt(FixedMul(tmthing->scale, thing->scale))); - P_ResetPlayer(thing->player); - if (thing->player->panim != PA_FALL) - P_SetPlayerMobjState(thing, S_PLAY_FALL1); - } - break; - default: - break; - } + tmthing->momz = -tmthing->momz/2; // Bounce, just for fun! + // The tmthing->target allows the pusher of the object + // to get the point if he topples it on an opponent. } } - else - { - // Objects kill you if it falls from above. - if (tmthing->z + tmthing->momz <= thing->z + thing->height - && tmthing->z + tmthing->momz > thing->z - && P_IsObjectOnGround(thing) - && !P_IsObjectOnGround(tmthing) // Don't crush if the monitor is on the ground... - && (tmthing->flags & MF_SOLID)) - { - if (tmthing->flags & (MF_MONITOR|MF_PUSHABLE)) - { - if (thing != tmthing->target) - P_DamageMobj(thing, tmthing, tmthing->target, 10000); - tmthing->momz = -tmthing->momz/2; // Bounce, just for fun! - // The tmthing->target allows the pusher of the object - // to get the point if he topples it on an opponent. - } - } - - if (thing->z >= tmthing->z && !(thing->state == &states[thing->info->painstate])) // Stuff where da player don't gotta move - { - switch (tmthing->type) - { - case MT_FAN: // fan - if (thing->z <= tmthing->z + (tmthing->health << FRACBITS) && thing->momz < FixedMul(tmthing->info->mass, tmthing->scale) && !(thing->player->climbing || (thing->player->pflags & PF_GLIDING))) - { - thing->momz += FixedMul(tmthing->info->mass/4, tmthing->scale); - - if (thing->momz > FixedMul(tmthing->info->mass, tmthing->scale)) - thing->momz = FixedMul(tmthing->info->mass, tmthing->scale); - - if (!thing->player->powers[pw_tailsfly]) - { - P_ResetPlayer(thing->player); - if (thing->player->panim != PA_FALL) - P_SetPlayerMobjState(thing, S_PLAY_FALL1); - } - } - break; - case MT_STEAM: // Steam - if (tmthing->state == &states[S_STEAM1] && thing->z <= tmthing->z + FixedMul(16*FRACUNIT, tmthing->scale)) // Only when it bursts - { - thing->momz = FixedMul(tmthing->info->mass, FixedSqrt(FixedMul(tmthing->scale, thing->scale))); - P_ResetPlayer(thing->player); - if (thing->player->panim != PA_FALL) - P_SetPlayerMobjState(thing, S_PLAY_FALL1); - } - break; - default: - break; - } - } - } + if (tmthing->type == MT_FAN || tmthing->type == MT_STEAM) + P_DoFanAndGasJet(tmthing, thing); } if (tmthing->player) // Is the moving/interacting object the player? @@ -997,72 +907,8 @@ static boolean PIT_CheckThing(mobj_t *thing) if (!tmthing->health) return true; - if ((thing->eflags & MFE_VERTICALFLIP) && tmthing->z + tmthing->height <= thing->z + thing->height && !(tmthing->state == &states[tmthing->info->painstate])) - { - switch (thing->type) - { - case MT_FAN: // fan - if (tmthing->z + tmthing->height >= thing->z + thing->height - (thing->health << FRACBITS) && tmthing->momz > -FixedMul(thing->info->mass, thing->scale) && !(tmthing->player->climbing || (tmthing->player->pflags & PF_GLIDING))) - { - tmthing->momz -= FixedMul(thing->info->mass/4, thing->scale); - - if (tmthing->momz < -FixedMul(thing->info->mass, thing->scale)) - tmthing->momz = -FixedMul(thing->info->mass, thing->scale); - - if (!tmthing->player->powers[pw_tailsfly]) - { - P_ResetPlayer(tmthing->player); - if (tmthing->player->panim != PA_FALL) - P_SetPlayerMobjState(tmthing, S_PLAY_FALL1); - } - } - break; - case MT_STEAM: // Steam - if (thing->state == &states[S_STEAM1] && tmthing->z + tmthing->height >= thing->z + thing->height - FixedMul(16*FRACUNIT, thing->scale)) // Only when it bursts - { - tmthing->momz = -FixedMul(thing->info->mass, FixedSqrt(FixedMul(thing->scale, tmthing->scale))); - P_ResetPlayer(tmthing->player); - if (tmthing->player->panim != PA_FALL) - P_SetPlayerMobjState(tmthing, S_PLAY_FALL1); - } - break; - default: - break; - } - } - else if (!(thing->eflags & MFE_VERTICALFLIP) && tmthing->z >= thing->z && !(tmthing->state == &states[tmthing->info->painstate])) - { - switch (thing->type) - { - case MT_FAN: // fan - if (tmthing->z <= thing->z + (thing->health << FRACBITS) && tmthing->momz < FixedMul(thing->info->mass, thing->scale) && !(tmthing->player->climbing || (tmthing->player->pflags & PF_GLIDING))) - { - tmthing->momz += FixedMul(thing->info->mass/4, thing->scale); - - if (tmthing->momz > FixedMul(thing->info->mass, thing->scale)) - tmthing->momz = FixedMul(thing->info->mass, thing->scale); - - if (!tmthing->player->powers[pw_tailsfly]) - { - P_ResetPlayer(tmthing->player); - if (tmthing->player->panim != PA_FALL) - P_SetPlayerMobjState(tmthing, S_PLAY_FALL1); - } - } - break; - case MT_STEAM: // Steam - if (thing->state == &states[S_STEAM1] && tmthing->z <= thing->z + FixedMul(16*FRACUNIT, thing->scale)) // Only when it bursts - { - tmthing->momz = FixedMul(thing->info->mass, FixedSqrt(FixedMul(thing->scale, tmthing->scale))); - P_ResetPlayer(tmthing->player); - if (tmthing->player->panim != PA_FALL) - P_SetPlayerMobjState(tmthing, S_PLAY_FALL1); - } - break; - default: - break; - } - } + if (thing->type == MT_FAN || thing->type == MT_STEAM) + P_DoFanAndGasJet(thing, tmthing); // Are you touching the side of the object you're interacting with? if (thing->z - FixedMul(FRACUNIT, thing->scale) <= tmthing->z + tmthing->height @@ -1104,6 +950,8 @@ static boolean PIT_CheckThing(mobj_t *thing) else if ((thing->flags & (MF_SOLID|MF_NOCLIP)) == MF_SOLID && (tmthing->flags & (MF_SOLID|MF_NOCLIP)) == MF_SOLID) { + fixed_t topz, tmtopz; + if (tmthing->eflags & MFE_VERTICALFLIP) { // pass under @@ -1415,8 +1263,8 @@ boolean P_CheckPosition(mobj_t *thing, fixed_t x, fixed_t y) ; else if (thing->type == MT_SKIM && (rover->flags & FF_SWIMMABLE)) ; - else if (!((((rover->flags & FF_BLOCKPLAYER) && thing->player) - || ((rover->flags & FF_BLOCKOTHERS) && !thing->player)) + else if (!((rover->flags & FF_BLOCKPLAYER && thing->player) + || (rover->flags & FF_BLOCKOTHERS && !thing->player) || rover->flags & FF_QUICKSAND)) continue; @@ -1450,16 +1298,21 @@ boolean P_CheckPosition(mobj_t *thing, fixed_t x, fixed_t y) } } + // The bounding box is extended by MAXRADIUS + // because mobj_ts are grouped into mapblocks + // based on their origin point, and can overlap + // into adjacent blocks by up to MAXRADIUS units. + + xl = (unsigned)(tmbbox[BOXLEFT] - bmaporgx - MAXRADIUS)>>MAPBLOCKSHIFT; + xh = (unsigned)(tmbbox[BOXRIGHT] - bmaporgx + MAXRADIUS)>>MAPBLOCKSHIFT; + yl = (unsigned)(tmbbox[BOXBOTTOM] - bmaporgy - MAXRADIUS)>>MAPBLOCKSHIFT; + yh = (unsigned)(tmbbox[BOXTOP] - bmaporgy + MAXRADIUS)>>MAPBLOCKSHIFT; + #ifdef POLYOBJECTS // Check polyobjects and see if tmfloorz/tmceilingz need to be altered { validcount++; - xl = (unsigned)(tmbbox[BOXLEFT] - bmaporgx - MAXRADIUS)>>MAPBLOCKSHIFT; - xh = (unsigned)(tmbbox[BOXRIGHT] - bmaporgx + MAXRADIUS)>>MAPBLOCKSHIFT; - yl = (unsigned)(tmbbox[BOXBOTTOM] - bmaporgy - MAXRADIUS)>>MAPBLOCKSHIFT; - yh = (unsigned)(tmbbox[BOXTOP] - bmaporgy + MAXRADIUS)>>MAPBLOCKSHIFT; - for (by = yl; by <= yh; by++) for (bx = xl; bx <= xh; bx++) { @@ -1533,15 +1386,6 @@ boolean P_CheckPosition(mobj_t *thing, fixed_t x, fixed_t y) return true; // Check things first, possibly picking things up. - // The bounding box is extended by MAXRADIUS - // because mobj_ts are grouped into mapblocks - // based on their origin point, and can overlap - // into adjacent blocks by up to MAXRADIUS units. - - xl = (unsigned)(tmbbox[BOXLEFT] - bmaporgx - MAXRADIUS)>>MAPBLOCKSHIFT; - xh = (unsigned)(tmbbox[BOXRIGHT] - bmaporgx + MAXRADIUS)>>MAPBLOCKSHIFT; - yl = (unsigned)(tmbbox[BOXBOTTOM] - bmaporgy - MAXRADIUS)>>MAPBLOCKSHIFT; - yh = (unsigned)(tmbbox[BOXTOP] - bmaporgy + MAXRADIUS)>>MAPBLOCKSHIFT; // MF_NOCLIPTHING: used by camera to not be blocked by things if (!(thing->flags & MF_NOCLIPTHING)) @@ -1671,16 +1515,21 @@ boolean P_CheckCameraPosition(fixed_t x, fixed_t y, camera_t *thiscam) } } + // The bounding box is extended by MAXRADIUS + // because mobj_ts are grouped into mapblocks + // based on their origin point, and can overlap + // into adjacent blocks by up to MAXRADIUS units. + + xl = (unsigned)(tmbbox[BOXLEFT] - bmaporgx)>>MAPBLOCKSHIFT; + xh = (unsigned)(tmbbox[BOXRIGHT] - bmaporgx)>>MAPBLOCKSHIFT; + yl = (unsigned)(tmbbox[BOXBOTTOM] - bmaporgy)>>MAPBLOCKSHIFT; + yh = (unsigned)(tmbbox[BOXTOP] - bmaporgy)>>MAPBLOCKSHIFT; + #ifdef POLYOBJECTS // Check polyobjects and see if tmfloorz/tmceilingz need to be altered { validcount++; - xl = (unsigned)(tmbbox[BOXLEFT] - bmaporgx)>>MAPBLOCKSHIFT; - xh = (unsigned)(tmbbox[BOXRIGHT] - bmaporgx)>>MAPBLOCKSHIFT; - yl = (unsigned)(tmbbox[BOXBOTTOM] - bmaporgy)>>MAPBLOCKSHIFT; - yh = (unsigned)(tmbbox[BOXTOP] - bmaporgy)>>MAPBLOCKSHIFT; - for (by = yl; by <= yh; by++) for (bx = xl; bx <= xh; bx++) { @@ -1749,18 +1598,7 @@ boolean P_CheckCameraPosition(fixed_t x, fixed_t y, camera_t *thiscam) } #endif - // Check things. - // The bounding box is extended by MAXRADIUS - // because mobj_ts are grouped into mapblocks - // based on their origin point, and can overlap - // into adjacent blocks by up to MAXRADIUS units. - // check lines - xl = (unsigned)(tmbbox[BOXLEFT] - bmaporgx)>>MAPBLOCKSHIFT; - xh = (unsigned)(tmbbox[BOXRIGHT] - bmaporgx)>>MAPBLOCKSHIFT; - yl = (unsigned)(tmbbox[BOXBOTTOM] - bmaporgy)>>MAPBLOCKSHIFT; - yh = (unsigned)(tmbbox[BOXTOP] - bmaporgy)>>MAPBLOCKSHIFT; - for (bx = xl; bx <= xh; bx++) for (by = yl; by <= yh; by++) if (!P_BlockLinesIterator(bx, by, PIT_CheckCameraLine)) diff --git a/src/p_maputl.c b/src/p_maputl.c index d46080ab..48dd54e8 100644 --- a/src/p_maputl.c +++ b/src/p_maputl.c @@ -538,8 +538,14 @@ void P_LineOpening(line_t *linedef) // Check for frontsector's fake floors for (rover = front->ffloors; rover; rover = rover->next) { - if (!(rover->flags & FF_EXISTS) || !(((rover->flags & FF_BLOCKPLAYER) && tmthing->player) - || ((rover->flags & FF_BLOCKOTHERS) && !tmthing->player))) continue; + if (!(rover->flags & FF_EXISTS)) + continue; + + if (tmthing->player && (P_CheckSolidLava(tmthing, rover) || P_CanRunOnWater(tmthing->player, rover))) + ; + else if (!((rover->flags & FF_BLOCKPLAYER && tmthing->player) + || (rover->flags & FF_BLOCKOTHERS && !tmthing->player))) + continue; delta1 = abs(tmthing->z - (*rover->bottomheight + ((*rover->topheight - *rover->bottomheight)/2))); delta2 = abs(thingtop - (*rover->bottomheight + ((*rover->topheight - *rover->bottomheight)/2))); @@ -564,8 +570,14 @@ void P_LineOpening(line_t *linedef) // Check for backsectors fake floors for (rover = back->ffloors; rover; rover = rover->next) { - if (!(rover->flags & FF_EXISTS) || !(((rover->flags & FF_BLOCKPLAYER) && tmthing->player) - || ((rover->flags & FF_BLOCKOTHERS) && !tmthing->player))) continue; + if (!(rover->flags & FF_EXISTS)) + continue; + + if (tmthing->player && (P_CheckSolidLava(tmthing, rover) || P_CanRunOnWater(tmthing->player, rover))) + ; + else if (!((rover->flags & FF_BLOCKPLAYER && tmthing->player) + || (rover->flags & FF_BLOCKOTHERS && !tmthing->player))) + continue; delta1 = abs(tmthing->z - (*rover->bottomheight + ((*rover->topheight - *rover->bottomheight)/2))); delta2 = abs(thingtop - (*rover->bottomheight + ((*rover->topheight - *rover->bottomheight)/2))); diff --git a/src/p_mobj.c b/src/p_mobj.c index 1ee30fbc..e85e25b0 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -2030,6 +2030,7 @@ static void P_PlayerZMovement(mobj_t *mo) // Check if we're on a polyobject // that triggers a linedef executor. msecnode_t *node; + boolean stopmovecut = false; for (node = mo->touching_sectorlist; node; node = node->m_snext) { @@ -2051,6 +2052,18 @@ static void P_PlayerZMovement(mobj_t *mo) while(po) { + if (!P_MobjInsidePolyobj(po, mo)) + { + po = (polyobj_t *)(po->link.next); + continue; + } + + polysec = po->lines[0]->backsector; + + // Moving polyobjects should act like conveyors if the player lands on one. (I.E. none of the momentum cut thing below) -Red + if ((mo->z == polysec->ceilingheight || mo->z+mo->height == polysec->floorheight) && (po->flags & POF_SOLID) && po->thinker) + stopmovecut = true; + if (!(po->flags & POF_LDEXEC) || !(po->flags & POF_SOLID)) { @@ -2058,14 +2071,7 @@ static void P_PlayerZMovement(mobj_t *mo) continue; } - if (!P_MobjInsidePolyobj(po, mo)) - { - po = (polyobj_t *)(po->link.next); - continue; - } - // We're inside it! Yess... - polysec = po->lines[0]->backsector; if (mo->z == polysec->ceilingheight) { @@ -2080,6 +2086,8 @@ static void P_PlayerZMovement(mobj_t *mo) } } } + + if (!stopmovecut) #endif // Cut momentum in half when you hit the ground and @@ -5761,6 +5769,29 @@ void P_MobjThinker(mobj_t *mobj) case MT_SEED: mobj->momz = mobj->info->speed; break; + case MT_ROCKCRUMBLE1: + case MT_ROCKCRUMBLE2: + case MT_ROCKCRUMBLE3: + case MT_ROCKCRUMBLE4: + case MT_ROCKCRUMBLE5: + case MT_ROCKCRUMBLE6: + case MT_ROCKCRUMBLE7: + case MT_ROCKCRUMBLE8: + case MT_ROCKCRUMBLE9: + case MT_ROCKCRUMBLE10: + case MT_ROCKCRUMBLE11: + case MT_ROCKCRUMBLE12: + case MT_ROCKCRUMBLE13: + case MT_ROCKCRUMBLE14: + case MT_ROCKCRUMBLE15: + case MT_ROCKCRUMBLE16: + if (mobj->z <= P_FloorzAtPos(mobj->x, mobj->y, mobj->z, mobj->height) + && mobj->state != &states[mobj->info->deathstate]) + { + P_SetMobjState(mobj, mobj->info->deathstate); + return; + } + break; default: if (mobj->fuse) { // Scenery object fuse! Very basic! @@ -5951,29 +5982,6 @@ void P_MobjThinker(mobj_t *mobj) } else switch (mobj->type) { - case MT_ROCKCRUMBLE1: - case MT_ROCKCRUMBLE2: - case MT_ROCKCRUMBLE3: - case MT_ROCKCRUMBLE4: - case MT_ROCKCRUMBLE5: - case MT_ROCKCRUMBLE6: - case MT_ROCKCRUMBLE7: - case MT_ROCKCRUMBLE8: - case MT_ROCKCRUMBLE9: - case MT_ROCKCRUMBLE10: - case MT_ROCKCRUMBLE11: - case MT_ROCKCRUMBLE12: - case MT_ROCKCRUMBLE13: - case MT_ROCKCRUMBLE14: - case MT_ROCKCRUMBLE15: - case MT_ROCKCRUMBLE16: - if (mobj->z <= P_FloorzAtPos(mobj->x, mobj->y, mobj->z, mobj->height) - && mobj->state != &states[mobj->info->deathstate]) - { - P_SetMobjState(mobj, mobj->info->deathstate); - return; - } - break; case MT_EMERALDSPAWN: if (mobj->threshold) { diff --git a/src/p_polyobj.c b/src/p_polyobj.c index b6d7caa9..9c955c97 100644 --- a/src/p_polyobj.c +++ b/src/p_polyobj.c @@ -142,6 +142,16 @@ FUNCINLINE static ATTRINLINE void Polyobj_vecSub2(vertex_t *dst, vertex_t *v1, v dst->y = v1->y - v2->y; } +// Add the polyobject's thinker to the thinker list +// Unlike P_AddThinker, this adds it to the front of the list instead of the back, so that carrying physics can work right. -Red +FUNCINLINE static ATTRINLINE void PolyObj_AddThinker(thinker_t *th) +{ + thinkercap.next->prev = th; + th->next = thinkercap.next; + th->prev = &thinkercap; + thinkercap.next = th; +} + // // P_PointInsidePolyobj // @@ -573,7 +583,7 @@ static void Polyobj_spawnPolyObj(INT32 num, mobj_t *spawnSpot, INT32 id) // set to default thrust; may be modified by attached thinkers // TODO: support customized thrust? po->thrust = FRACUNIT; - po->flags = 0; + po->spawnflags = po->flags = 0; // 1. Search segs for "line start" special with tag matching this // polyobject's id number. If found, iterate through segs which @@ -613,6 +623,8 @@ static void Polyobj_spawnPolyObj(INT32 num, mobj_t *spawnSpot, INT32 id) if (seg->linedef->flags & ML_NOCLIMB) // Has a linedef executor po->flags |= POF_LDEXEC; + po->spawnflags = po->flags; // save original flags to reference later for netgames! + Polyobj_findSegs(po, seg); po->parent = parentID; if (po->parent == po->id) // do not allow a self-reference @@ -966,6 +978,38 @@ static void Polyobj_pushThing(polyobj_t *po, line_t *line, mobj_t *mo) } } +// +// Polyobj_slideThing +// +// Moves an object resting on top of a polyobject by (x, y). Template function to make alteration easier. +// +static void Polyobj_slideThing(mobj_t *mo, fixed_t dx, fixed_t dy) +{ + if (mo->player) { // Do something similar to conveyor movement. -Red + mo->player->cmomx += dx; + mo->player->cmomy += dy; + + dx = FixedMul(dx, CARRYFACTOR); + dy = FixedMul(dy, CARRYFACTOR); + + mo->player->cmomx -= dx; + mo->player->cmomy -= dy; + + if (mo->player->pflags & PF_SPINNING && (mo->player->rmomx || mo->player->rmomy) && !(mo->player->pflags & PF_STARTDASH)) { +#define SPINMULT 5184 // Consider this a substitute for properly calculating FRACUNIT-friction. I'm tired. -Red + dx = FixedMul(dx, SPINMULT); + dy = FixedMul(dy, SPINMULT); +#undef SPINMULT + } + + mo->momx += dx; + mo->momy += dy; + + mo->player->onconveyor = 1; + } else + P_TryMove(mo, mo->x+dx, mo->y+dy, true); +} + // // Polyobj_carryThings // @@ -1015,7 +1059,7 @@ static void Polyobj_carryThings(polyobj_t *po, fixed_t dx, fixed_t dy) if (!P_MobjInsidePolyobj(po, mo)) continue; - P_TryMove(mo, mo->x+dx, mo->y+dy, true); + Polyobj_slideThing(mo, dx, dy); } } } @@ -1206,12 +1250,91 @@ static void Polyobj_rotateLine(line_t *ld) } } +// +// Polyobj_rotateThings +// +// Causes objects resting on top of the rotating polyobject to 'ride' with its movement. +// +static void Polyobj_rotateThings(polyobj_t *po, vertex_t origin, angle_t delta, UINT8 turnthings) +{ + static INT32 pomovecount = 10000; + INT32 x, y; + + pomovecount++; + + if (!(po->flags & POF_SOLID)) + return; + + for (y = po->blockbox[BOXBOTTOM]; y <= po->blockbox[BOXTOP]; ++y) + { + for (x = po->blockbox[BOXLEFT]; x <= po->blockbox[BOXRIGHT]; ++x) + { + mobj_t *mo; + + if (x < 0 || y < 0 || x >= bmapwidth || y >= bmapheight) + continue; + + mo = blocklinks[y * bmapwidth + x]; + + for (; mo; mo = mo->bnext) + { + if (mo->lastlook == pomovecount) + continue; + + mo->lastlook = pomovecount; + + // always push players even if not solid + if (!((mo->flags & MF_SOLID) || mo->player)) + continue; + + if (mo->flags & MF_NOCLIP) + continue; + + if ((mo->eflags & MFE_VERTICALFLIP) && mo->z + mo->height != po->lines[0]->backsector->floorheight) + continue; + + if (!(mo->eflags & MFE_VERTICALFLIP) && mo->z != po->lines[0]->backsector->ceilingheight) + continue; + + if (!P_MobjInsidePolyobj(po, mo)) + continue; + + { + fixed_t newxoff, newyoff; + angle_t angletoobj = R_PointToAngle2(origin.x, origin.y, mo->x, mo->y); + fixed_t disttoobj = R_PointToDist2(origin.x, origin.y, mo->x, mo->y); + + if (mo->player) // Hack to fix players sliding off of spinning polys -Red + { + disttoobj = FixedMul(disttoobj, 0xfe40); + } + + angletoobj += delta; + angletoobj >>= ANGLETOFINESHIFT; + newxoff = FixedMul(FINECOSINE(angletoobj), disttoobj); + newyoff = FixedMul(FINESINE(angletoobj), disttoobj); + + Polyobj_slideThing(mo, origin.x+newxoff-mo->x, origin.y+newyoff-mo->y); + + if (turnthings == 2 || (turnthings == 1 && !mo->player)) { + mo->angle += delta; + if (mo->player == &players[consoleplayer]) + localangle = mo->angle; + else if (mo->player == &players[secondarydisplayplayer]) + localangle2 = mo->angle; + } + } + } + } + } +} + // // Polyobj_rotate // // Rotates a polyobject around its start point. // -static boolean Polyobj_rotate(polyobj_t *po, angle_t delta) +static boolean Polyobj_rotate(polyobj_t *po, angle_t delta, UINT8 turnthings) { size_t i; angle_t angle; @@ -1247,6 +1370,8 @@ static boolean Polyobj_rotate(polyobj_t *po, angle_t delta) for (i = 0; i < po->numLines; ++i) hitflags |= Polyobj_clipThings(po, po->lines[i]); + Polyobj_rotateThings(po, origin, delta, turnthings); + if (hitflags & 2) { // reset vertices to previous positions @@ -1466,7 +1591,7 @@ void Polyobj_MoveOnLoad(polyobj_t *po, angle_t angle, fixed_t x, fixed_t y) fixed_t dx, dy; // first, rotate to the saved angle - Polyobj_rotate(po, angle); + Polyobj_rotate(po, angle, false); // determine component distances to translate dx = x - po->spawnSpot.x; @@ -1513,7 +1638,7 @@ void T_PolyObjRotate(polyrotate_t *th) // rotate by 'speed' angle per frame // if distance == -1, this polyobject rotates perpetually - if (Polyobj_rotate(po, th->speed) && th->distance != -1) + if (Polyobj_rotate(po, th->speed, th->turnobjs) && th->distance != -1) { INT32 avel = abs(th->speed); @@ -1551,8 +1676,21 @@ void T_PolyObjRotate(polyrotate_t *th) FUNCINLINE static ATTRINLINE void Polyobj_componentSpeed(INT32 resVel, INT32 angle, fixed_t *xVel, fixed_t *yVel) { - *xVel = FixedMul(resVel, FINECOSINE(angle)); - *yVel = FixedMul(resVel, FINESINE(angle)); + if (angle == 0) + { + *xVel = resVel; + *yVel = 0; + } + else if (angle == (INT32)(ANGLE_90>>ANGLETOFINESHIFT)) + { + *xVel = 0; + *yVel = resVel; + } + else + { + *xVel = FixedMul(resVel, FINECOSINE(angle)); + *yVel = FixedMul(resVel, FINESINE(angle)); + } } void T_PolyObjMove(polymove_t *th) @@ -1694,15 +1832,16 @@ void T_PolyObjWaypoint(polywaypoint_t *th) if (dist>>FRACBITS <= P_AproxDistance(P_AproxDistance(target->x - adjustx - momx, target->y - adjusty - momy), target->z - adjustz - momz)>>FRACBITS) { // If further away, set XYZ of polyobject to waypoint location - fixed_t amtx, amty; + fixed_t amtx, amty, amtz; + fixed_t diffz; amtx = (target->x - th->diffx) - po->centerPt.x; amty = (target->y - th->diffy) - po->centerPt.y; Polyobj_moveXY(po, amtx, amty); // TODO: use T_MovePlane - amtx = (po->lines[0]->backsector->ceilingheight - po->lines[0]->backsector->floorheight)/2; - po->lines[0]->backsector->floorheight = target->z - amtx; - po->lines[0]->backsector->ceilingheight = target->z + amtx; - + amtz = (po->lines[0]->backsector->ceilingheight - po->lines[0]->backsector->floorheight)/2; + diffz = po->lines[0]->backsector->floorheight - (target->z - amtz); + po->lines[0]->backsector->floorheight = target->z - amtz; + po->lines[0]->backsector->ceilingheight = target->z + amtz; // Apply action to mirroring polyobjects as well start = 0; while ((po = Polyobj_GetChild(oldpo, &start))) @@ -1712,9 +1851,8 @@ void T_PolyObjWaypoint(polywaypoint_t *th) Polyobj_moveXY(po, amtx, amty); // TODO: use T_MovePlane - amtx = (po->lines[0]->backsector->ceilingheight - po->lines[0]->backsector->floorheight)/2; - po->lines[0]->backsector->floorheight = target->z - amtx; - po->lines[0]->backsector->ceilingheight = target->z + amtx; + po->lines[0]->backsector->floorheight += diffz; // move up/down by same amount as the parent did + po->lines[0]->backsector->ceilingheight += diffz; } po = oldpo; @@ -2035,7 +2173,7 @@ void T_PolyDoorSwing(polyswingdoor_t *th) // rotate by 'speed' angle per frame // if distance == -1, this polyobject rotates perpetually - if (Polyobj_rotate(po, th->speed) && th->distance != -1) + if (Polyobj_rotate(po, th->speed, false) && th->distance != -1) { INT32 avel = abs(th->speed); @@ -2091,6 +2229,46 @@ void T_PolyDoorSwing(polyswingdoor_t *th) } } +// T_PolyObjDisplace: shift a polyobject based on a control sector's heights. -Red +void T_PolyObjDisplace(polydisplace_t *th) +{ + polyobj_t *po = Polyobj_GetForNum(th->polyObjNum); + fixed_t newheights, delta; + fixed_t dx, dy; + + if (!po) +#ifdef RANGECHECK + I_Error("T_PolyDoorSwing: thinker has invalid id %d\n", th->polyObjNum); +#else + { + CONS_Debug(DBG_POLYOBJ, "T_PolyDoorSwing: thinker with invalid id %d removed.\n", th->polyObjNum); + P_RemoveThinkerDelayed(&th->thinker); + return; + } +#endif + + // check for displacement due to override and reattach when possible + if (po->thinker == NULL) + { + po->thinker = &th->thinker; + + // reset polyobject's thrust + po->thrust = FRACUNIT; + } + + newheights = th->controlSector->floorheight+th->controlSector->ceilingheight; + delta = newheights-th->oldHeights; + + if (!delta) + return; + + dx = FixedMul(th->dx, delta); + dy = FixedMul(th->dy, delta); + + if (Polyobj_moveXY(po, dx, dy)) + th->oldHeights = newheights; +} + static inline INT32 Polyobj_AngSpeed(INT32 speed) { return (speed*ANG1)>>3; // no FixedAngle() @@ -2122,7 +2300,7 @@ INT32 EV_DoPolyObjRotate(polyrotdata_t *prdata) // create a new thinker th = Z_Malloc(sizeof(polyrotate_t), PU_LEVSPEC, NULL); th->thinker.function.acp1 = (actionf_p1)T_PolyObjRotate; - P_AddThinker(&th->thinker); + PolyObj_AddThinker(&th->thinker); po->thinker = &th->thinker; // set fields @@ -2149,10 +2327,15 @@ INT32 EV_DoPolyObjRotate(polyrotdata_t *prdata) oldpo = po; + th->turnobjs = prdata->turnobjs; + // apply action to mirroring polyobjects as well start = 0; while ((po = Polyobj_GetChild(oldpo, &start))) + { + prdata->polyObjNum = po->id; // change id to match child polyobject's EV_DoPolyObjRotate(prdata); + } // action was successful return 1; @@ -2182,7 +2365,7 @@ INT32 EV_DoPolyObjMove(polymovedata_t *pmdata) // create a new thinker th = Z_Malloc(sizeof(polymove_t), PU_LEVSPEC, NULL); th->thinker.function.acp1 = (actionf_p1)T_PolyObjMove; - P_AddThinker(&th->thinker); + PolyObj_AddThinker(&th->thinker); po->thinker = &th->thinker; // set fields @@ -2208,7 +2391,10 @@ INT32 EV_DoPolyObjMove(polymovedata_t *pmdata) // apply action to mirroring polyobjects as well start = 0; while ((po = Polyobj_GetChild(oldpo, &start))) + { + pmdata->polyObjNum = po->id; // change id to match child polyobject's EV_DoPolyObjMove(pmdata); + } // action was successful return 1; @@ -2240,7 +2426,7 @@ INT32 EV_DoPolyObjWaypoint(polywaypointdata_t *pwdata) // create a new thinker th = Z_Malloc(sizeof(polywaypoint_t), PU_LEVSPEC, NULL); th->thinker.function.acp1 = (actionf_p1)T_PolyObjWaypoint; - P_AddThinker(&th->thinker); + PolyObj_AddThinker(&th->thinker); po->thinker = &th->thinker; // set fields @@ -2382,7 +2568,7 @@ static void Polyobj_doSlideDoor(polyobj_t *po, polydoordata_t *doordata) // allocate and add a new slide door thinker th = Z_Malloc(sizeof(polyslidedoor_t), PU_LEVSPEC, NULL); th->thinker.function.acp1 = (actionf_p1)T_PolyDoorSlide; - P_AddThinker(&th->thinker); + PolyObj_AddThinker(&th->thinker); // point the polyobject to this thinker po->thinker = &th->thinker; @@ -2430,7 +2616,7 @@ static void Polyobj_doSwingDoor(polyobj_t *po, polydoordata_t *doordata) // allocate and add a new swing door thinker th = Z_Malloc(sizeof(polyswingdoor_t), PU_LEVSPEC, NULL); th->thinker.function.acp1 = (actionf_p1)T_PolyDoorSwing; - P_AddThinker(&th->thinker); + PolyObj_AddThinker(&th->thinker); // point the polyobject to this thinker po->thinker = &th->thinker; @@ -2492,6 +2678,52 @@ INT32 EV_DoPolyDoor(polydoordata_t *doordata) return 1; } +INT32 EV_DoPolyObjDisplace(polydisplacedata_t *prdata) +{ + polyobj_t *po; + polyobj_t *oldpo; + polydisplace_t *th; + INT32 start; + + if (!(po = Polyobj_GetForNum(prdata->polyObjNum))) + { + CONS_Debug(DBG_POLYOBJ, "EV_DoPolyObjRotate: bad polyobj %d\n", prdata->polyObjNum); + return 0; + } + + // don't allow line actions to affect bad polyobjects + if (po->isBad) + return 0; + + // create a new thinker + th = Z_Malloc(sizeof(polydisplace_t), PU_LEVSPEC, NULL); + th->thinker.function.acp1 = (actionf_p1)T_PolyObjDisplace; + PolyObj_AddThinker(&th->thinker); + po->thinker = &th->thinker; + + // set fields + th->polyObjNum = prdata->polyObjNum; + + th->controlSector = prdata->controlSector; + th->oldHeights = th->controlSector->floorheight+th->controlSector->ceilingheight; + + th->dx = prdata->dx; + th->dy = prdata->dy; + + oldpo = po; + + // apply action to mirroring polyobjects as well + start = 0; + while ((po = Polyobj_GetChild(oldpo, &start))) + { + prdata->polyObjNum = po->id; // change id to match child polyobject's + EV_DoPolyObjDisplace(prdata); + } + + // action was successful + return 1; +} + void T_PolyObjFlag(polymove_t *th) { polyobj_t *po = Polyobj_GetForNum(th->polyObjNum); @@ -2567,7 +2799,7 @@ INT32 EV_DoPolyObjFlag(line_t *pfdata) // create a new thinker th = Z_Malloc(sizeof(polymove_t), PU_LEVSPEC, NULL); th->thinker.function.acp1 = (actionf_p1)T_PolyObjFlag; - P_AddThinker(&th->thinker); + PolyObj_AddThinker(&th->thinker); po->thinker = &th->thinker; // set fields @@ -2586,7 +2818,10 @@ INT32 EV_DoPolyObjFlag(line_t *pfdata) // apply action to mirroring polyobjects as well start = 0; while ((po = Polyobj_GetChild(oldpo, &start))) + { + pfdata->tag = po->id; EV_DoPolyObjFlag(pfdata); + } // action was successful return 1; diff --git a/src/p_polyobj.h b/src/p_polyobj.h index 4e21f4a8..71cf965e 100644 --- a/src/p_polyobj.h +++ b/src/p_polyobj.h @@ -99,6 +99,9 @@ typedef struct polyobj_s UINT8 isBad; // a bad polyobject: should not be rendered/manipulated INT32 translucency; // index to translucency tables + + // these are saved for netgames, so do not let Lua touch these! + INT32 spawnflags; // Flags the polyobject originally spawned with } polyobj_t; // @@ -122,6 +125,7 @@ typedef struct polyrotate_s INT32 polyObjNum; // numeric id of polyobject (avoid C pointers here) INT32 speed; // speed of movement per frame INT32 distance; // distance to move + UINT8 turnobjs; // turn objects? 0=no, 1=everything but players, 2=everything } polyrotate_t; typedef struct polymove_s @@ -189,6 +193,17 @@ typedef struct polyswingdoor_s UINT8 closing; // if true, is closing } polyswingdoor_t; +typedef struct polydisplace_s +{ + thinker_t thinker; // must be first + + INT32 polyObjNum; + struct sector_s *controlSector; + fixed_t dx; + fixed_t dy; + fixed_t oldHeights; +} polydisplace_t; + // // Line Activation Data Structures // @@ -199,7 +214,8 @@ typedef struct polyrotdata_s INT32 direction; // direction of rotation INT32 speed; // angular speed INT32 distance; // distance to move - UINT8 overRide; // if true, will override any action on the object + UINT8 turnobjs; // rotate objects being carried? + UINT8 overRide; // if true, will override any action on the object } polyrotdata_t; typedef struct polymovedata_s @@ -208,7 +224,7 @@ typedef struct polymovedata_s fixed_t distance; // distance to move fixed_t speed; // linear speed angle_t angle; // angle of movement - UINT8 overRide; // if true, will override any action on the object + UINT8 overRide; // if true, will override any action on the object } polymovedata_t; typedef struct polywaypointdata_s @@ -239,6 +255,14 @@ typedef struct polydoordata_s INT32 delay; // delay time after opening } polydoordata_t; +typedef struct polydisplacedata_s +{ + INT32 polyObjNum; + struct sector_s *controlSector; + fixed_t dx; + fixed_t dy; +} polydisplacedata_t; + // // Functions // @@ -258,12 +282,14 @@ void T_PolyObjMove (polymove_t *); void T_PolyObjWaypoint (polywaypoint_t *); void T_PolyDoorSlide(polyslidedoor_t *); void T_PolyDoorSwing(polyswingdoor_t *); +void T_PolyObjDisplace (polydisplace_t *); void T_PolyObjFlag (polymove_t *); INT32 EV_DoPolyDoor(polydoordata_t *); INT32 EV_DoPolyObjMove(polymovedata_t *); INT32 EV_DoPolyObjWaypoint(polywaypointdata_t *); INT32 EV_DoPolyObjRotate(polyrotdata_t *); +INT32 EV_DoPolyObjDisplace(polydisplacedata_t *); INT32 EV_DoPolyObjFlag(struct line_s *); diff --git a/src/p_saveg.c b/src/p_saveg.c index 3392d1e2..bf64d9a2 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -143,13 +143,13 @@ static inline void P_NetArchivePlayers(void) WRITEUINT16(save_p, players[i].flashcount); WRITEUINT32(save_p, players[i].score); - WRITEINT32(save_p, players[i].dashspeed); + WRITEFIXED(save_p, players[i].dashspeed); WRITEINT32(save_p, players[i].dashtime); WRITESINT8(save_p, players[i].lives); WRITESINT8(save_p, players[i].continues); WRITESINT8(save_p, players[i].xtralife); WRITEUINT8(save_p, players[i].gotcontinue); - WRITEINT32(save_p, players[i].speed); + WRITEFIXED(save_p, players[i].speed); WRITEUINT8(save_p, players[i].jumping); WRITEUINT8(save_p, players[i].secondjump); WRITEUINT8(save_p, players[i].fly1); @@ -172,8 +172,8 @@ static inline void P_NetArchivePlayers(void) ///////////////////// // Race Mode Stuff // ///////////////////// - WRITEINT32(save_p, players[i].numboxes); - WRITEINT32(save_p, players[i].totalring); + WRITEINT16(save_p, players[i].numboxes); + WRITEINT16(save_p, players[i].totalring); WRITEUINT32(save_p, players[i].realtime); WRITEUINT8(save_p, players[i].laps); @@ -211,7 +211,7 @@ static inline void P_NetArchivePlayers(void) WRITEUINT32(save_p, players[i].marebegunat); WRITEUINT32(save_p, players[i].startedtime); WRITEUINT32(save_p, players[i].finishedtime); - WRITEUINT16(save_p, players[i].finishedrings); + WRITEINT16(save_p, players[i].finishedrings); WRITEUINT32(save_p, players[i].marescore); WRITEUINT32(save_p, players[i].lastmarescore); WRITEUINT8(save_p, players[i].lastmare); @@ -318,13 +318,13 @@ static inline void P_NetUnArchivePlayers(void) players[i].flashcount = READUINT16(save_p); players[i].score = READUINT32(save_p); - players[i].dashspeed = READINT32(save_p); // dashing speed + players[i].dashspeed = READFIXED(save_p); // dashing speed players[i].dashtime = READINT32(save_p); // dashing speed players[i].lives = READSINT8(save_p); players[i].continues = READSINT8(save_p); // continues that player has acquired players[i].xtralife = READSINT8(save_p); // Ring Extra Life counter players[i].gotcontinue = READUINT8(save_p); // got continue from stage - players[i].speed = READINT32(save_p); // Player's speed (distance formula of MOMX and MOMY values) + players[i].speed = READFIXED(save_p); // Player's speed (distance formula of MOMX and MOMY values) players[i].jumping = READUINT8(save_p); // Jump counter players[i].secondjump = READUINT8(save_p); players[i].fly1 = READUINT8(save_p); // Tails flying @@ -347,8 +347,8 @@ static inline void P_NetUnArchivePlayers(void) ///////////////////// // Race Mode Stuff // ///////////////////// - players[i].numboxes = READINT32(save_p); // Number of item boxes obtained for Race Mode - players[i].totalring = READINT32(save_p); // Total number of rings obtained for Race Mode + players[i].numboxes = READINT16(save_p); // Number of item boxes obtained for Race Mode + players[i].totalring = READINT16(save_p); // Total number of rings obtained for Race Mode players[i].realtime = READUINT32(save_p); // integer replacement for leveltime players[i].laps = READUINT8(save_p); // Number of laps (optional) @@ -386,7 +386,7 @@ static inline void P_NetUnArchivePlayers(void) players[i].marebegunat = READUINT32(save_p); players[i].startedtime = READUINT32(save_p); players[i].finishedtime = READUINT32(save_p); - players[i].finishedrings = READUINT16(save_p); + players[i].finishedrings = READINT16(save_p); players[i].marescore = READUINT32(save_p); players[i].lastmarescore = READUINT32(save_p); players[i].lastmare = READUINT8(save_p); @@ -447,6 +447,7 @@ static inline void P_NetUnArchivePlayers(void) #define SD_LIGHT 0x10 #define SD_SPECIAL 0x20 #define SD_DIFF2 0x40 +#define SD_FFLOORS 0x80 // diff2 flags #define SD_FXOFFS 0x01 @@ -459,6 +460,7 @@ static inline void P_NetUnArchivePlayers(void) #define LD_FLAG 0x01 #define LD_SPECIAL 0x02 +#define LD_CLLCOUNT 0x04 #define LD_S1TEXOFF 0x08 #define LD_S1TOPTEX 0x10 #define LD_S1BOTTEX 0x20 @@ -515,23 +517,37 @@ static void P_NetArchiveWorld(void) if (ss->special != SHORT(ms->special)) diff |= SD_SPECIAL; - /// \todo this makes Flat Alignment (linetype 7) increase the savegame size! - if (ss->floor_xoffs != 0) + if (ss->floor_xoffs != ss->spawn_flr_xoffs) diff2 |= SD_FXOFFS; - if (ss->floor_yoffs != 0) + if (ss->floor_yoffs != ss->spawn_flr_yoffs) diff2 |= SD_FYOFFS; - if (ss->ceiling_xoffs != 0) + if (ss->ceiling_xoffs != ss->spawn_ceil_xoffs) diff2 |= SD_CXOFFS; - if (ss->ceiling_yoffs != 0) + if (ss->ceiling_yoffs != ss->spawn_ceil_yoffs) diff2 |= SD_CYOFFS; - if (ss->floorpic_angle != 0) + if (ss->floorpic_angle != ss->spawn_flrpic_angle) diff2 |= SD_FLOORANG; - if (ss->ceilingpic_angle != 0) + if (ss->ceilingpic_angle != ss->spawn_flrpic_angle) diff2 |= SD_CEILANG; if (ss->tag != SHORT(ms->tag)) diff2 |= SD_TAG; + // Check if any of the sector's FOFs differ from how they spawned + if (ss->ffloors) + { + ffloor_t *rover; + for (rover = ss->ffloors; rover; rover = rover->next) + { + if (rover->flags != rover->spawnflags + || rover->alpha != rover->spawnalpha) + { + diff |= SD_FFLOORS; // we found an FOF that changed! + break; // don't bother checking for more, we do that later + } + } + } + if (diff2) diff |= SD_DIFF2; @@ -573,6 +589,35 @@ static void P_NetArchiveWorld(void) WRITEANGLE(put, ss->floorpic_angle); if (diff2 & SD_CEILANG) WRITEANGLE(put, ss->ceilingpic_angle); + + // Special case: save the stats of all modified ffloors along with their ffloor "number"s + // we don't bother with ffloors that haven't changed, that would just add to savegame even more than is really needed + if (diff & SD_FFLOORS) + { + size_t j = 0; // ss->ffloors is saved as ffloor #0, ss->ffloors->next is #1, etc + ffloor_t *rover; + UINT8 fflr_diff; + for (rover = ss->ffloors; rover; rover = rover->next) + { + fflr_diff = 0; // reset diff flags + if (rover->flags != rover->spawnflags) + fflr_diff |= 1; + if (rover->alpha != rover->spawnalpha) + fflr_diff |= 2; + + if (fflr_diff) + { + WRITEUINT16(put, j); // save ffloor "number" + WRITEUINT8(put, fflr_diff); + if (fflr_diff & 1) + WRITEUINT16(put, rover->flags); + if (fflr_diff & 2) + WRITEINT16(put, rover->alpha); + } + j++; + } + WRITEUINT16(put, 0xffff); + } } } @@ -588,6 +633,9 @@ static void P_NetArchiveWorld(void) if (li->special != SHORT(mld->special)) diff |= LD_SPECIAL; + if (mld->special == 321 || mld->special == 322) // only reason li->callcount would be non-zero is if either of these are involved + diff |= LD_CLLCOUNT; + if (li->sidenum[0] != 0xffff) { si = &sides[li->sidenum[0]]; @@ -633,6 +681,8 @@ static void P_NetArchiveWorld(void) WRITEINT16(put, li->flags); if (diff & LD_SPECIAL) WRITEINT16(put, li->special); + if (diff & LD_CLLCOUNT) + WRITEINT16(put, li->callcount); si = &sides[li->sidenum[0]]; if (diff & LD_S1TEXOFF) @@ -732,6 +782,46 @@ static void P_NetUnArchiveWorld(void) sectors[i].floorpic_angle = READANGLE(get); if (diff2 & SD_CEILANG) sectors[i].ceilingpic_angle = READANGLE(get); + + if (diff & SD_FFLOORS) + { + UINT16 j = 0; // number of current ffloor in loop + UINT16 fflr_i; // saved ffloor "number" of next modified ffloor + UINT16 fflr_diff; // saved ffloor diff + ffloor_t *rover; + + rover = sectors[i].ffloors; + if (!rover) // it is assumed sectors[i].ffloors actually exists, but just in case... + I_Error("Sector does not have any ffloors!"); + + fflr_i = READUINT16(get); // get first modified ffloor's number ready + for (;;) // for some reason the usual for (rover = x; ...) thing doesn't work here? + { + if (fflr_i == 0xffff) // end of modified ffloors list, let's stop already + break; + // should NEVER need to be checked + //if (rover == NULL) + //break; + if (j != fflr_i) // this ffloor was not modified + { + j++; + rover = rover->next; + continue; + } + + fflr_diff = READUINT8(get); + + if (fflr_diff & 1) + rover->flags = READUINT16(get); + if (fflr_diff & 2) + rover->alpha = READINT16(get); + + fflr_i = READUINT16(get); // get next ffloor "number" ready + + j++; + rover = rover->next; + } + } } for (;;) @@ -754,6 +844,8 @@ static void P_NetUnArchiveWorld(void) li->flags = READINT16(get); if (diff & LD_SPECIAL) li->special = READINT16(get); + if (diff & LD_CLLCOUNT) + li->callcount = READINT16(get); si = &sides[li->sidenum[0]]; if (diff & LD_S1TEXOFF) @@ -869,6 +961,7 @@ typedef enum tc_polyslidedoor, tc_polyswingdoor, tc_polyflag, + tc_polydisplace, #endif tc_end } specials_e; @@ -1149,6 +1242,7 @@ static void SaveExecutorThinker(const thinker_t *th, const UINT8 type) WRITEUINT8(save_p, type); WRITEUINT32(save_p, SaveLine(ht->line)); WRITEUINT32(save_p, SaveMobjnum(ht->caller)); + WRITEUINT32(save_p, SaveSector(ht->sector)); WRITEINT32(save_p, ht->timer); } @@ -1269,6 +1363,17 @@ static void SavePolyswingdoorThinker(const thinker_t *th, const UINT8 type) WRITEUINT8(save_p, ht->closing); } +static void SavePolydisplaceThinker(const thinker_t *th, const UINT8 type) +{ + const polydisplace_t *ht = (const void *)th; + WRITEUINT8(save_p, type); + WRITEINT32(save_p, ht->polyObjNum); + WRITEUINT32(save_p, SaveSector(ht->controlSector)); + WRITEFIXED(save_p, ht->dx); + WRITEFIXED(save_p, ht->dy); + WRITEFIXED(save_p, ht->oldHeights); +} + #endif /* // @@ -1696,6 +1801,11 @@ static void P_NetArchiveThinkers(void) SavePolymoveThinker(th, tc_polyflag); continue; } + else if (th->function.acp1 == (actionf_p1)T_PolyObjDisplace) + { + SavePolydisplaceThinker(th, tc_polydisplace); + continue; + } #endif #ifdef PARANOIA else if (th->function.acv != P_RemoveThinkerDelayed) // wait garbage collection @@ -2057,6 +2167,7 @@ static inline void LoadExecutorThinker(actionf_p1 thinker) ht->thinker.function.acp1 = thinker; ht->line = LoadLine(READUINT32(save_p)); ht->caller = LoadMobj(READUINT32(save_p)); + ht->sector = LoadSector(READUINT32(save_p)); ht->timer = READINT32(save_p); P_AddThinker(&ht->thinker); } @@ -2183,6 +2294,23 @@ static inline void LoadPolyswingdoorThinker(actionf_p1 thinker) ht->closing = READUINT8(save_p); P_AddThinker(&ht->thinker); } + +// +// LoadPolydisplaceThinker +// +// Loads a polydisplace_t thinker +// +static inline void LoadPolydisplaceThinker(actionf_p1 thinker) +{ + polydisplace_t *ht = Z_Malloc(sizeof (*ht), PU_LEVSPEC, NULL); + ht->thinker.function.acp1 = thinker; + ht->polyObjNum = READINT32(save_p); + ht->controlSector = LoadSector(READUINT32(save_p)); + ht->dx = READFIXED(save_p); + ht->dy = READFIXED(save_p); + ht->oldHeights = READFIXED(save_p); + P_AddThinker(&ht->thinker); +} #endif /* @@ -2574,9 +2702,14 @@ static void P_NetUnArchiveThinkers(void) case tc_polyswingdoor: LoadPolyswingdoorThinker((actionf_p1)T_PolyDoorSwing); break; + case tc_polyflag: LoadPolymoveThinker((actionf_p1)T_PolyObjFlag); break; + + case tc_polydisplace: + LoadPolydisplaceThinker((actionf_p1)T_PolyObjDisplace); + break; #endif case tc_scroll: LoadScrollThinker((actionf_p1)T_Scroll); @@ -2617,13 +2750,29 @@ static void P_NetUnArchiveThinkers(void) // haleyjd 03/26/06: PolyObject saving code // #ifdef POLYOBJECTS +#define PD_FLAGS 0x01 +#define PD_TRANS 0x02 + static inline void P_ArchivePolyObj(polyobj_t *po) { + UINT8 diff = 0; WRITEINT32(save_p, po->id); WRITEANGLE(save_p, po->angle); WRITEFIXED(save_p, po->spawnSpot.x); WRITEFIXED(save_p, po->spawnSpot.y); + + if (po->flags != po->spawnflags) + diff |= PD_FLAGS; + if (po->translucency != 0) + diff |= PD_TRANS; + + WRITEUINT8(save_p, diff); + + if (diff & PD_FLAGS) + WRITEINT32(save_p, po->flags); + if (diff & PD_TRANS) + WRITEINT32(save_p, po->translucency); } static inline void P_UnArchivePolyObj(polyobj_t *po) @@ -2631,6 +2780,7 @@ static inline void P_UnArchivePolyObj(polyobj_t *po) INT32 id; UINT32 angle; fixed_t x, y; + UINT8 diff; // nullify all polyobject thinker pointers; // the thinkers themselves will fight over who gets the field @@ -2644,6 +2794,13 @@ static inline void P_UnArchivePolyObj(polyobj_t *po) x = READFIXED(save_p); y = READFIXED(save_p); + diff = READUINT8(save_p); + + if (diff & PD_FLAGS) + po->flags = READINT32(save_p); + if (diff & PD_TRANS) + po->translucency = READINT32(save_p); + // if the object is bad or isn't in the id hash, we can do nothing more // with it, so return now if (po->isBad || po != Polyobj_GetForNum(id)) @@ -2812,6 +2969,14 @@ static inline void P_NetArchiveSpecials(void) // Current global weather type WRITEUINT8(save_p, globalweather); + + if (metalplayback) // Is metal sonic running? + { + WRITEUINT8(save_p, 0x01); + G_SaveMetal(&save_p); + } + else + WRITEUINT8(save_p, 0x00); } // @@ -2851,6 +3016,9 @@ static void P_NetUnArchiveSpecials(void) if (curWeather != PRECIP_NONE) P_SwitchWeather(globalweather); } + + if (READUINT8(save_p) == 0x01) // metal sonic + G_LoadMetal(&save_p); } // ======================================================================= diff --git a/src/p_setup.c b/src/p_setup.c index b3e85966..ca78db05 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -642,7 +642,9 @@ static void P_LoadSectors(lumpnum_t lumpnum) ss->extra_colormap = NULL; ss->floor_xoffs = ss->ceiling_xoffs = ss->floor_yoffs = ss->ceiling_yoffs = 0; + ss->spawn_flr_xoffs = ss->spawn_ceil_xoffs = ss->spawn_flr_yoffs = ss->spawn_ceil_yoffs = 0; ss->floorpic_angle = ss->ceilingpic_angle = 0; + ss->spawn_flrpic_angle = ss->spawn_ceilpic_angle = 0; ss->bottommap = ss->midmap = ss->topmap = -1; ss->gravity = NULL; ss->cullheight = NULL; @@ -1139,6 +1141,7 @@ static void P_LoadLineDefs(lumpnum_t lumpnum) ld->frontsector = ld->backsector = NULL; ld->validcount = 0; ld->firsttag = ld->nexttag = -1; + ld->callcount = 0; // killough 11/98: fix common wad errors (missing sidedefs): if (ld->sidenum[0] == 0xffff) @@ -1380,7 +1383,6 @@ static void P_LoadSideDefs2(lumpnum_t lumpnum) { col = msd->bottomtexture; - sec->extra_colormap->fadergba = (HEX2INT(col[1]) << 4) + (HEX2INT(col[2]) << 0) + (HEX2INT(col[3]) << 12) + (HEX2INT(col[4]) << 8) + @@ -1393,7 +1395,7 @@ static void P_LoadSideDefs2(lumpnum_t lumpnum) sec->extra_colormap->fadergba += (25 << 24); } else - sec->extra_colormap->fadergba = 0x19000000; + sec->extra_colormap->fadergba = 0x19000000; // default alpha, (25 << 24) #undef ALPHA2INT #undef HEX2INT } @@ -2341,6 +2343,35 @@ static void P_LoadRecordGhosts(void) free(gpath); } +static void P_LoadNightsGhosts(void) +{ + const size_t glen = strlen(srb2home)+1+strlen("replay")+1+strlen(timeattackfolder)+1+strlen("MAPXX")+1; + char *gpath = malloc(glen); + + if (!gpath) + return; + + sprintf(gpath,"%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(gamemap)); + + // Best Score ghost + if (cv_ghost_bestscore.value && FIL_FileExists(va("%s-score-best.lmp", gpath))) + G_AddGhost(va("%s-score-best.lmp", gpath)); + + // Best Time ghost + if (cv_ghost_besttime.value && FIL_FileExists(va("%s-time-best.lmp", gpath))) + G_AddGhost(va("%s-time-best.lmp", gpath)); + + // Last ghost + if (cv_ghost_last.value && FIL_FileExists(va("%s-last.lmp", gpath))) + G_AddGhost(va("%s-last.lmp", gpath)); + + // Guest ghost + if (cv_ghost_guest.value && FIL_FileExists(va("%s-guest.lmp", gpath))) + G_AddGhost(va("%s-guest.lmp", gpath)); + + free(gpath); +} + /** Loads a level from a lump or external wad. * * \param skipprecip If true, don't spawn precipitation. @@ -2602,6 +2633,8 @@ boolean P_SetupLevel(boolean skipprecip) if (modeattacking == ATTACKING_RECORD && !demoplayback) P_LoadRecordGhosts(); + else if (modeattacking == ATTACKING_NIGHTS && !demoplayback) + P_LoadNightsGhosts(); if (G_TagGametype()) { @@ -2750,7 +2783,6 @@ boolean P_SetupLevel(boolean skipprecip) R_PrecacheLevel(); nextmapoverride = 0; - nextmapgametype = -1; skipstats = false; if (!(netgame || multiplayer) && (!modifiedgame || savemoddata)) diff --git a/src/p_spec.c b/src/p_spec.c index 3c9af246..323b93c6 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -50,10 +50,6 @@ mobj_t *skyboxmo[2]; // Amount (dx, dy) vector linedef is shifted right to get scroll amount #define SCROLL_SHIFT 5 -// Factor to scale scrolling effect into mobj-carrying properties = 3/32. -// (This is so scrolling floors and objects on them can move at same speed.) -#define CARRYFACTOR ((3*FRACUNIT)/32) - /** Animated texture descriptor * This keeps track of an animated texture or an animated flat. * \sa P_UpdateSpecials, P_InitPicAnims, animdef_t @@ -107,7 +103,7 @@ static void P_AddBlockThinker(sector_t *sec, line_t *sourceline); static void P_AddFloatThinker(sector_t *sec, INT32 tag, line_t *sourceline); static void P_AddBridgeThinker(line_t *sourceline, sector_t *sec); static void P_AddFakeFloorsByLine(size_t line, ffloortype_e ffloorflags, thinkerlist_t *secthinkers); -static void P_ProcessLineSpecial(line_t *line, mobj_t *mo); +static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec); static void Add_Friction(INT32 friction, INT32 movefactor, INT32 affectee, INT32 referrer); static void P_AddSpikeThinker(sector_t *sec, INT32 referrer); @@ -1388,9 +1384,34 @@ static boolean PolyRotate(line_t *line) // Polyobj_OR types have override set to true prd.overRide = (line->special == 485 || line->special == 487); + if (line->flags & ML_NOCLIMB) + prd.turnobjs = 0; + else if (line->flags & ML_EFFECT4) + prd.turnobjs = 2; + else + prd.turnobjs = 1; + return EV_DoPolyObjRotate(&prd); } +// +// PolyDisplace +// +// Parses arguments for parameterized polyobject move-by-sector-heights specials +// +static boolean PolyDisplace(line_t *line) +{ + polydisplacedata_t pdd; + + pdd.polyObjNum = line->tag; + + pdd.controlSector = line->frontsector; + pdd.dx = line->dx>>8; + pdd.dy = line->dy>>8; + + return EV_DoPolyObjDisplace(&pdd); +} + #endif // ifdef POLYOBJECTS /** Changes a sector's tag. @@ -1512,13 +1533,13 @@ void T_ExecutorDelay(executor_t *e) { if (e->caller && P_MobjWasRemoved(e->caller)) // If the mobj died while we were delaying P_SetTarget(&e->caller, NULL); // Call with no mobj! - P_ProcessLineSpecial(e->line, e->caller); + P_ProcessLineSpecial(e->line, e->caller, e->sector); P_SetTarget(&e->caller, NULL); // Let the mobj know it can be removed now. P_RemoveThinker(&e->thinker); } } -static void P_AddExecutorDelay(line_t *line, mobj_t *mobj) +static void P_AddExecutorDelay(line_t *line, mobj_t *mobj, sector_t *sector) { executor_t *e; @@ -1529,13 +1550,12 @@ static void P_AddExecutorDelay(line_t *line, mobj_t *mobj) e->thinker.function.acp1 = (actionf_p1)T_ExecutorDelay; e->line = line; + e->sector = sector; e->timer = (line->backsector->ceilingheight>>FRACBITS)+(line->backsector->floorheight>>FRACBITS); P_SetTarget(&e->caller, mobj); // Use P_SetTarget to make sure the mobj doesn't get freed while we're delaying. P_AddThinker(&e->thinker); } -static sector_t *triplinecaller; - /** Used by P_LinedefExecute to check a trigger linedef's conditions * The linedef executor specials in the trigger linedef's sector are run if all conditions are met. * Return false cancels P_LinedefExecute, this happens if a condition is not met. @@ -1672,7 +1692,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller // If we were not triggered by a sector type especially for the purpose, // a Linedef Executor linedef trigger is not handling sector triggers properly, return. - else if ((!GETSECSPECIAL(caller->special, 2) || GETSECSPECIAL(caller->special, 2) > 7) && (specialtype > 320)) + else if ((!GETSECSPECIAL(caller->special, 2) || GETSECSPECIAL(caller->special, 2) > 7) && (specialtype > 322)) { CONS_Alert(CONS_WARNING, M_GetText("Linedef executor trigger isn't handling sector triggers properly!\nspecialtype = %d, if you are not a dev, report this warning instance\nalong with the wad that caused it!\n"), @@ -1737,6 +1757,15 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller return false; } break; + case 321: // continuous + case 322: // each time + // decrement calls left before triggering + if (triggerline->callcount > 0) + { + if (--triggerline->callcount > 0) + return false; + } + break; default: break; } @@ -1745,7 +1774,6 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller // Processing linedef specials // ///////////////////////////////// - triplinecaller = caller; ctlsector = triggerline->frontsector; sectori = (size_t)(ctlsector - sectors); linecnt = ctlsector->linecount; @@ -1757,9 +1785,9 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller && ctlsector->lines[i]->special < 500) { if (ctlsector->lines[i]->flags & ML_DONTPEGTOP) - P_AddExecutorDelay(ctlsector->lines[i], actor); + P_AddExecutorDelay(ctlsector->lines[i], actor, caller); else - P_ProcessLineSpecial(ctlsector->lines[i], actor); + P_ProcessLineSpecial(ctlsector->lines[i], actor, caller); } } else // walk around the sector in a defined order @@ -1845,13 +1873,17 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller && ctlsector->lines[i]->special < 500) { if (ctlsector->lines[i]->flags & ML_DONTPEGTOP) - P_AddExecutorDelay(ctlsector->lines[i], actor); + P_AddExecutorDelay(ctlsector->lines[i], actor, caller); else - P_ProcessLineSpecial(ctlsector->lines[i], actor); + P_ProcessLineSpecial(ctlsector->lines[i], actor, caller); } } } + // "Trigger on X calls" linedefs reset if noclimb is set + if ((specialtype == 321 || specialtype == 322) && triggerline->flags & ML_NOCLIMB) + triggerline->callcount = sides[triggerline->sidenum[0]].textureoffset>>FRACBITS; + else // These special types work only once if (specialtype == 302 // Once || specialtype == 304 // Ring count - Once @@ -1860,6 +1892,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller || specialtype == 315 // No of pushables - Once || specialtype == 318 // Unlockable trigger - Once || specialtype == 320 // Unlockable - Once + || specialtype == 321 || specialtype == 322 // Trigger on X calls - Continuous + Each Time || specialtype == 399) // Level Load triggerline->special = 0; // Clear it out @@ -1899,7 +1932,8 @@ void P_LinedefExecute(INT16 tag, mobj_t *actor, sector_t *caller) || lines[masterline].special == 301 // Each time || lines[masterline].special == 306 // Character ability - Each time || lines[masterline].special == 310 // CTF Red team - Each time - || lines[masterline].special == 312) // CTF Blue team - Each time + || lines[masterline].special == 312 // CTF Blue team - Each time + || lines[masterline].special == 322) // Trigger on X calls - Each Time continue; if (lines[masterline].special < 300 @@ -2149,22 +2183,20 @@ static mobj_t *P_GetObjectTypeInSectorNum(mobjtype_t type, size_t s) } /** Processes the line special triggered by an object. - * The external variable ::triplinecaller points to the sector in which the - * action was initiated; it can be NULL. Because of the A_LinedefExecute() - * action, even if non-NULL, this sector might not have the same tag as the - * linedef executor, and it might not have the linedef executor sector type. * * \param line Line with the special command on it. * \param mo mobj that triggered the line. Must be valid and non-NULL. - * \todo Get rid of the secret parameter and make ::triplinecaller actually get - * passed to the function. + * \param callsec sector in which action was initiated; this can be NULL. + * Because of the A_LinedefExecute() action, even if non-NULL, + * this sector might not have the same tag as the linedef executor, + * and it might not have the linedef executor sector type. * \todo Handle mo being NULL gracefully. T_MoveFloor() and T_MoveCeiling() * don't have an object to pass. * \todo Split up into multiple functions. * \sa P_LinedefExecute * \author Graue */ -static void P_ProcessLineSpecial(line_t *line, mobj_t *mo) +static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) { INT32 secnum = -1; mobj_t *bot = NULL; @@ -2365,7 +2397,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo) if (musicnum >= NUMMUSIC || musicnum == mus_None) S_StopMusic(); else - S_ChangeMusic(mapmusic, !(line->flags & ML_NOCLIMB)); + S_ChangeMusic(mapmusic, !(line->flags & ML_EFFECT4)); // Except, you can use the ML_BLOCKMONSTERS flag to change this behavior. // if (mapmusic & MUSIC_RELOADRESET) then it will reset the music in G_PlayerReborn. @@ -2431,8 +2463,8 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo) else if (line->flags & ML_BLOCKMONSTERS) { // play the sound from calling sector's soundorg - if (triplinecaller) - S_StartSound(&triplinecaller->soundorg, sfxnum); + if (callsec) + S_StartSound(&callsec->soundorg, sfxnum); else if (mo) S_StartSound(&mo->subsector->sector->soundorg, sfxnum); } @@ -2976,7 +3008,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo) case 443: // Calls a named Lua function #ifdef HAVE_BLUA - LUAh_LinedefExecute(line, mo); + LUAh_LinedefExecute(line, mo, callsec); #else CONS_Alert(CONS_ERROR, "The map is trying to run a Lua script, but this exe was not compiled with Lua support!\n"); #endif @@ -3392,9 +3424,9 @@ static boolean P_ThingIsOnThe3DFloor(mobj_t *mo, sector_t *sector, sector_t *tar static inline boolean P_MobjReadyToTrigger(mobj_t *mo, sector_t *sec) { if (mo->eflags & MFE_VERTICALFLIP) - return (mo->z+mo->height == sec->ceilingheight); + return (mo->z+mo->height == sec->ceilingheight && sec->flags & SF_FLIPSPECIAL_CEILING); else - return (mo->z == sec->floorheight); + return (mo->z == sec->floorheight && sec->flags & SF_FLIPSPECIAL_FLOOR); } /** Applies a sector special to a player. @@ -3715,15 +3747,6 @@ DoneSection2: if (lines[lineindex].flags & ML_NOCLIMB) skipstats = true; - - // change the gametype using front x offset if passuse flag is given - // ...but not in single player! - if (multiplayer && lines[lineindex].flags & ML_EFFECT4) - { - INT32 xofs = sides[lines[lineindex].sidenum[0]].textureoffset; - if (xofs >= 0 && xofs < NUMGAMETYPES) - nextmapgametype = xofs; - } } } break; @@ -4861,7 +4884,7 @@ static ffloor_t *P_AddFakeFloor(sector_t *sec, sector_t *sec2, line_t *master, f if ((flags & FF_SOLID) && (master->flags & ML_EFFECT2)) // Block all BUT player flags &= ~FF_BLOCKPLAYER; - ffloor->flags = flags; + ffloor->spawnflags = ffloor->flags = flags; ffloor->master = master; ffloor->norender = INFTICS; @@ -4927,6 +4950,8 @@ static ffloor_t *P_AddFakeFloor(sector_t *sec, sector_t *sec2, line_t *master, f else ffloor->alpha = 0xff; + ffloor->spawnalpha = ffloor->alpha; // save for netgames + if (flags & FF_QUICKSAND) CheckForQuicksand = true; @@ -5607,13 +5632,13 @@ void P_SpawnSpecials(INT32 fromnetsave) if (!(lines[i].flags & ML_EFFECT5)) // Align floor unless ALLTRIGGER flag is set { for (s = -1; (s = P_FindSectorFromLineTag(lines + i, s)) >= 0 ;) - sectors[s].floorpic_angle = R_PointToAngle2(lines[i].v1->x, lines[i].v1->y, lines[i].v2->x, lines[i].v2->y); + sectors[s].spawn_flrpic_angle = sectors[s].floorpic_angle = R_PointToAngle2(lines[i].v1->x, lines[i].v1->y, lines[i].v2->x, lines[i].v2->y); } if (!(lines[i].flags & ML_BOUNCY)) // Align ceiling unless BOUNCY flag is set { for (s = -1; (s = P_FindSectorFromLineTag(lines + i, s)) >= 0 ;) - sectors[s].ceilingpic_angle = R_PointToAngle2(lines[i].v1->x, lines[i].v1->y, lines[i].v2->x, lines[i].v2->y); + sectors[s].spawn_ceilpic_angle = sectors[s].ceilingpic_angle = R_PointToAngle2(lines[i].v1->x, lines[i].v1->y, lines[i].v2->x, lines[i].v2->y); } } else // Do offsets @@ -5624,6 +5649,9 @@ void P_SpawnSpecials(INT32 fromnetsave) { sectors[s].floor_xoffs += lines[i].dx; sectors[s].floor_yoffs += lines[i].dy; + // saved for netgames + sectors[s].spawn_flr_xoffs = sectors[s].floor_xoffs; + sectors[s].spawn_flr_yoffs = sectors[s].floor_yoffs; } } @@ -5633,6 +5661,9 @@ void P_SpawnSpecials(INT32 fromnetsave) { sectors[s].ceiling_xoffs += lines[i].dx; sectors[s].ceiling_yoffs += lines[i].dy; + // saved for netgames + sectors[s].spawn_ceil_xoffs = sectors[s].ceiling_xoffs; + sectors[s].spawn_ceil_yoffs = sectors[s].ceiling_yoffs; } } } @@ -6305,6 +6336,20 @@ void P_SpawnSpecials(INT32 fromnetsave) case 320: break; + // Trigger on X calls + case 321: + case 322: + if (lines[i].flags & ML_NOCLIMB && sides[lines[i].sidenum[0]].rowoffset > 0) // optional "starting" count + lines[i].callcount = sides[lines[i].sidenum[0]].rowoffset>>FRACBITS; + else + lines[i].callcount = sides[lines[i].sidenum[0]].textureoffset>>FRACBITS; + if (lines[i].special == 322) // Each time + { + sec = sides[*lines[i].sidenum].sector - sectors; + P_AddEachTimeThinker(§ors[sec], &lines[i]); + } + break; + case 399: // Linedef execute on map load // This is handled in P_RunLevelLoadExecutors. break; @@ -6444,6 +6489,10 @@ void P_SpawnSpecials(INT32 fromnetsave) case 30: // Polyobj_Flag EV_DoPolyObjFlag(&lines[i]); break; + + case 31: // Polyobj_Displace + PolyDisplace(&lines[i]); + break; } } #endif @@ -6476,6 +6525,47 @@ static void P_AddFakeFloorsByLine(size_t line, ffloortype_e ffloorflags, thinker P_SpawnScrollers */ +// helper function for T_Scroll +static void P_DoScrollMove(mobj_t *thing, fixed_t dx, fixed_t dy, INT32 exclusive) +{ + fixed_t fuckaj = 0; // Nov 05 14:12:08 <+MonsterIestyn> I've heard of explicitly defined variables but this is ridiculous + if (thing->player) + { + if (!(dx | dy)) + { + thing->player->cmomx = 0; + thing->player->cmomy = 0; + } + else + { + thing->player->cmomx += dx; + thing->player->cmomy += dy; + thing->player->cmomx = FixedMul(thing->player->cmomx, 0xe800); + thing->player->cmomy = FixedMul(thing->player->cmomy, 0xe800); + } + } + + if (thing->player && (thing->player->pflags & PF_SPINNING) && (thing->player->rmomx || thing->player->rmomy) && !(thing->player->pflags & PF_STARTDASH)) + fuckaj = FixedDiv(549*ORIG_FRICTION,500*FRACUNIT); + else if (thing->friction != ORIG_FRICTION) + fuckaj = thing->friction; + + if (fuckaj) { + // refactor thrust for new friction + dx = FixedDiv(dx, CARRYFACTOR); + dy = FixedDiv(dy, CARRYFACTOR); + + dx = FixedMul(dx, FRACUNIT-fuckaj); + dy = FixedMul(dy, FRACUNIT-fuckaj); + } + + thing->momx += dx; + thing->momy += dy; + + if (exclusive) + thing->flags2 |= MF2_PUSHED; +} + /** Processes an active scroller. * This function, with the help of r_plane.c and r_bsp.c, supports generalized * scrolling floors and walls, with optional mobj-carrying properties, e.g. @@ -6585,26 +6675,7 @@ void T_Scroll(scroll_t *s) { // Move objects only if on floor // non-floating, and clipped. - thing->momx += dx; - thing->momy += dy; - if (thing->player) - { - if (!(dx | dy)) - { - thing->player->cmomx = 0; - thing->player->cmomy = 0; - } - else - { - thing->player->cmomx += dx; - thing->player->cmomy += dy; - thing->player->cmomx = FixedMul(thing->player->cmomx, 0xe800); - thing->player->cmomy = FixedMul(thing->player->cmomy, 0xe800); - } - } - - if (s->exclusive) - thing->flags2 |= MF2_PUSHED; + P_DoScrollMove(thing, dx, dy, s->exclusive); } } // end of for loop through touching_thinglist } // end of loop through sectors @@ -6619,31 +6690,12 @@ void T_Scroll(scroll_t *s) if (thing->flags2 & MF2_PUSHED) continue; - if (!((thing = node->m_thing)->flags & MF_NOCLIP) && + if (!(thing->flags & MF_NOCLIP) && (!(thing->flags & MF_NOGRAVITY || thing->z > height))) { // Move objects only if on floor or underwater, // non-floating, and clipped. - thing->momx += dx; - thing->momy += dy; - if (thing->player) - { - if (!(dx | dy)) - { - thing->player->cmomx = 0; - thing->player->cmomy = 0; - } - else - { - thing->player->cmomx += dx; - thing->player->cmomy += dy; - thing->player->cmomx = FixedMul(thing->player->cmomx, 0xe800); - thing->player->cmomy = FixedMul(thing->player->cmomy, 0xe800); - } - } - - if (s->exclusive) - thing->flags2 |= MF2_PUSHED; + P_DoScrollMove(thing, dx, dy, s->exclusive); } } } @@ -6682,26 +6734,7 @@ void T_Scroll(scroll_t *s) { // Move objects only if on floor or underwater, // non-floating, and clipped. - thing->momx += dx; - thing->momy += dy; - if (thing->player) - { - if (!(dx | dy)) - { - thing->player->cmomx = 0; - thing->player->cmomy = 0; - } - else - { - thing->player->cmomx += dx; - thing->player->cmomy += dy; - thing->player->cmomx = FixedMul(thing->player->cmomx, 0xe800); - thing->player->cmomy = FixedMul(thing->player->cmomy, 0xe800); - } - } - - if (s->exclusive) - thing->flags2 |= MF2_PUSHED; + P_DoScrollMove(thing, dx, dy, s->exclusive); } } // end of for loop through touching_thinglist } // end of loop through sectors @@ -6716,31 +6749,12 @@ void T_Scroll(scroll_t *s) if (thing->flags2 & MF2_PUSHED) continue; - if (!((thing = node->m_thing)->flags & MF_NOCLIP) && + if (!(thing->flags & MF_NOCLIP) && (!(thing->flags & MF_NOGRAVITY || thing->z+thing->height < height))) { // Move objects only if on floor or underwater, // non-floating, and clipped. - thing->momx += dx; - thing->momy += dy; - if (thing->player) - { - if (!(dx | dy)) - { - thing->player->cmomx = 0; - thing->player->cmomy = 0; - } - else - { - thing->player->cmomx += dx; - thing->player->cmomy += dy; - thing->player->cmomx = FixedMul(thing->player->cmomx, 0xe800); - thing->player->cmomy = FixedMul(thing->player->cmomy, 0xe800); - } - } - - if (s->exclusive) - thing->flags2 |= MF2_PUSHED; + P_DoScrollMove(thing, dx, dy, s->exclusive); } } } @@ -7440,16 +7454,16 @@ void T_Pusher(pusher_t *p) thing = node->m_thing; if (thing->flags & (MF_NOGRAVITY | MF_NOCLIP) && !(thing->type == MT_SMALLBUBBLE - || thing->type == MT_MEDIUMBUBBLE - || thing->type == MT_EXTRALARGEBUBBLE)) + || thing->type == MT_MEDIUMBUBBLE + || thing->type == MT_EXTRALARGEBUBBLE)) continue; if (!(thing->flags & MF_PUSHABLE) && !(thing->type == MT_PLAYER - || thing->type == MT_SMALLBUBBLE - || thing->type == MT_MEDIUMBUBBLE - || thing->type == MT_EXTRALARGEBUBBLE - || thing->type == MT_LITTLETUMBLEWEED - || thing->type == MT_BIGTUMBLEWEED)) + || thing->type == MT_SMALLBUBBLE + || thing->type == MT_MEDIUMBUBBLE + || thing->type == MT_EXTRALARGEBUBBLE + || thing->type == MT_LITTLETUMBLEWEED + || thing->type == MT_BIGTUMBLEWEED)) continue; if (thing->flags2 & MF2_PUSHED) diff --git a/src/p_spec.h b/src/p_spec.h index 04152f68..7b6a5655 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -347,6 +347,7 @@ typedef struct thinker_t thinker; // Thinker for linedef executor delay line_t *line; // Pointer to line that is waiting. mobj_t *caller; // Pointer to calling mobj + sector_t *sector; // Pointer to triggering sector INT32 timer; // Delay timer } executor_t; diff --git a/src/p_tick.c b/src/p_tick.c index 9a0f8016..3b7d3683 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -523,19 +523,20 @@ static inline void P_DoTagStuff(void) //increment survivor scores if (leveltime % TICRATE == 0 && leveltime > (hidetime * TICRATE)) { - INT32 spectators = 0; + INT32 participants = 0; - for (i=0; i < MAXPLAYERS; i++) //count spectators to subtract from the player count. + for (i=0; i < MAXPLAYERS; i++) { - if (players[i].spectator) - spectators++; + if (playeringame[i] && !players[i].spectator) + participants++; } for (i=0; i < MAXPLAYERS; i++) { - if (!(players[i].pflags & PF_TAGIT) && !(players[i].pflags & PF_TAGGED) - && !players[i].spectator && playeringame[i] && players[i].playerstate == PST_LIVE) - P_AddPlayerScore(&players[i], (D_NumPlayers() - spectators) / 2); //points given is the number of participating players divided by two. + if (playeringame[i] && !players[i].spectator && players[i].playerstate == PST_LIVE + && !(players[i].pflags & (PF_TAGIT|PF_TAGGED))) + //points given is the number of participating players divided by two. + P_AddPlayerScore(&players[i], participants/2); } } } @@ -691,7 +692,7 @@ void P_Ticker(boolean run) G_WriteGhostTic(players[consoleplayer].mo); if (demoplayback) // Use Ghost data for consistency checks. G_ConsGhostTic(); - if (modeattacking == ATTACKING_RECORD) + if (modeattacking) G_GhostTicker(); } diff --git a/src/p_user.c b/src/p_user.c index a31666c9..3c2d34a6 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -660,6 +660,7 @@ void P_NightserizePlayer(player_t *player, INT32 nighttime) player->mo->tracer->destscale = player->mo->scale; P_SetScale(player->mo->tracer, player->mo->scale); player->mo->tracer->eflags = (player->mo->tracer->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP); + player->mo->height = player->mo->tracer->height; } player->pflags &= ~(PF_USEDOWN|PF_JUMPDOWN|PF_ATTACKDOWN|PF_STARTDASH|PF_GLIDING|PF_JUMPED|PF_THOKKED|PF_SPINNING|PF_DRILLING); @@ -3998,10 +3999,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd) static boolean P_AnalogMove(player_t *player) { - if (netgame) - return false; - return ((player == &players[consoleplayer] && cv_analog.value) - || (player == &players[secondarydisplayplayer] && cv_analog2.value)); + return player->pflags & PF_ANALOGMODE; } // @@ -4124,7 +4122,11 @@ static void P_2dMovement(player_t *player) } else if (player->onconveyor == 4 && !P_IsObjectOnGround(player->mo)) // Actual conveyor belt player->cmomx = player->cmomy = 0; - else if (player->onconveyor != 2 && player->onconveyor != 4) + else if (player->onconveyor != 2 && player->onconveyor != 4 +#ifdef POLYOBJECTS + && player->onconveyor != 1 +#endif + ) player->cmomx = player->cmomy = 0; player->rmomx = player->mo->momx - player->cmomx; @@ -4264,22 +4266,16 @@ static void P_3dMovement(player_t *player) fixed_t movepushforward = 0, movepushside = 0; INT32 mforward = 0, mbackward = 0; angle_t dangle; // replaces old quadrants bits - camera_t *thiscam; fixed_t normalspd = FixedMul(player->normalspeed, player->mo->scale); boolean analogmove = false; #ifndef OLD_MOVEMENT_CODE fixed_t oldMagnitude, newMagnitude; // Get the old momentum; this will be needed at the end of the function! -SH - oldMagnitude = R_PointToDist2(player->mo->momx, player->mo->momy, 0, 0); + oldMagnitude = R_PointToDist2(player->mo->momx - player->cmomx, player->mo->momy - player->cmomy, 0, 0); #endif - if (splitscreen && player == &players[secondarydisplayplayer]) - thiscam = &camera2; - else - thiscam = &camera; - - analogmove = (P_AnalogMove(player) && thiscam->chase); + analogmove = P_AnalogMove(player); cmd = &player->cmd; @@ -4306,16 +4302,13 @@ static void P_3dMovement(player_t *player) if (analogmove) { - if (player->awayviewtics) - movepushangle = player->awayviewmobj->angle; - else - movepushangle = thiscam->angle; + movepushangle = (cmd->angleturn<<16 /* not FRACBITS */); } else { movepushangle = player->mo->angle; } - movepushsideangle = movepushangle-ANGLE_90; + movepushsideangle = movepushangle-ANGLE_90; // cmomx/cmomy stands for the conveyor belt speed. if (player->onconveyor == 2) // Wind/Current @@ -4326,7 +4319,11 @@ static void P_3dMovement(player_t *player) } else if (player->onconveyor == 4 && !P_IsObjectOnGround(player->mo)) // Actual conveyor belt player->cmomx = player->cmomy = 0; - else if (player->onconveyor != 2 && player->onconveyor != 4) + else if (player->onconveyor != 2 && player->onconveyor != 4 +#ifdef POLYOBJECTS + && player->onconveyor != 1 +#endif + ) player->cmomx = player->cmomy = 0; player->rmomx = player->mo->momx - player->cmomx; @@ -4482,8 +4479,6 @@ static void P_3dMovement(player_t *player) if (!(player->pflags & PF_GLIDING || player->exiting || P_PlayerInPain(player))) { angle_t controldirection; - fixed_t tempx = 0, tempy = 0; - angle_t tempangle; #ifdef OLD_MOVEMENT_CODE angle_t controlplayerdirection; boolean cforward; // controls pointing forward from the player @@ -4494,17 +4489,8 @@ static void P_3dMovement(player_t *player) #endif // Calculate the angle at which the controls are pointing // to figure out the proper mforward and mbackward. - tempangle = movepushangle; - tempangle >>= ANGLETOFINESHIFT; - tempx += FixedMul(cmd->forwardmove*FRACUNIT,FINECOSINE(tempangle)); - tempy += FixedMul(cmd->forwardmove*FRACUNIT,FINESINE(tempangle)); - - tempangle = movepushsideangle; - tempangle >>= ANGLETOFINESHIFT; - tempx += FixedMul(cmd->sidemove*FRACUNIT,FINECOSINE(tempangle)); - tempy += FixedMul(cmd->sidemove*FRACUNIT,FINESINE(tempangle)); - - controldirection = R_PointToAngle2(0, 0, tempx, tempy); + // (Why was it so complicated before? ~Red) + controldirection = R_PointToAngle2(0, 0, cmd->forwardmove*FRACUNIT, -cmd->sidemove*FRACUNIT)+movepushangle; #ifdef OLD_MOVEMENT_CODE controlplayerdirection = player->mo->angle; @@ -4624,22 +4610,27 @@ static void P_3dMovement(player_t *player) // If "no" to 2, normalize to topspeed, so we can't suddenly run faster than it of our own accord. // If "no" to 1, we're not reaching any limits yet, so ignore this entirely! // -Shadow Hog - newMagnitude = R_PointToDist2(player->mo->momx, player->mo->momy, 0, 0); + newMagnitude = R_PointToDist2(player->mo->momx - player->cmomx, player->mo->momy - player->cmomy, 0, 0); if (newMagnitude > topspeed) { + fixed_t tempmomx, tempmomy; if (oldMagnitude > topspeed) { if (newMagnitude > oldMagnitude) { - player->mo->momx = FixedMul(FixedDiv(player->mo->momx, newMagnitude), oldMagnitude); - player->mo->momy = FixedMul(FixedDiv(player->mo->momy, newMagnitude), oldMagnitude); + tempmomx = FixedMul(FixedDiv(player->mo->momx - player->cmomx, newMagnitude), oldMagnitude); + tempmomy = FixedMul(FixedDiv(player->mo->momy - player->cmomy, newMagnitude), oldMagnitude); + player->mo->momx = tempmomx + player->cmomx; + player->mo->momy = tempmomy + player->cmomy; } // else do nothing } else { - player->mo->momx = FixedMul(FixedDiv(player->mo->momx, newMagnitude), topspeed); - player->mo->momy = FixedMul(FixedDiv(player->mo->momy, newMagnitude), topspeed); + tempmomx = FixedMul(FixedDiv(player->mo->momx - player->cmomx, newMagnitude), topspeed); + tempmomy = FixedMul(FixedDiv(player->mo->momy - player->cmomy, newMagnitude), topspeed); + player->mo->momx = tempmomx + player->cmomx; + player->mo->momy = tempmomy + player->cmomy; } } #endif @@ -6060,6 +6051,7 @@ static void P_SkidStuff(player_t *player) particle->eflags |= player->mo->eflags & MFE_VERTICALFLIP; P_SetScale(particle, player->mo->scale >> 2); particle->destscale = player->mo->scale << 2; + particle->scalespeed = FixedMul(particle->scalespeed, player->mo->scale); // scale the scaling speed! P_SetObjectMomZ(particle, FRACUNIT, false); S_StartSound(player->mo, sfx_s3k7e); // the proper "Knuckles eats dirt" sfx. } @@ -6080,6 +6072,7 @@ static void P_SkidStuff(player_t *player) particle->eflags |= player->mo->eflags & MFE_VERTICALFLIP; P_SetScale(particle, player->mo->scale >> 2); particle->destscale = player->mo->scale << 2; + particle->scalespeed = FixedMul(particle->scalespeed, player->mo->scale); // scale the scaling speed! P_SetObjectMomZ(particle, FRACUNIT, false); } } @@ -6120,17 +6113,11 @@ static void P_MovePlayer(player_t *player) ticcmd_t *cmd; INT32 i; - camera_t *thiscam; fixed_t runspd; if (countdowntimeup) return; - if (splitscreen && player == &players[secondarydisplayplayer]) - thiscam = &camera2; - else - thiscam = &camera; - if (player->mo->state >= &states[S_PLAY_SUPERTRANS1] && player->mo->state <= &states[S_PLAY_SUPERTRANS9]) { player->mo->momx = player->mo->momy = player->mo->momz = 0; @@ -6256,7 +6243,7 @@ static void P_MovePlayer(player_t *player) P_2dMovement(player); else { - if (!player->climbing && (!P_AnalogMove(player) || player->pflags & PF_SPINNING)) + if (!player->climbing && (!P_AnalogMove(player))) player->mo->angle = (cmd->angleturn<<16 /* not FRACBITS */); ticruned++; @@ -6572,31 +6559,45 @@ static void P_MovePlayer(player_t *player) ////////////////// // This really looks like it should be moved to P_3dMovement. -Red - if (P_AnalogMove(player) && thiscam->chase + if (P_AnalogMove(player) && (cmd->forwardmove != 0 || cmd->sidemove != 0) && !player->climbing && !twodlevel && !(player->mo->flags2 & MF2_TWOD)) { // If travelling slow enough, face the way the controls // point and not your direction of movement. if (player->speed < FixedMul(5*FRACUNIT, player->mo->scale) || player->pflags & PF_GLIDING || !onground) { - fixed_t tempx = 0, tempy = 0; angle_t tempangle; - if (player->awayviewtics) - tempangle = player->awayviewmobj->angle; - else - tempangle = thiscam->angle; - tempangle >>= ANGLETOFINESHIFT; - tempx += FixedMul(cmd->forwardmove*FRACUNIT,FINECOSINE(tempangle)); - tempy += FixedMul(cmd->forwardmove*FRACUNIT,FINESINE(tempangle)); + tempangle = (cmd->angleturn << 16); - tempangle <<= ANGLETOFINESHIFT; - tempangle -= ANGLE_90; - tempangle >>= ANGLETOFINESHIFT; - tempx += FixedMul(cmd->sidemove*FRACUNIT,FINECOSINE(tempangle)); - tempy += FixedMul(cmd->sidemove*FRACUNIT,FINESINE(tempangle)); +#ifdef REDSANALOG // Ease to it. Chillax. ~Red + tempangle += R_PointToAngle2(0, 0, cmd->forwardmove*FRACUNIT, -cmd->sidemove*FRACUNIT); + { + fixed_t tweenvalue = max(abs(cmd->forwardmove), abs(cmd->sidemove)); - player->mo->angle = R_PointToAngle2(0, 0, tempx, tempy); + if (tweenvalue < 10 && (cmd->buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)) { + tempangle = (cmd->angleturn << 16); + tweenvalue = 16; + } + + tweenvalue *= tweenvalue*tweenvalue*1536; + + //if (player->pflags & PF_GLIDING) + //tweenvalue >>= 1; + + tempangle -= player->mo->angle; + + if (tempangle < ANGLE_180 && tempangle > tweenvalue) + player->mo->angle += tweenvalue; + else if (tempangle >= ANGLE_180 && InvAngle(tempangle) > tweenvalue) + player->mo->angle -= tweenvalue; + else + player->mo->angle += tempangle; + } +#else + // Less math this way ~Red + player->mo->angle = R_PointToAngle2(0, 0, cmd->forwardmove*FRACUNIT, -cmd->sidemove*FRACUNIT)+tempangle; +#endif } // Otherwise, face the direction you're travelling. else if (player->panim == PA_WALK || player->panim == PA_RUN || player->panim == PA_ROLL @@ -7559,19 +7560,20 @@ static void CV_CamRotate2_OnChange(void) CV_SetValue(&cv_cam2_rotate, cv_cam2_rotate.value % 360); } +static CV_PossibleValue_t CV_CamSpeed[] = {{0, "MIN"}, {1*FRACUNIT, "MAX"}, {0, NULL}}; static CV_PossibleValue_t rotation_cons_t[] = {{1, "MIN"}, {45, "MAX"}, {0, NULL}}; static CV_PossibleValue_t CV_CamRotate[] = {{-720, "MIN"}, {720, "MAX"}, {0, NULL}}; consvar_t cv_cam_dist = {"cam_dist", "128", CV_FLOAT, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam_height = {"cam_height", "20", CV_FLOAT, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam_still = {"cam_still", "Off", 0, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_cam_speed = {"cam_speed", "0.25", CV_FLOAT, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_cam_speed = {"cam_speed", "0.25", CV_FLOAT, CV_CamSpeed, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam_rotate = {"cam_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam_rotspeed = {"cam_rotspeed", "10", 0, rotation_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam2_dist = {"cam2_dist", "128", CV_FLOAT, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam2_height = {"cam2_height", "20", CV_FLOAT, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam2_still = {"cam2_still", "Off", 0, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_cam2_speed = {"cam2_speed", "0.25", CV_FLOAT, NULL, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_cam2_speed = {"cam2_speed", "0.25", CV_FLOAT, CV_CamSpeed, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam2_rotate = {"cam2_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate2_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_cam2_rotspeed = {"cam2_rotspeed", "10", 0, rotation_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; @@ -7724,6 +7726,15 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall camheight = FixedMul(cv_cam2_height.value, mo->scale); } +#ifdef REDSANALOG + if (P_AnalogMove(player) && (player->cmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)) { + camstill = true; + + if (camspeed < 4*FRACUNIT/5) + camspeed = 4*FRACUNIT/5; + } +#endif // REDSANALOG + if (mo->eflags & MFE_VERTICALFLIP) camheight += thiscam->height; @@ -7772,6 +7783,9 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall if (!objectplacing && !(twodlevel || (mo->flags2 & MF2_TWOD)) && !(player->pflags & PF_NIGHTSMODE)) { +#ifdef REDSANALOG + if ((player->cmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)); else +#endif if (player->cmd.buttons & BT_CAMLEFT) { if (thiscam == &camera) @@ -8569,6 +8583,9 @@ void P_PlayerThink(player_t *player) // check water content, set stuff in mobj P_MobjCheckWater(player->mo); +#ifdef POLYOBJECTS + if (player->onconveyor != 1 || !P_IsObjectOnGround(player->mo)) +#endif player->onconveyor = 0; // check special sectors : damage & secrets @@ -8707,6 +8724,11 @@ void P_PlayerThink(player_t *player) if (!player->mo) return; // P_MovePlayer removed player->mo. +#ifdef POLYOBJECTS + if (player->onconveyor == 1) + player->cmomy = player->cmomx = 0; +#endif + P_DoSuperStuff(player); P_CheckSneakerAndLivesTimer(player); P_DoBubbleBreath(player); // Spawn Sonic's bubbles diff --git a/src/r_bsp.c b/src/r_bsp.c index 5a90f1fc..e5e0942e 100644 --- a/src/r_bsp.c +++ b/src/r_bsp.c @@ -192,6 +192,14 @@ void R_ClearClipSegs(void) solidsegs[1].last = 0x7fffffff; newend = solidsegs + 2; } +void R_PortalClearClipSegs(INT32 start, INT32 end) +{ + solidsegs[0].first = -0x7fffffff; + solidsegs[0].last = start-1; + solidsegs[1].first = end; + solidsegs[1].last = 0x7fffffff; + newend = solidsegs + 2; +} // R_DoorClosed @@ -423,9 +431,9 @@ static void R_AddLine(seg_t *line) backsector = line->backsector; // Portal line - if (line->linedef->special == 40) + if (line->linedef->special == 40 && P_PointOnLineSide(viewx, viewy, line->linedef) == 0) { - if (portalrender < PORTAL_LIMIT) + if (portalrender < cv_maxportals.value) { // Find the other side! INT32 line2 = P_FindSpecialLineFromTag(40, line->linedef->tag, -1); @@ -433,8 +441,9 @@ static void R_AddLine(seg_t *line) line2 = P_FindSpecialLineFromTag(40, line->linedef->tag, line2); if (line2 >= 0) // found it! { - R_AddPortal(line->linedef-lines, line2); // Remember the lines for later rendering - return; // Don't fill in that space now! + R_AddPortal(line->linedef-lines, line2, x1, x2); // Remember the lines for later rendering + //return; // Don't fill in that space now! + goto clipsolid; } } // Recursed TOO FAR (viewing a portal within a portal) @@ -683,6 +692,33 @@ void R_SortPolyObjects(subsector_t *sub) } } +// +// R_PolysegCompare +// +// Callback for qsort to sort the segs of a polyobject. Returns such that the +// closer one is sorted first. I sure hope this doesn't break anything. -Red +// +static int R_PolysegCompare(const void *p1, const void *p2) +{ + const seg_t *seg1 = *(const seg_t * const *)p1; + const seg_t *seg2 = *(const seg_t * const *)p2; + fixed_t dist1, dist2; + + // TODO might be a better way to get distance? +#define vxdist(v) FixedMul(R_PointToDist(v->x, v->y), FINECOSINE((R_PointToAngle(v->x, v->y)-viewangle)>>ANGLETOFINESHIFT))+0xFFFFFFF + + dist1 = min(vxdist(seg1->v1), vxdist(seg1->v2)); + dist2 = min(vxdist(seg2->v1), vxdist(seg2->v2)); + + if (dist1 == dist2) { // Segs connect toward the front, so use the back verts to determine order! + dist1 = max(vxdist(seg1->v1), vxdist(seg1->v2)); + dist2 = max(vxdist(seg2->v1), vxdist(seg2->v2)); + } +#undef vxdist + + return dist1-dist2; +} + // // R_AddPolyObjects // @@ -709,6 +745,7 @@ static void R_AddPolyObjects(subsector_t *sub) // render polyobjects for (i = 0; i < numpolys; ++i) { + qsort(po_ptrs[i]->segs, po_ptrs[i]->segCount, sizeof(seg_t *), R_PolysegCompare); for (j = 0; j < po_ptrs[i]->segCount; ++j) R_AddLine(po_ptrs[i]->segs[j]); } @@ -809,43 +846,10 @@ static void R_Subsector(size_t num) if (frontsector->cullheight) { - if (frontsector->cullheight->flags & ML_NOCLIMB) // Group culling + if (R_DoCulling(frontsector->cullheight, viewsector->cullheight, viewz, *rover->bottomheight, *rover->topheight)) { - // Make sure this is part of the same group - if (viewsector->cullheight && viewsector->cullheight->frontsector - == frontsector->cullheight->frontsector) - { - // OK, we can cull - if (viewz > frontsector->cullheight->frontsector->floorheight - && *rover->topheight < frontsector->cullheight->frontsector->floorheight) // Cull if below plane - { - rover->norender = leveltime; - continue; - } - - if (*rover->bottomheight > frontsector->cullheight->frontsector->floorheight - && viewz <= frontsector->cullheight->frontsector->floorheight) // Cull if above plane - { - rover->norender = leveltime; - continue; - } - } - } - else // Quick culling - { - if (viewz > frontsector->cullheight->frontsector->floorheight - && *rover->topheight < frontsector->cullheight->frontsector->floorheight) // Cull if below plane - { - rover->norender = leveltime; - continue; - } - - if (*rover->bottomheight > frontsector->cullheight->frontsector->floorheight - && viewz <= frontsector->cullheight->frontsector->floorheight) // Cull if above plane - { - rover->norender = leveltime; - continue; - } + rover->norender = leveltime; + continue; } } @@ -909,15 +913,28 @@ static void R_Subsector(size_t num) && polysec->floorheight >= frontsector->floorheight && (viewz < polysec->floorheight)) { + fixed_t xoff, yoff; + xoff = polysec->floor_xoffs; + yoff = polysec->floor_yoffs; + + if (po->angle != 0) { + angle_t fineshift = po->angle >> ANGLETOFINESHIFT; + + xoff -= FixedMul(FINECOSINE(fineshift), po->centerPt.x)+FixedMul(FINESINE(fineshift), po->centerPt.y); + yoff -= FixedMul(FINESINE(fineshift), po->centerPt.x)-FixedMul(FINECOSINE(fineshift), po->centerPt.y); + } else { + xoff -= po->centerPt.x; + yoff += po->centerPt.y; + } + light = R_GetPlaneLight(frontsector, polysec->floorheight, viewz < polysec->floorheight); light = 0; ffloor[numffloors].plane = R_FindPlane(polysec->floorheight, polysec->floorpic, - polysec->lightlevel, polysec->floor_xoffs, - polysec->floor_yoffs, - polysec->floorpic_angle, + polysec->lightlevel, xoff, yoff, + polysec->floorpic_angle-po->angle, NULL, NULL); - ffloor[numffloors].plane->polyobj = true; + ffloor[numffloors].plane->polyobj = po; ffloor[numffloors].height = polysec->floorheight; ffloor[numffloors].polyobj = po; @@ -934,12 +951,27 @@ static void R_Subsector(size_t num) && polysec->ceilingheight <= frontsector->ceilingheight && (viewz > polysec->ceilingheight)) { + fixed_t xoff, yoff; + xoff = polysec->ceiling_xoffs; + yoff = polysec->ceiling_yoffs; + + if (po->angle != 0) { + angle_t fineshift = po->angle >> ANGLETOFINESHIFT; + + xoff -= FixedMul(FINECOSINE(fineshift), po->centerPt.x)+FixedMul(FINESINE(fineshift), po->centerPt.y); + yoff -= FixedMul(FINESINE(fineshift), po->centerPt.x)-FixedMul(FINECOSINE(fineshift), po->centerPt.y); + } else { + xoff -= po->centerPt.x; + yoff += po->centerPt.y; + } + light = R_GetPlaneLight(frontsector, polysec->ceilingheight, viewz < polysec->ceilingheight); light = 0; ffloor[numffloors].plane = R_FindPlane(polysec->ceilingheight, polysec->ceilingpic, - polysec->lightlevel, polysec->ceiling_xoffs, polysec->ceiling_yoffs, polysec->ceilingpic_angle, + polysec->lightlevel, xoff, yoff, polysec->ceilingpic_angle-po->angle, NULL, NULL); - ffloor[numffloors].plane->polyobj = true; + ffloor[numffloors].plane->polyobj = po; + ffloor[numffloors].polyobj = po; ffloor[numffloors].height = polysec->ceilingheight; // ffloor[numffloors].ffloor = rover; @@ -1147,5 +1179,14 @@ void R_RenderBSPNode(INT32 bspnum) bspnum = bsp->children[side^1]; } + + // PORTAL CULLING + if (portalcullsector) { + sector_t *sect = subsectors[bspnum & ~NF_SUBSECTOR].sector; + if (sect != portalcullsector) + return; + portalcullsector = NULL; + } + R_Subsector(bspnum == -1 ? 0 : bspnum & ~NF_SUBSECTOR); } diff --git a/src/r_bsp.h b/src/r_bsp.h index a765b656..20a80d89 100644 --- a/src/r_bsp.h +++ b/src/r_bsp.h @@ -37,9 +37,10 @@ typedef void (*drawfunc_t)(INT32 start, INT32 stop); // BSP? void R_ClearClipSegs(void); +void R_PortalClearClipSegs(INT32 start, INT32 end); void R_ClearDrawSegs(void); void R_RenderBSPNode(INT32 bspnum); -void R_AddPortal(INT32 line1, INT32 line2); +void R_AddPortal(INT32 line1, INT32 line2, INT32 x1, INT32 x2); #ifdef POLYOBJECTS void R_SortPolyObjects(subsector_t *sub); diff --git a/src/r_defs.h b/src/r_defs.h index 5a5eaf97..7f8bd7e1 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -167,6 +167,10 @@ typedef struct ffloor_s INT32 lastlight; INT32 alpha; tic_t norender; // for culling + + // these are saved for netgames, so do not let Lua touch these! + ffloortype_e spawnflags; // flags the 3D floor spawned with + INT32 spawnalpha; // alpha the 3D floor spawned with } ffloor_t; @@ -332,6 +336,16 @@ typedef struct sector_s // list of precipitation mobjs in sector precipmobj_t *preciplist; struct mprecipsecnode_s *touching_preciplist; + + // these are saved for netgames, so do not let Lua touch these! + + // offsets sector spawned with (via linedef type 7) + fixed_t spawn_flr_xoffs, spawn_flr_yoffs; + fixed_t spawn_ceil_xoffs, spawn_ceil_yoffs; + + // flag angles sector spawned with (via linedef type 7) + angle_t spawn_flrpic_angle; + angle_t spawn_ceilpic_angle; } sector_t; // @@ -381,6 +395,7 @@ typedef struct line_s #endif char *text; // a concatination of all front and back texture names, for linedef specials that require a string. + INT16 callcount; // no. of calls left before triggering, for the "X calls" linedef specials, defaults to 0 } line_t; // diff --git a/src/r_main.c b/src/r_main.c index 231dfe29..f2c641f6 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -73,14 +73,29 @@ player_t *viewplayer; // PORTALS! // You can thank and/or curse JTE for these. UINT8 portalrender; +sector_t *portalcullsector; typedef struct portal_pair { INT32 line1; INT32 line2; UINT8 pass; struct portal_pair *next; + + fixed_t viewx; + fixed_t viewy; + fixed_t viewz; + angle_t viewangle; + + INT32 start; + INT32 end; + INT16 *ceilingclip; + INT16 *floorclip; + fixed_t *frontscale; + size_t seg; } portal_pair; portal_pair *portal_base, *portal_cap; +line_t *portalclipline; +INT32 portalclipstart, portalclipend; // // precalculated math tables @@ -123,17 +138,21 @@ static CV_PossibleValue_t drawdist_cons_t[] = { {8192, "8192"}, {0, "Infinite"}, {0, NULL}}; static CV_PossibleValue_t precipdensity_cons_t[] = {{0, "None"}, {1, "Light"}, {2, "Moderate"}, {4, "Heavy"}, {6, "Thick"}, {8, "V.Thick"}, {0, NULL}}; static CV_PossibleValue_t translucenthud_cons_t[] = {{0, "MIN"}, {10, "MAX"}, {0, NULL}}; +static CV_PossibleValue_t maxportals_cons_t[] = {{0, "MIN"}, {12, "MAX"}, {0, NULL}}; // lmao rendering 32 portals, you're a card static CV_PossibleValue_t homremoval_cons_t[] = {{0, "No"}, {1, "Yes"}, {2, "Flash"}, {0, NULL}}; static void ChaseCam_OnChange(void); static void ChaseCam2_OnChange(void); +static void FlipCam_OnChange(void); +static void FlipCam2_OnChange(void); void SendWeaponPref(void); +void SendWeaponPref2(void); consvar_t cv_tailspickup = {"tailspickup", "On", CV_NETVAR, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_chasecam = {"chasecam", "On", CV_CALL, CV_OnOff, ChaseCam_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_chasecam2 = {"chasecam2", "On", CV_CALL, CV_OnOff, ChaseCam2_OnChange, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_flipcam = {"flipcam", "No", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, SendWeaponPref, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_flipcam2 = {"flipcam2", "No", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, SendWeaponPref, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_flipcam = {"flipcam", "No", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, FlipCam_OnChange, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_flipcam2 = {"flipcam2", "No", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, FlipCam2_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_shadow = {"shadow", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_shadowoffs = {"offsetshadows", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; @@ -151,6 +170,8 @@ consvar_t cv_precipdensity = {"precipdensity", "Moderate", CV_SAVE, precipdensit // Okay, whoever said homremoval causes a performance hit should be shot. consvar_t cv_homremoval = {"homremoval", "No", CV_SAVE, homremoval_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_maxportals = {"maxportals", "2", CV_SAVE, maxportals_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; + void SplitScreen_OnChange(void) { if (!cv_debug && netgame) @@ -207,6 +228,26 @@ static void ChaseCam2_OnChange(void) CV_SetValue(&cv_analog2, 1); } +static void FlipCam_OnChange(void) +{ + if (cv_flipcam.value) + players[consoleplayer].pflags |= PF_FLIPCAM; + else + players[consoleplayer].pflags &= ~PF_FLIPCAM; + + SendWeaponPref(); +} + +static void FlipCam2_OnChange(void) +{ + if (cv_flipcam2.value) + players[secondarydisplayplayer].pflags |= PF_FLIPCAM; + else + players[secondarydisplayplayer].pflags &= ~PF_FLIPCAM; + + SendWeaponPref2(); +} + // // R_PointOnSide // Traverse BSP (sub) tree, @@ -425,6 +466,47 @@ fixed_t R_ScaleFromGlobalAngle(angle_t visangle) return 64*FRACUNIT; } +// +// R_DoCulling +// Checks viewz and top/bottom heights of an item against culling planes +// Returns true if the item is to be culled, i.e it shouldn't be drawn! +// if ML_NOCLIMB is set, the camera view is required to be in the same area for culling to occur +boolean R_DoCulling(line_t *cullheight, line_t *viewcullheight, fixed_t vz, fixed_t bottomh, fixed_t toph) +{ + fixed_t cullplane; + + if (!cullheight) + return false; + + cullplane = cullheight->frontsector->floorheight; + if (cullheight->flags & ML_NOCLIMB) // Group culling + { + if (!viewcullheight) + return false; + + // Make sure this is part of the same group + if (viewcullheight->frontsector == cullheight->frontsector) + { + // OK, we can cull + if (vz > cullplane && toph < cullplane) // Cull if below plane + return true; + + if (bottomh > cullplane && vz <= cullplane) // Cull if above plane + return true; + } + } + else // Quick culling + { + if (vz > cullplane && toph < cullplane) // Cull if below plane + return true; + + if (bottomh > cullplane && vz <= cullplane) // Cull if above plane + return true; + } + + return false; +} + // // R_InitTextureMapping // @@ -1070,7 +1152,9 @@ void R_SetupFrame(player_t *player, boolean skybox) centeryfrac = centery<dx,dest->dy) - R_PointToAngle2(start->dx,start->dy,0,0); #endif - R_SetupFrame(player, false); + //R_SetupFrame(player, false); + viewx = portal->viewx; + viewy = portal->viewy; + viewz = portal->viewz; + + viewangle = portal->viewangle; + viewsin = FINESINE(viewangle>>ANGLETOFINESHIFT); + viewcos = FINECOSINE(viewangle>>ANGLETOFINESHIFT); + + portalcullsector = dest->frontsector; + viewsector = dest->frontsector; + portalclipline = dest; + portalclipstart = portal->start; + portalclipend = portal->end; // Offset the portal view by the linedef centers @@ -1090,6 +1187,9 @@ static void R_PortalFrame(player_t *player, line_t *start, line_t *dest) dest_c.x = (dest->v1->x + dest->v2->x) / 2; dest_c.y = (dest->v1->y + dest->v2->y) / 2; + // Heights! + viewz += dest->frontsector->floorheight - start->frontsector->floorheight; + // calculate the difference in position and rotation! #ifdef ANGLED_PORTALS if (dangle == 0) @@ -1104,22 +1204,51 @@ static void R_PortalFrame(player_t *player, line_t *start, line_t *dest) viewangle += dangle; viewsin = FINESINE(viewangle>>ANGLETOFINESHIFT); viewcos = FINECOSINE(viewangle>>ANGLETOFINESHIFT); - CONS_Printf("dangle == %u\n", AngleFixed(dangle)>>FRACBITS); + //CONS_Printf("dangle == %u\n", AngleFixed(dangle)>>FRACBITS); // ???? - viewx = dest_c.x - viewx; - viewy = dest_c.y - viewy; + { + fixed_t disttopoint; + angle_t angtopoint; + + disttopoint = R_PointToDist2(start_c.x, start_c.y, viewx, viewy); + angtopoint = R_PointToAngle2(start_c.x, start_c.y, viewx, viewy); + angtopoint += dangle; + + viewx = dest_c.x+FixedMul(FINECOSINE(angtopoint>>ANGLETOFINESHIFT), disttopoint); + viewy = dest_c.y+FixedMul(FINESINE(angtopoint>>ANGLETOFINESHIFT), disttopoint); + } #endif } -void R_AddPortal(INT32 line1, INT32 line2) +void R_AddPortal(INT32 line1, INT32 line2, INT32 x1, INT32 x2) { portal_pair *portal = Z_Malloc(sizeof(portal_pair), PU_LEVEL, NULL); + INT16 *ceilingclipsave = Z_Malloc(sizeof(INT16)*(x2-x1), PU_LEVEL, NULL); + INT16 *floorclipsave = Z_Malloc(sizeof(INT16)*(x2-x1), PU_LEVEL, NULL); + fixed_t *frontscalesave = Z_Malloc(sizeof(fixed_t)*(x2-x1), PU_LEVEL, NULL); + portal->line1 = line1; portal->line2 = line2; portal->pass = portalrender+1; portal->next = NULL; + R_PortalStoreClipValues(x1, x2, ceilingclipsave, floorclipsave, frontscalesave); + + portal->ceilingclip = ceilingclipsave; + portal->floorclip = floorclipsave; + portal->frontscale = frontscalesave; + + portal->start = x1; + portal->end = x2; + + portal->seg = ds_p-drawsegs; + + portal->viewx = viewx; + portal->viewy = viewy; + portal->viewz = viewz; + portal->viewangle = viewangle; + if (!portal_base) { portal_base = portal; @@ -1203,6 +1332,7 @@ void R_RenderPlayerView(player_t *player) ProfZeroTimer(); #endif R_RenderBSPNode((INT32)numnodes - 1); + R_ClipSprites(); #ifdef TIMING RDMSR(0x10, &mycount); mytotal += mycount; // 64bit add @@ -1211,6 +1341,41 @@ void R_RenderPlayerView(player_t *player) #endif //profile stuff --------------------------------------------------------- + // PORTAL RENDERING + for(portal = portal_base; portal; portal = portal_base) + { + // render the portal + CONS_Debug(DBG_RENDER, "Rendering portal from line %d to %d\n", portal->line1, portal->line2); + portalrender = portal->pass; + + R_PortalFrame(&lines[portal->line1], &lines[portal->line2], portal); + + R_PortalClearClipSegs(portal->start, portal->end); + + R_PortalRestoreClipValues(portal->start, portal->end, portal->ceilingclip, portal->floorclip, portal->frontscale); + + validcount++; + + if (portal->seg) + { + // Push the portal's old drawseg out of the way so it isn't interfering with sprite clipping. -Red + drawseg_t *seg = drawsegs+portal->seg; + seg->scale1 = 0; + seg->scale2 = 0; + } + + R_RenderBSPNode((INT32)numnodes - 1); + R_ClipSprites(); + //R_DrawPlanes(); + //R_DrawMasked(); + + // okay done. free it. + portalcullsector = NULL; // Just in case... + portal_base = portal->next; + Z_Free(portal); + } + // END PORTAL RENDERING + R_DrawPlanes(); #ifdef FLOORSPLATS R_DrawVisibleFloorSplats(); @@ -1219,24 +1384,6 @@ void R_RenderPlayerView(player_t *player) // And now 3D floors/sides! R_DrawMasked(); - // PORTAL RENDERING - for(portal = portal_base; portal; portal = portal_base) - { - // render the portal - CONS_Debug(DBG_RENDER, "Rendering portal from line %d to %d\n", portal->line1, portal->line2); - portalrender = portal->pass; - R_PortalFrame(player, &lines[portal->line1], &lines[portal->line2]); - validcount++; - R_RenderBSPNode((INT32)numnodes - 1); - R_DrawPlanes(); - R_DrawMasked(); - - // okay done. free it. - portal_base = portal->next; - Z_Free(portal); - } - // END PORTAL RENDERING - // Check for new console commands. NetUpdate(); } @@ -1286,6 +1433,8 @@ void R_RegisterEngineStuff(void) CV_RegisterVar(&cv_showhud); CV_RegisterVar(&cv_translucenthud); + CV_RegisterVar(&cv_maxportals); + // Default viewheight is changeable, // initialized to standard viewheight CV_RegisterVar(&cv_viewheight); diff --git a/src/r_main.h b/src/r_main.h index a367960c..0d3f2def 100644 --- a/src/r_main.h +++ b/src/r_main.h @@ -77,6 +77,8 @@ fixed_t R_ScaleFromGlobalAngle(angle_t visangle); subsector_t *R_PointInSubsector(fixed_t x, fixed_t y); subsector_t *R_IsPointInSubsector(fixed_t x, fixed_t y); +boolean R_DoCulling(line_t *cullheight, line_t *viewcullheight, fixed_t vz, fixed_t bottomh, fixed_t toph); + // // REFRESH - the actual rendering functions. // diff --git a/src/r_plane.c b/src/r_plane.c index 7e1764fc..dcff25c1 100644 --- a/src/r_plane.c +++ b/src/r_plane.c @@ -106,6 +106,50 @@ void R_InitPlanes(void) // FIXME: unused } +// R_PortalStoreClipValues +// Saves clipping values for later. -Red +void R_PortalStoreClipValues(INT32 start, INT32 end, INT16 *ceil, INT16 *floor, fixed_t *scale) +{ + INT32 i; + for (i = 0; i < end-start; i++) + { + *ceil = ceilingclip[start+i]; + ceil++; + *floor = floorclip[start+i]; + floor++; + *scale = frontscale[start+i]; + scale++; + } +} + +// R_PortalRestoreClipValues +// Inverse of the above. Restores the old value! +void R_PortalRestoreClipValues(INT32 start, INT32 end, INT16 *ceil, INT16 *floor, fixed_t *scale) +{ + INT32 i; + for (i = 0; i < end-start; i++) + { + ceilingclip[start+i] = *ceil; + ceil++; + floorclip[start+i] = *floor; + floor++; + frontscale[start+i] = *scale; + scale++; + } + + // HACKS FOLLOW + for (i = 0; i < start; i++) + { + floorclip[i] = -1; + ceilingclip[i] = (INT16)viewheight; + } + for (i = end; i < vid.width; i++) + { + floorclip[i] = -1; + ceilingclip[i] = (INT16)viewheight; + } +} + //profile stuff --------------------------------------------------------- //#define TIMING @@ -409,6 +453,10 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel, for (check = visplanes[hash]; check; check = check->next) { +#ifdef POLYOBJECTS_PLANES + if (check->polyobj && pfloor) + continue; +#endif if (height == check->height && picnum == check->picnum && lightlevel == check->lightlevel && xoff == check->xoffs && yoff == check->yoffs @@ -434,6 +482,9 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel, check->viewz = viewz; check->viewangle = viewangle + plangle; check->plangle = plangle; +#ifdef POLYOBJECTS_PLANES + check->polyobj = NULL; +#endif memset(check->top, 0xff, sizeof (check->top)); memset(check->bottom, 0x00, sizeof (check->bottom)); @@ -590,6 +641,7 @@ void R_MakeSpans(INT32 x, INT32 t1, INT32 b1, INT32 t2, INT32 b2) void R_DrawPlanes(void) { visplane_t *pl; + angle_t skyviewangle = viewangle; // the flat angle itself can mess with viewangle, so do your own angle instead! INT32 x; INT32 angle; INT32 i; @@ -628,7 +680,7 @@ void R_DrawPlanes(void) if (dc_yl <= dc_yh) { - angle = (viewangle + xtoviewangle[x])>>ANGLETOSKYSHIFT; + angle = (skyviewangle + xtoviewangle[x])>>ANGLETOSKYSHIFT; dc_x = x; dc_source = R_GetColumn(skytexture, @@ -666,6 +718,42 @@ void R_DrawSinglePlane(visplane_t *pl) itswater = false; #endif spanfunc = basespanfunc; + +#ifdef POLYOBJECTS_PLANES + if (pl->polyobj && pl->polyobj->translucency != 0) { + spanfunc = R_DrawTranslucentSpan_8; + + // Hacked up support for alpha value in software mode Tails 09-24-2002 (sidenote: ported to polys 10-15-2014, there was no time travel involved -Red) + if (pl->polyobj->translucency >= 10) + return; // Don't even draw it + else if (pl->polyobj->translucency == 9) + ds_transmap = ((tr_trans90)<polyobj->translucency == 8) + ds_transmap = ((tr_trans80)<polyobj->translucency == 7) + ds_transmap = ((tr_trans70)<polyobj->translucency == 6) + ds_transmap = ((tr_trans60)<polyobj->translucency == 5) + ds_transmap = ((tr_trans50)<polyobj->translucency == 4) + ds_transmap = ((tr_trans40)<polyobj->translucency == 3) + ds_transmap = ((tr_trans30)<polyobj->translucency == 2) + ds_transmap = ((tr_trans20)<polyobj->translucency == 1) + ds_transmap = ((tr_trans10)<extra_colormap && pl->extra_colormap->fog) + light = (pl->lightlevel >> LIGHTSEGSHIFT); + else + light = LIGHTLEVELS-1; + + } else +#endif if (pl->ffloor) { // Don't draw planes that shouldn't be drawn. diff --git a/src/r_plane.h b/src/r_plane.h index 1f046588..f3a7f573 100644 --- a/src/r_plane.h +++ b/src/r_plane.h @@ -59,7 +59,7 @@ typedef struct visplane_s struct ffloor_s *ffloor; #ifdef POLYOBJECTS_PLANES - boolean polyobj; + polyobj_t *polyobj; #endif } visplane_t; @@ -83,6 +83,8 @@ extern fixed_t *yslope; extern fixed_t distscale[MAXVIDWIDTH]; void R_InitPlanes(void); +void R_PortalStoreClipValues(INT32 start, INT32 end, INT16 *ceil, INT16 *floor, fixed_t *scale); +void R_PortalRestoreClipValues(INT32 start, INT32 end, INT16 *ceil, INT16 *floor, fixed_t *scale); void R_ClearPlanes(void); void R_MapPlane(INT32 y, INT32 x1, INT32 x2); diff --git a/src/r_segs.c b/src/r_segs.c index 1070bff7..c73cfdf9 100644 --- a/src/r_segs.c +++ b/src/r_segs.c @@ -589,7 +589,8 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2) // draw the texture col = (column_t *)((UINT8 *)R_GetColumn(texnum, maskedtexturecol[dc_x]) - 3); -#ifdef POLYOBJECTS_PLANES +//#ifdef POLYOBJECTS_PLANES +#if 0 // Disabling this allows inside edges to render below the planes, for until the clipping is fixed to work right when POs are near the camera. -Red if (curline->dontrenderme && curline->polyseg && (curline->polyseg->flags & POF_RENDERPLANES)) { fixed_t my_topscreen; @@ -611,7 +612,7 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2) for (i = 0; i < numffloors; i++) { - if (!ffloor[i].polyobj) + if (!ffloor[i].polyobj || ffloor[i].polyobj != curline->polyseg) continue; if (ffloor[i].height < viewz) @@ -650,6 +651,15 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2) colfunc = wallcolfunc; } +// Loop through R_DrawMaskedColumn calls +static void R_DrawRepeatMaskedColumn(column_t *col) +{ + do { + R_DrawMaskedColumn(col); + sprtopscreen += dc_texheight*spryscale; + } while (sprtopscreen < sprbotscreen); +} + // // R_RenderThickSideRange // Renders all the thick sides in the given range. @@ -836,7 +846,7 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor) //faB: handle case where multipatch texture is drawn on a 2sided wall, multi-patch textures // are not stored per-column with post info anymore in Doom Legacy if (textures[texnum]->holes) - colfunc_2s = R_DrawMaskedColumn; //render the usual 2sided single-patch packed texture + colfunc_2s = R_DrawRepeatMaskedColumn; //render the usual 2sided single-patch packed texture else { colfunc_2s = R_Render2sidedMultiPatchColumn; //render multipatch with no holes (no post_t info) @@ -1120,8 +1130,16 @@ static void R_RenderSegLoop (void) for (i = 0; i < numffloors; i++) { #ifdef POLYOBJECTS_PLANES - if (curline->polyseg && !ffloor[i].polyobj) - continue; + //if (curline->polyseg && (!ffloor[i].polyobj || ffloor[i].polyobj != curline->polyseg)) + //continue; // Causes issues with FOF planes in The Wall -Red + + // FIXME hack to fix planes disappearing when a seg goes behind the camera. This NEEDS to be changed to be done properly. -Red + if (curline->polyseg) { + if (ffloor[i].plane->minx > rw_x) + ffloor[i].plane->minx = rw_x; + else if (ffloor[i].plane->maxx < rw_x) + ffloor[i].plane->maxx = rw_x; + } #endif if (ffloor[i].height < viewz) @@ -1135,6 +1153,13 @@ static void R_RenderSegLoop (void) if (bottom_w > bottom) bottom_w = bottom; +#ifdef POLYOBJECTS_PLANES + // Polyobject-specific hack to fix plane leaking -Red + if (curline->polyseg && ffloor[i].polyobj && ffloor[i].polyobj == curline->polyseg && top_w >= bottom_w) { + ffloor[i].plane->top[rw_x] = ffloor[i].plane->bottom[rw_x] = 0xFFFF; + } else +#endif + if (top_w <= bottom_w) { ffloor[i].plane->top[rw_x] = (INT16)top_w; @@ -1152,6 +1177,13 @@ static void R_RenderSegLoop (void) if (bottom_w > bottom) bottom_w = bottom; +#ifdef POLYOBJECTS_PLANES + // Polyobject-specific hack to fix plane leaking -Red + if (curline->polyseg && ffloor[i].polyobj && ffloor[i].polyobj == curline->polyseg && top_w >= bottom_w) { + ffloor[i].plane->top[rw_x] = ffloor[i].plane->bottom[rw_x] = 0xFFFF; + } else +#endif + if (top_w <= bottom_w) { ffloor[i].plane->top[rw_x] = (INT16)top_w; @@ -1327,9 +1359,9 @@ static void R_RenderSegLoop (void) for (i = 0; i < numffloors; i++) { -#ifdef POLYOBJECTS_PLANES - if (curline->polyseg && !ffloor[i].polyobj) - continue; +#if 0 //#ifdef POLYOBJECTS_PLANES + if (curline->polyseg && (!ffloor[i].polyobj || ffloor[i].polyobj != curline->polyseg)) + continue; // Causes issues with FOF planes in The Wall -Red #endif ffloor[i].f_frac += ffloor[i].f_step; @@ -1339,9 +1371,9 @@ static void R_RenderSegLoop (void) { INT32 y_w; -#ifdef POLYOBJECTS_PLANES - if (curline->polyseg && !ffloor[i].polyobj) - continue; +#if 0 //#ifdef POLYOBJECTS_PLANES + if (curline->polyseg && (!ffloor[i].polyobj || ffloor[i].polyobj != curline->polyseg)) + continue; // Causes issues with FOF planes in The Wall -Red #endif y_w = ffloor[i].b_frac >> HEIGHTBITS; @@ -1488,9 +1520,9 @@ void R_StoreWallRange(INT32 start, INT32 stop) { for (i = 0; i < numffloors; i++) { -#ifdef POLYOBJECTS_PLANES - if (ds_p->curline->polyseg && !ffloor[i].polyobj) - continue; +#if 0 //#ifdef POLYOBJECTS_PLANES + if (ds_p->curline->polyseg && (!ffloor[i].polyobj || ffloor[i].polyobj != ds_p->curline->polyseg)) + continue; // Causes issues with FOF planes in The Wall -Red #endif ffloor[i].f_pos = ffloor[i].height - viewz; } @@ -1989,8 +2021,10 @@ void R_StoreWallRange(INT32 start, INT32 stop) { for (i = 0; i < numffloors; i++) { -// if (curline->polyseg && !ffloor[i].polyobj) -// continue; +#if 0 //#ifdef POLYOBJECTS_PLANES + if (curline->polyseg && (!ffloor[i].polyobj || ffloor[i].polyobj != curline->polyseg)) + continue; // Causes issues with FOF planes in The Wall -Red +#endif ffloor[i].f_pos >>= 4; ffloor[i].f_step = FixedMul(-rw_scalestep, ffloor[i].f_pos); diff --git a/src/r_state.h b/src/r_state.h index aec0a648..dc1ed931 100644 --- a/src/r_state.h +++ b/src/r_state.h @@ -88,8 +88,12 @@ extern boolean viewsky, skyVisible; extern sector_t *viewsector; extern player_t *viewplayer; extern UINT8 portalrender; +extern sector_t *portalcullsector; +extern line_t *portalclipline; +extern INT32 portalclipstart, portalclipend; extern consvar_t cv_allowmlook; +extern consvar_t cv_maxportals; extern angle_t clipangle; extern angle_t doubleclipangle; diff --git a/src/r_things.c b/src/r_things.c index c0f33daf..6372ddb4 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -489,6 +489,7 @@ void R_DelSpriteDefs(UINT16 wadnum) // GAME FUNCTIONS // static UINT32 visspritecount; +static UINT32 clippedvissprites; static vissprite_t *visspritechunks[MAXVISSPRITES >> VISSPRITECHUNKBITS] = {NULL}; @@ -546,7 +547,7 @@ void R_InitSprites(void) // void R_ClearSprites(void) { - visspritecount = 0; + visspritecount = clippedvissprites = 0; } static inline void R_ResetVisSpriteChunks(void) @@ -608,8 +609,7 @@ void R_DrawMaskedColumn(column_t *column) topdelta += prevdelta; prevdelta = topdelta; topscreen = sprtopscreen + spryscale*topdelta; - bottomscreen = sprbotscreen == INT32_MAX ? topscreen + spryscale*column->length - : sprbotscreen + spryscale*column->length; + bottomscreen = topscreen + spryscale*column->length; dc_yl = (topscreen+FRACUNIT-1)>>FRACBITS; dc_yh = (bottomscreen-1)>>FRACBITS; @@ -1157,6 +1157,16 @@ static void R_ProjectSprite(mobj_t *thing) if (x2 < 0) return; + // PORTAL SPRITE CLIPPING + if (portalrender) + { + if (x2 < portalclipstart || x1 > portalclipend) + return; + + if (P_PointOnLineSide(thing->x, thing->y, portalclipline) != 0) + return; + } + //SoM: 3/17/2000: Disregard sprites that are out of view.. if (thing->eflags & MFE_VERTICALFLIP) { @@ -1174,29 +1184,8 @@ static void R_ProjectSprite(mobj_t *thing) if (thing->subsector->sector->cullheight) { - fixed_t cullplane = thing->subsector->sector->cullheight->frontsector->floorheight; - if (thing->subsector->sector->cullheight->flags & ML_NOCLIMB) // Group culling - { - // Make sure this is part of the same group - if (viewsector->cullheight && viewsector->cullheight->frontsector - == thing->subsector->sector->cullheight->frontsector) - { - // OK, we can cull - if (viewz > cullplane && gzt < cullplane) // Cull if below plane - return; - - if (gz > cullplane && viewz <= cullplane) // Cull if above plane - return; - } - } - else // Quick culling - { - if (viewz > cullplane && gzt < cullplane) // Cull if below plane - return; - - if (gz > cullplane && viewz <= cullplane) // Cull if above plane - return; - } + if (R_DoCulling(thing->subsector->sector->cullheight, viewsector->cullheight, viewz, gz, gzt)) + return; } if (thing->subsector->sector->numlights) @@ -1258,6 +1247,16 @@ static void R_ProjectSprite(mobj_t *thing) vis->x1 = x1 < 0 ? 0 : x1; vis->x2 = x2 >= viewwidth ? viewwidth-1 : x2; + + // PORTAL SEMI-CLIPPING + if (portalrender) + { + if (vis->x1 < portalclipstart) + vis->x1 = portalclipstart; + if (vis->x2 > portalclipend) + vis->x2 = portalclipend; + } + vis->xscale = xscale; //SoM: 4/17/2000 vis->sector = thing->subsector->sector; vis->szt = (INT16)((centeryfrac - FixedMul(vis->gzt - viewz, yscale))>>FRACBITS); @@ -1350,7 +1349,7 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing) fixed_t iscale; //SoM: 3/17/2000 - fixed_t gzt; + fixed_t gz ,gzt; // transform the origin point tr_x = thing->x - viewx; @@ -1417,33 +1416,24 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing) if (x2 < 0) return; + // PORTAL SPRITE CLIPPING + if (portalrender) + { + if (x2 < portalclipstart || x1 > portalclipend) + return; + + if (P_PointOnLineSide(thing->x, thing->y, portalclipline) != 0) + return; + } + //SoM: 3/17/2000: Disregard sprites that are out of view.. gzt = thing->z + spritecachedinfo[lump].topoffset; + gz = gzt - spritecachedinfo[lump].height; if (thing->subsector->sector->cullheight) { - if (thing->subsector->sector->cullheight->flags & ML_NOCLIMB) // Group culling - { - // Make sure this is part of the same group - if (viewsector->cullheight && viewsector->cullheight->frontsector - == thing->subsector->sector->cullheight->frontsector) - { - // OK, we can cull - if (viewz > thing->subsector->sector->cullheight->frontsector->floorheight - && gzt < thing->subsector->sector->cullheight->frontsector->floorheight) // Cull if below plane - return; - else if (gzt - spritecachedinfo[lump].height > thing->subsector->sector->cullheight->frontsector->floorheight) // Cull if above plane - return; - } - } - else // Quick culling - { - if (viewz > thing->subsector->sector->cullheight->frontsector->floorheight - && gzt < thing->subsector->sector->cullheight->frontsector->floorheight) // Cull if below plane - return; - else if (gzt - spritecachedinfo[lump].height > thing->subsector->sector->cullheight->frontsector->floorheight) // Cull if above plane - return; - } + if (R_DoCulling(thing->subsector->sector->cullheight, viewsector->cullheight, viewz, gz, gzt)) + return; } // quick check for possible overflows @@ -1454,13 +1444,12 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing) return; } - // store information in a vissprite vis = R_NewVisSprite(); vis->scale = yscale; //<gx = thing->x; vis->gy = thing->y; - vis->gz = gzt - spritecachedinfo[lump].height; + vis->gz = gz; vis->gzt = gzt; vis->thingheight = 4*FRACUNIT; vis->pz = thing->z; @@ -1469,6 +1458,16 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing) vis->x1 = x1 < 0 ? 0 : x1; vis->x2 = x2 >= viewwidth ? viewwidth-1 : x2; + + // PORTAL SEMI-CLIPPING + if (portalrender) + { + if (vis->x1 < portalclipstart) + vis->x1 = portalclipstart; + if (vis->x2 > portalclipend) + vis->x2 = portalclipend; + } + vis->xscale = xscale; //SoM: 4/17/2000 vis->sector = thing->subsector->sector; vis->szt = (INT16)((centeryfrac - FixedMul(vis->gzt - viewz, yscale))>>FRACBITS); @@ -1830,6 +1829,20 @@ static void R_CreateDrawNodes(void) } else if (r2->seg) { +#ifdef POLYOBJECTS_PLANES + if (r2->seg->curline->polyseg && rover->mobj && P_MobjInsidePolyobj(r2->seg->curline->polyseg, rover->mobj)) { + // Determine if we need to sort in front of the polyobj, based on the planes. This fixes the issue where + // polyobject planes render above the object standing on them. (A bit hacky... but it works.) -Red + mobj_t *mo = rover->mobj; + sector_t *po = r2->seg->curline->backsector; + + if (po->ceilingheight < viewz && mo->z+mo->height > po->ceilingheight) + continue; + + if (po->floorheight > viewz && mo->z < po->floorheight) + continue; + } +#endif if (rover->x1 > r2->seg->x2 || rover->x2 < r2->seg->x1) continue; @@ -1937,297 +1950,201 @@ void R_InitDrawNodes(void) // don't draw the part of sprites hidden under the console static void R_DrawSprite(vissprite_t *spr) { - drawseg_t *ds; - INT16 clipbot[MAXVIDWIDTH]; - INT16 cliptop[MAXVIDWIDTH]; - INT32 x; - INT32 r1; - INT32 r2; - fixed_t scale; - fixed_t lowscale; - INT32 silhouette; - - memset(clipbot,0x00,sizeof (clipbot)); - memset(cliptop,0x00,sizeof (cliptop)); - for (x = spr->x1; x <= spr->x2; x++) - clipbot[x] = cliptop[x] = -2; - - // Scan drawsegs from end to start for obscuring segs. - // The first drawseg that has a greater scale - // is the clip seg. - //SoM: 4/8/2000: - // Pointer check was originally nonportable - // and buggy, by going past LEFT end of array: - - // for (ds = ds_p-1; ds >= drawsegs; ds--) old buggy code - for (ds = ds_p; ds-- > drawsegs ;) - { - // determine if the drawseg obscures the sprite - if (ds->x1 > spr->x2 || - ds->x2 < spr->x1 || - (!ds->silhouette - && !ds->maskedtexturecol)) - { - // does not cover sprite - continue; - } - - r1 = ds->x1 < spr->x1 ? spr->x1 : ds->x1; - r2 = ds->x2 > spr->x2 ? spr->x2 : ds->x2; - - if (ds->scale1 > ds->scale2) - { - lowscale = ds->scale2; - scale = ds->scale1; - } - else - { - lowscale = ds->scale1; - scale = ds->scale2; - } - - if (scale < spr->scale || - (lowscale < spr->scale && - !R_PointOnSegSide (spr->gx, spr->gy, ds->curline))) - { - // masked mid texture? - /*if (ds->maskedtexturecol) - R_RenderMaskedSegRange (ds, r1, r2);*/ - // seg is behind sprite - continue; - } - - // clip this piece of the sprite - silhouette = ds->silhouette; - - if (spr->gz >= ds->bsilheight) - silhouette &= ~SIL_BOTTOM; - - if (spr->gzt <= ds->tsilheight) - silhouette &= ~SIL_TOP; - - if (silhouette == 1) - { - // bottom sil - for (x = r1; x <= r2; x++) - if (clipbot[x] == -2) - clipbot[x] = ds->sprbottomclip[x]; - } - else if (silhouette == 2) - { - // top sil - for (x = r1; x <= r2; x++) - if (cliptop[x] == -2) - cliptop[x] = ds->sprtopclip[x]; - } - else if (silhouette == 3) - { - // both - for (x = r1; x <= r2; x++) - { - if (clipbot[x] == -2) - clipbot[x] = ds->sprbottomclip[x]; - if (cliptop[x] == -2) - cliptop[x] = ds->sprtopclip[x]; - } - } - } - //SoM: 3/17/2000: Clip sprites in water. - if (spr->heightsec != -1) // only things in specially marked sectors - { - fixed_t mh, h; - INT32 phs = viewplayer->mo->subsector->sector->heightsec; - if ((mh = sectors[spr->heightsec].floorheight) > spr->gz && - (h = centeryfrac - FixedMul(mh -= viewz, spr->scale)) >= 0 && - (h >>= FRACBITS) < viewheight) - { - if (mh <= 0 || (phs != -1 && viewz > sectors[phs].floorheight)) - { // clip bottom - for (x = spr->x1; x <= spr->x2; x++) - if (clipbot[x] == -2 || h < clipbot[x]) - clipbot[x] = (INT16)h; - } - else // clip top - { - for (x = spr->x1; x <= spr->x2; x++) - if (cliptop[x] == -2 || h > cliptop[x]) - cliptop[x] = (INT16)h; - } - } - - if ((mh = sectors[spr->heightsec].ceilingheight) < spr->gzt && - (h = centeryfrac - FixedMul(mh-viewz, spr->scale)) >= 0 && - (h >>= FRACBITS) < viewheight) - { - if (phs != -1 && viewz >= sectors[phs].ceilingheight) - { // clip bottom - for (x = spr->x1; x <= spr->x2; x++) - if (clipbot[x] == -2 || h < clipbot[x]) - clipbot[x] = (INT16)h; - } - else // clip top - { - for (x = spr->x1; x <= spr->x2; x++) - if (cliptop[x] == -2 || h > cliptop[x]) - cliptop[x] = (INT16)h; - } - } - } - if (spr->cut & SC_TOP && spr->cut & SC_BOTTOM) - { - for (x = spr->x1; x <= spr->x2; x++) - { - if (cliptop[x] == -2 || spr->szt > cliptop[x]) - cliptop[x] = spr->szt; - - if (clipbot[x] == -2 || spr->sz < clipbot[x]) - clipbot[x] = spr->sz; - } - } - else if (spr->cut & SC_TOP) - { - for (x = spr->x1; x <= spr->x2; x++) - { - if (cliptop[x] == -2 || spr->szt > cliptop[x]) - cliptop[x] = spr->szt; - } - } - else if (spr->cut & SC_BOTTOM) - { - for (x = spr->x1; x <= spr->x2; x++) - { - if (clipbot[x] == -2 || spr->sz < clipbot[x]) - clipbot[x] = spr->sz; - } - } - - // all clipping has been performed, so draw the sprite - - // check for unclipped columns - for (x = spr->x1; x <= spr->x2; x++) - { - if (clipbot[x] == -2) - clipbot[x] = (INT16)viewheight; - - if (cliptop[x] == -2) - //Fab : 26-04-98: was -1, now clips against console bottom - cliptop[x] = (INT16)con_clipviewtop; - } - - mfloorclip = clipbot; - mceilingclip = cliptop; + mfloorclip = spr->clipbot; + mceilingclip = spr->cliptop; R_DrawVisSprite(spr); } // Special drawer for precipitation sprites Tails 08-18-2002 static void R_DrawPrecipitationSprite(vissprite_t *spr) { - drawseg_t *ds; - INT16 clipbot[MAXVIDWIDTH]; - INT16 cliptop[MAXVIDWIDTH]; - INT32 x; - INT32 r1; - INT32 r2; - fixed_t scale; - fixed_t lowscale; - INT32 silhouette; + mfloorclip = spr->clipbot; + mceilingclip = spr->cliptop; + R_DrawPrecipitationVisSprite(spr); +} - memset(clipbot,0x00,sizeof (clipbot)); - memset(cliptop,0x00,sizeof (cliptop)); - for (x = spr->x1; x <= spr->x2; x++) - clipbot[x] = cliptop[x] = -2; - - // Scan drawsegs from end to start for obscuring segs. - // The first drawseg that has a greater scale - // is the clip seg. - //SoM: 4/8/2000: - // Pointer check was originally nonportable - // and buggy, by going past LEFT end of array: - - // for (ds = ds_p-1; ds >= drawsegs; ds--) old buggy code - for (ds = ds_p; ds-- > drawsegs ;) +// R_ClipSprites +// Clips vissprites without drawing, so that portals can work. -Red +void R_ClipSprites(void) +{ + vissprite_t *spr; + for (;clippedvissprites < visspritecount; clippedvissprites++) { - // determine if the drawseg obscures the sprite - if (ds->x1 > spr->x2 || - ds->x2 < spr->x1 || - (!ds->silhouette && - !ds->maskedtexturecol)) - { - // does not cover sprite - continue; - } + drawseg_t *ds; + INT32 x; + INT32 r1; + INT32 r2; + fixed_t scale; + fixed_t lowscale; + INT32 silhouette; - r1 = ds->x1 < spr->x1 ? spr->x1 : ds->x1; - r2 = ds->x2 > spr->x2 ? spr->x2 : ds->x2; + spr = R_GetVisSprite(clippedvissprites); - if (ds->scale1 > ds->scale2) - { - lowscale = ds->scale2; - scale = ds->scale1; - } - else - { - lowscale = ds->scale1; - scale = ds->scale2; - } + for (x = spr->x1; x <= spr->x2; x++) + spr->clipbot[x] = spr->cliptop[x] = -2; - if (scale < spr->scale || - (lowscale < spr->scale && - !R_PointOnSegSide (spr->gx, spr->gy, ds->curline))) - { - // masked mid texture? - /*if (ds->maskedtexturecol) - R_RenderMaskedSegRange(ds, r1, r2);*/ - // seg is behind sprite - continue; - } + // Scan drawsegs from end to start for obscuring segs. + // The first drawseg that has a greater scale + // is the clip seg. + //SoM: 4/8/2000: + // Pointer check was originally nonportable + // and buggy, by going past LEFT end of array: - // clip this piece of the sprite - silhouette = ds->silhouette; - - if (silhouette == 1) + // for (ds = ds_p-1; ds >= drawsegs; ds--) old buggy code + for (ds = ds_p; ds-- > drawsegs ;) { - // bottom sil - for (x = r1; x <= r2; x++) - if (clipbot[x] == -2) - clipbot[x] = ds->sprbottomclip[x]; - } - else if (silhouette == 2) - { - // top sil - for (x = r1; x <= r2; x++) - if (cliptop[x] == -2) - cliptop[x] = ds->sprtopclip[x]; - } - else if (silhouette == 3) - { - // both - for (x = r1; x <= r2; x++) + // determine if the drawseg obscures the sprite + if (ds->x1 > spr->x2 || + ds->x2 < spr->x1 || + (!ds->silhouette + && !ds->maskedtexturecol)) { - if (clipbot[x] == -2) - clipbot[x] = ds->sprbottomclip[x]; - if (cliptop[x] == -2) - cliptop[x] = ds->sprtopclip[x]; + // does not cover sprite + continue; + } + + r1 = ds->x1 < spr->x1 ? spr->x1 : ds->x1; + r2 = ds->x2 > spr->x2 ? spr->x2 : ds->x2; + + if (ds->scale1 > ds->scale2) + { + lowscale = ds->scale2; + scale = ds->scale1; + } + else + { + lowscale = ds->scale1; + scale = ds->scale2; + } + + if (scale < spr->scale || + (lowscale < spr->scale && + !R_PointOnSegSide (spr->gx, spr->gy, ds->curline))) + { + // masked mid texture? + /*if (ds->maskedtexturecol) + R_RenderMaskedSegRange (ds, r1, r2);*/ + // seg is behind sprite + continue; + } + + // clip this piece of the sprite + silhouette = ds->silhouette; + + if (spr->gz >= ds->bsilheight) + silhouette &= ~SIL_BOTTOM; + + if (spr->gzt <= ds->tsilheight) + silhouette &= ~SIL_TOP; + + if (silhouette == 1) + { + // bottom sil + for (x = r1; x <= r2; x++) + if (spr->clipbot[x] == -2) + spr->clipbot[x] = ds->sprbottomclip[x]; + } + else if (silhouette == 2) + { + // top sil + for (x = r1; x <= r2; x++) + if (spr->cliptop[x] == -2) + spr->cliptop[x] = ds->sprtopclip[x]; + } + else if (silhouette == 3) + { + // both + for (x = r1; x <= r2; x++) + { + if (spr->clipbot[x] == -2) + spr->clipbot[x] = ds->sprbottomclip[x]; + if (spr->cliptop[x] == -2) + spr->cliptop[x] = ds->sprtopclip[x]; + } } } + //SoM: 3/17/2000: Clip sprites in water. + if (spr->heightsec != -1) // only things in specially marked sectors + { + fixed_t mh, h; + INT32 phs = viewplayer->mo->subsector->sector->heightsec; + if ((mh = sectors[spr->heightsec].floorheight) > spr->gz && + (h = centeryfrac - FixedMul(mh -= viewz, spr->scale)) >= 0 && + (h >>= FRACBITS) < viewheight) + { + if (mh <= 0 || (phs != -1 && viewz > sectors[phs].floorheight)) + { // clip bottom + for (x = spr->x1; x <= spr->x2; x++) + if (spr->clipbot[x] == -2 || h < spr->clipbot[x]) + spr->clipbot[x] = (INT16)h; + } + else // clip top + { + for (x = spr->x1; x <= spr->x2; x++) + if (spr->cliptop[x] == -2 || h > spr->cliptop[x]) + spr->cliptop[x] = (INT16)h; + } + } + + if ((mh = sectors[spr->heightsec].ceilingheight) < spr->gzt && + (h = centeryfrac - FixedMul(mh-viewz, spr->scale)) >= 0 && + (h >>= FRACBITS) < viewheight) + { + if (phs != -1 && viewz >= sectors[phs].ceilingheight) + { // clip bottom + for (x = spr->x1; x <= spr->x2; x++) + if (spr->clipbot[x] == -2 || h < spr->clipbot[x]) + spr->clipbot[x] = (INT16)h; + } + else // clip top + { + for (x = spr->x1; x <= spr->x2; x++) + if (spr->cliptop[x] == -2 || h > spr->cliptop[x]) + spr->cliptop[x] = (INT16)h; + } + } + } + if (spr->cut & SC_TOP && spr->cut & SC_BOTTOM) + { + for (x = spr->x1; x <= spr->x2; x++) + { + if (spr->cliptop[x] == -2 || spr->szt > spr->cliptop[x]) + spr->cliptop[x] = spr->szt; + + if (spr->clipbot[x] == -2 || spr->sz < spr->clipbot[x]) + spr->clipbot[x] = spr->sz; + } + } + else if (spr->cut & SC_TOP) + { + for (x = spr->x1; x <= spr->x2; x++) + { + if (spr->cliptop[x] == -2 || spr->szt > spr->cliptop[x]) + spr->cliptop[x] = spr->szt; + } + } + else if (spr->cut & SC_BOTTOM) + { + for (x = spr->x1; x <= spr->x2; x++) + { + if (spr->clipbot[x] == -2 || spr->sz < spr->clipbot[x]) + spr->clipbot[x] = spr->sz; + } + } + + // all clipping has been performed, so store the values - what, did you think we were drawing them NOW? + + // check for unclipped columns + for (x = spr->x1; x <= spr->x2; x++) + { + if (spr->clipbot[x] == -2) + spr->clipbot[x] = (INT16)viewheight; + + if (spr->cliptop[x] == -2) + //Fab : 26-04-98: was -1, now clips against console bottom + spr->cliptop[x] = (INT16)con_clipviewtop; + } } - - // all clipping has been performed, so draw the sprite - - // check for unclipped columns - for (x = spr->x1; x <= spr->x2; x++) - { - if (clipbot[x] == -2) - clipbot[x] = (INT16)viewheight; - - if (cliptop[x] == -2) - //Fab : 26-04-98: was -1, now clips against console bottom - cliptop[x] = (INT16)con_clipviewtop; - } - - mfloorclip = clipbot; - mceilingclip = cliptop; - R_DrawPrecipitationVisSprite(spr); } // diff --git a/src/r_things.h b/src/r_things.h index 226b8e47..5a7036c6 100644 --- a/src/r_things.h +++ b/src/r_things.h @@ -54,6 +54,7 @@ void R_DelSpriteDefs(UINT16 wadnum); void R_AddSprites(sector_t *sec, INT32 lightlevel); void R_InitSprites(void); void R_ClearSprites(void); +void R_ClipSprites(void); void R_DrawMasked(void); // ----------- @@ -156,6 +157,8 @@ typedef struct vissprite_s spritecut_e cut; + INT16 clipbot[MAXVIDWIDTH], cliptop[MAXVIDWIDTH]; + boolean precip; boolean vflip; // Flip vertically boolean isScaled; diff --git a/src/s_sound.c b/src/s_sound.c index b48b60a0..14a8cc42 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -192,10 +192,9 @@ static INT32 S_getChannel(const void *origin, sfxinfo_t *sfxinfo) S_StopChannel(cnum); break; } - else if (origin && channels[cnum].origin == origin && ((channels[cnum].sfxinfo == sfxinfo) - || (channels[cnum].sfxinfo->name != sfxinfo->name - && channels[cnum].sfxinfo->pitch == 1 && sfxinfo->pitch == 1 - && channels[cnum].sfxinfo->pitch == sfxinfo->pitch))) + else if (origin && channels[cnum].origin == origin + && channels[cnum].sfxinfo->name != sfxinfo->name + && channels[cnum].sfxinfo->pitch == SF_TOTALLYSINGLE && sfxinfo->pitch == SF_TOTALLYSINGLE) { S_StopChannel(cnum); break; diff --git a/src/sdl/i_cdmus.c b/src/sdl/i_cdmus.c index fc35eb9c..f3f70366 100644 --- a/src/sdl/i_cdmus.c +++ b/src/sdl/i_cdmus.c @@ -35,4 +35,3 @@ boolean I_SetVolumeCD(int volume) (void)volume; return false; } - diff --git a/src/sdl/i_video.c b/src/sdl/i_video.c index 336a57ea..a59db26c 100644 --- a/src/sdl/i_video.c +++ b/src/sdl/i_video.c @@ -835,7 +835,7 @@ static void Impl_HandleMouseMotionEvent(SDL_MouseMotionEvent evt) event.data2 = (evt.xrel) * (wwidth / realwidth); event.data3 = -evt.yrel * (wheight / realheight); } - + event.type = ev_mouse; if (SDL_GetMouseFocus() == window && SDL_GetKeyboardFocus() == window) @@ -1853,12 +1853,12 @@ void I_StartupGraphics(void) // Fury: we do window initialization after GL setup to allow // SDL_GL_LoadLibrary to work well on Windows - + // Create window //Impl_CreateWindow(USE_FULLSCREEN); //Impl_SetWindowName("SRB2"); VID_SetMode(VID_GetModeForSize(BASEVIDWIDTH, BASEVIDHEIGHT)); - + vid.buffer = NULL; // For software mode vid.width = BASEVIDWIDTH; // Default size for startup vid.height = BASEVIDHEIGHT; // BitsPerPixel is the SDL interface's diff --git a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj index c34690b3..a205d30c 100644 --- a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj +++ b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj @@ -1214,7 +1214,7 @@ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.11; + CURRENT_PROJECT_VERSION = 2.1.12; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", NORMALSRB2, @@ -1226,7 +1226,7 @@ C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.11; + CURRENT_PROJECT_VERSION = 2.1.12; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( diff --git a/src/sdl12/SRB2CE/cehelp.c b/src/sdl12/SRB2CE/cehelp.c index b9fafd04..7c5efdee 100644 --- a/src/sdl12/SRB2CE/cehelp.c +++ b/src/sdl12/SRB2CE/cehelp.c @@ -444,4 +444,3 @@ VOID WINAPI OutputDebugStringA( OutputDebugStringW(lpOutputStringW); } - diff --git a/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj b/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj index c34690b3..a205d30c 100644 --- a/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj +++ b/src/sdl12/macosx/Srb2mac.xcodeproj/project.pbxproj @@ -1214,7 +1214,7 @@ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.11; + CURRENT_PROJECT_VERSION = 2.1.12; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", NORMALSRB2, @@ -1226,7 +1226,7 @@ C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CURRENT_PROJECT_VERSION = 2.1.11; + CURRENT_PROJECT_VERSION = 2.1.12; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_PREPROCESSOR_DEFINITIONS = ( diff --git a/src/sounds.c b/src/sounds.c index c03d6cea..1ec86e7b 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1375,7 +1375,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"s3k61", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k62", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k63", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, - {"s3k64", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, + {"s3k64", false, 64, 2, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k65", false, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Blue Spheres {"s3k66", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, {"s3k67", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, diff --git a/src/st_stuff.c b/src/st_stuff.c index ae8c2f50..0d0cb1ae 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -461,6 +461,19 @@ static INT32 STRINGY(INT32 y) return y; } +static INT32 SPLITFLAGS(INT32 f) +{ + // Pass this V_SNAPTO(TOP|BOTTOM) and it'll trim them to account for splitscreen! -Red + if (splitscreen) + { + if (stplyr != &players[displayplayer]) + f &= ~V_SNAPTOTOP; + else + f &= ~V_SNAPTOBOTTOM; + } + return f; +} + static INT32 SCX(INT32 x) { return FixedInt(FixedMul(x<width); const UINT8 *colormap; - a &= V_ALPHAMASK; + // I want my V_SNAPTOx flags. :< -Red + //a &= V_ALPHAMASK; if (colornum == 0) colormap = colormaps; @@ -520,8 +534,8 @@ static void ST_DrawNightsOverlayNum(INT32 x /* right border */, INT32 y, INT32 a // draw the number do { - x -= (w * vid.dupx); - V_DrawTranslucentMappedPatch(x, y, V_NOSCALESTART|a, numpat[num % 10], colormap); + x -= w; + V_DrawTranslucentMappedPatch(x, y, a, numpat[num % 10], colormap); num /= 10; } while (num); @@ -924,7 +938,7 @@ static void ST_drawNightsRecords(void) V_DrawString(BASEVIDWIDTH/2 - 48, STRINGY(148), aflag, "BONUS:"); V_DrawRightAlignedString(BASEVIDWIDTH/2 + 48, STRINGY(140), V_ORANGEMAP|aflag, va("%d", stplyr->finishedrings)); V_DrawRightAlignedString(BASEVIDWIDTH/2 + 48, STRINGY(148), V_ORANGEMAP|aflag, va("%d", stplyr->finishedrings * 50)); - ST_DrawNightsOverlayNum(SCX(BASEVIDWIDTH/2 + 48), SCY(160), aflag, stplyr->lastmarescore, nightsnum, SKINCOLOR_STEELBLUE); + ST_DrawNightsOverlayNum(BASEVIDWIDTH/2 + 48, STRINGY(160), aflag, stplyr->lastmarescore, nightsnum, SKINCOLOR_STEELBLUE); // If new record, say so! if (!(netgame || multiplayer) && G_GetBestNightsScore(gamemap, stplyr->lastmare + 1) <= stplyr->lastmarescore) @@ -936,10 +950,10 @@ static void ST_drawNightsRecords(void) if (P_HasGrades(gamemap, stplyr->lastmare + 1)) { if (aflag) - V_DrawTranslucentPatch(SCX(BASEVIDWIDTH/2 + 60), SCY(160), V_NOSCALESTART|aflag, + V_DrawTranslucentPatch(BASEVIDWIDTH/2 + 60, STRINGY(160), aflag, ngradeletters[P_GetGrade(stplyr->lastmarescore, gamemap, stplyr->lastmare)]); else - V_DrawScaledPatch(SCX(BASEVIDWIDTH/2 + 60), SCY(160), V_NOSCALESTART, + V_DrawScaledPatch(BASEVIDWIDTH/2 + 60, STRINGY(160), 0, ngradeletters[P_GetGrade(stplyr->lastmarescore, gamemap, stplyr->lastmare)]); } } @@ -986,14 +1000,14 @@ static void ST_drawNiGHTSHUD(void) if (splitscreen) { - ST_DrawNightsOverlayNum(SCX(256), SCY(160), linktrans, (stplyr->linkcount-1), nightsnum, colornum); - V_DrawTranslucentMappedPatch(SCX(264), SCY(160), V_NOSCALESTART|linktrans, nightslink, + ST_DrawNightsOverlayNum(256, STRINGY(152), SPLITFLAGS(V_SNAPTOBOTTOM)|V_SNAPTORIGHT|linktrans, (stplyr->linkcount-1), nightsnum, colornum); + V_DrawTranslucentMappedPatch(264, STRINGY(152), SPLITFLAGS(V_SNAPTOBOTTOM)|V_SNAPTORIGHT|linktrans, nightslink, colornum == 0 ? colormaps : R_GetTranslationColormap(TC_DEFAULT, colornum, GTC_CACHE)); } else { - ST_DrawNightsOverlayNum(SCX(160), SCY(160), linktrans, (stplyr->linkcount-1), nightsnum, colornum); - V_DrawTranslucentMappedPatch(SCX(168), SCY(160), V_NOSCALESTART|linktrans, nightslink, + ST_DrawNightsOverlayNum(160, 160, V_SNAPTOBOTTOM|linktrans, (stplyr->linkcount-1), nightsnum, colornum); + V_DrawTranslucentMappedPatch(168, 160, V_SNAPTOBOTTOM|linktrans, nightslink, colornum == 0 ? colormaps : R_GetTranslationColormap(TC_DEFAULT, colornum, GTC_CACHE)); } } @@ -1004,28 +1018,28 @@ static void ST_drawNiGHTSHUD(void) { INT32 offs = 10 - (stplyr->linktimer - (2*TICRATE - 9)); INT32 ghosttrans = offs << V_ALPHASHIFT; - ST_DrawNightsOverlayNum(SCX(160), SCY(160)+(offs*2), ghosttrans, (stplyr->linkcount-2), + ST_DrawNightsOverlayNum(160, STRINGY(160+offs), SPLITFLAGS(V_SNAPTOBOTTOM)|ghosttrans, (stplyr->linkcount-2), nightsnum, colornum); } #endif if (splitscreen) { - ST_DrawNightsOverlayNum(SCX(256), SCY(160), 0, (stplyr->linkcount-1), nightsnum, colornum); - V_DrawMappedPatch(SCX(264), SCY(160), V_NOSCALESTART, nightslink, + ST_DrawNightsOverlayNum(256, STRINGY(152), SPLITFLAGS(V_SNAPTOBOTTOM)|V_SNAPTORIGHT, (stplyr->linkcount-1), nightsnum, colornum); + V_DrawMappedPatch(264, STRINGY(152), SPLITFLAGS(V_SNAPTOBOTTOM)|V_SNAPTORIGHT, nightslink, colornum == 0 ? colormaps : R_GetTranslationColormap(TC_DEFAULT, colornum, GTC_CACHE)); } else { - ST_DrawNightsOverlayNum(SCX(160), SCY(160), 0, (stplyr->linkcount-1), nightsnum, colornum); - V_DrawMappedPatch(SCX(168), SCY(160), V_NOSCALESTART, nightslink, + ST_DrawNightsOverlayNum(160, 160, V_SNAPTOBOTTOM, (stplyr->linkcount-1), nightsnum, colornum); + V_DrawMappedPatch(168, 160, V_SNAPTOBOTTOM, nightslink, colornum == 0 ? colormaps : R_GetTranslationColormap(TC_DEFAULT, colornum, GTC_CACHE)); } } // Show remaining link time left in debug if (cv_debug & DBG_NIGHTSBASIC) - V_DrawCenteredString(SCX(BASEVIDWIDTH/2), SCY(180), V_NOSCALESTART, va("End in %d.%02d", stplyr->linktimer/TICRATE, G_TicsToCentiseconds(stplyr->linktimer))); + V_DrawCenteredString(BASEVIDWIDTH/2, 180, V_SNAPTOBOTTOM, va("End in %d.%02d", stplyr->linktimer/TICRATE, G_TicsToCentiseconds(stplyr->linktimer))); } // Drill meter @@ -1039,7 +1053,7 @@ static void ST_drawNiGHTSHUD(void) INT32 dfill; UINT8 fillpatch; - if (splitscreen) + if (splitscreen || nosshack) { locx = 110; locy = 188; @@ -1057,25 +1071,25 @@ static void ST_drawNiGHTSHUD(void) fillpatch = 0; if (splitscreen) - { // Dirty hack because V_SNAPTOBOTTOM doesn't have a way to account for splitscreen, but better than overlapping bars. - V_DrawScaledPatch(SCX(locx), SCY(locy), V_NOSCALESTART|V_HUDTRANS, drillbar); + { // 11-5-14 Replaced the old hack with a slightly better hack. -Red + V_DrawScaledPatch(locx, STRINGY(locy)-3, SPLITFLAGS(V_SNAPTOBOTTOM)|V_HUDTRANS, drillbar); for (dfill = 0; dfill < stplyr->drillmeter/20 && dfill < 96; ++dfill) - V_DrawScaledPatch(SCX(locx + 2 + dfill), SCY(locy + 3), V_NOSCALESTART|V_HUDTRANS, drillfill[fillpatch]); + V_DrawScaledPatch(locx + 2 + dfill, STRINGY(locy + 3), SPLITFLAGS(V_SNAPTOBOTTOM)|V_HUDTRANS, drillfill[fillpatch]); } else if (nosshack) { // Even dirtier hack-of-a-hack to draw seperate drill meters in splitscreen special stages but nothing else. splitscreen = true; - V_DrawScaledPatch(SCX(locx), SCY(locy), V_NOSCALESTART|V_HUDTRANS, drillbar); + V_DrawScaledPatch(locx, STRINGY(locy)-3, V_HUDTRANS, drillbar); for (dfill = 0; dfill < stplyr->drillmeter/20 && dfill < 96; ++dfill) - V_DrawScaledPatch(SCX(locx + 2 + dfill), SCY(locy + 3), V_NOSCALESTART|V_HUDTRANS, drillfill[fillpatch]); + V_DrawScaledPatch(locx + 2 + dfill, STRINGY(locy + 3), V_HUDTRANS, drillfill[fillpatch]); stplyr = &players[secondarydisplayplayer]; if (stplyr->pflags & PF_DRILLING) fillpatch = (stplyr->drillmeter & 1) + 1; else fillpatch = 0; - V_DrawScaledPatch(locx, locy, V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANS, drillbar); + V_DrawScaledPatch(locx, STRINGY(locy-3), V_SNAPTOBOTTOM|V_HUDTRANS, drillbar); for (dfill = 0; dfill < stplyr->drillmeter/20 && dfill < 96; ++dfill) - V_DrawScaledPatch(locx + 2 + dfill, locy + 3, V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANS, drillfill[fillpatch]); + V_DrawScaledPatch(locx + 2 + dfill, STRINGY(locy + 3), V_SNAPTOBOTTOM|V_HUDTRANS, drillfill[fillpatch]); stplyr = &players[displayplayer]; splitscreen = false; } @@ -1206,7 +1220,7 @@ static void ST_drawNiGHTSHUD(void) #endif ) { - ST_DrawNightsOverlayNum(SCX(304), SCY(16), 0, stplyr->marescore, nightsnum, SKINCOLOR_STEELBLUE); + ST_DrawNightsOverlayNum(304, STRINGY(16), SPLITFLAGS(V_SNAPTOTOP)|V_SNAPTORIGHT, stplyr->marescore, nightsnum, SKINCOLOR_STEELBLUE); } if (!stplyr->exiting @@ -1219,19 +1233,22 @@ static void ST_drawNiGHTSHUD(void) if (modeattacking == ATTACKING_NIGHTS) { INT32 maretime = max(stplyr->realtime - stplyr->marebegunat, 0); + fixed_t cornerx = vid.width, cornery = vid.height-SCZ(20); - ST_DrawOverlayPatch(SCX(298), SCY(180), W_CachePatchName("NGRTIMER", PU_HUDGFX)); - ST_DrawPaddedOverlayNum(SCX(298), SCY(180), G_TicsToCentiseconds(maretime), 2); - ST_DrawOverlayPatch(SCX(274), SCY(180), sboperiod); +#define ASSISHHUDFIX(n) (n*vid.dupx) + ST_DrawOverlayPatch(cornerx-ASSISHHUDFIX(22), cornery, W_CachePatchName("NGRTIMER", PU_HUDGFX)); + ST_DrawPaddedOverlayNum(cornerx-ASSISHHUDFIX(22), cornery, G_TicsToCentiseconds(maretime), 2); + ST_DrawOverlayPatch(cornerx-ASSISHHUDFIX(46), cornery, sboperiod); if (maretime < 60*TICRATE) - ST_DrawOverlayNum(SCX(274), SCY(180), G_TicsToSeconds(maretime)); + ST_DrawOverlayNum(cornerx-ASSISHHUDFIX(46), cornery, G_TicsToSeconds(maretime)); else { - ST_DrawPaddedOverlayNum(SCX(274), SCY(180), G_TicsToSeconds(maretime), 2); - ST_DrawOverlayPatch(SCX(250), SCY(180), sbocolon); - ST_DrawOverlayNum(SCX(250), SCY(180), G_TicsToMinutes(maretime, true)); + ST_DrawPaddedOverlayNum(cornerx-ASSISHHUDFIX(46), cornery, G_TicsToSeconds(maretime), 2); + ST_DrawOverlayPatch(cornerx-ASSISHHUDFIX(70), cornery, sbocolon); + ST_DrawOverlayNum(cornerx-ASSISHHUDFIX(70), cornery, G_TicsToMinutes(maretime, true)); } } +#undef ASSISHHUDFIX } // Ideya time remaining @@ -1267,22 +1284,22 @@ static void ST_drawNiGHTSHUD(void) } if (realnightstime < 10) - numbersize = SCX(16)/2; + numbersize = 16/2; else if (realnightstime < 100) - numbersize = SCX(32)/2; + numbersize = 32/2; else - numbersize = SCX(48)/2; + numbersize = 48/2; if (realnightstime < 10) - ST_DrawNightsOverlayNum(SCX(160) + numbersize, SCY(12), 0, realnightstime, + ST_DrawNightsOverlayNum(160 + numbersize, STRINGY(12), SPLITFLAGS(V_SNAPTOTOP), realnightstime, nightsnum, SKINCOLOR_RED); else - ST_DrawNightsOverlayNum(SCX(160) + numbersize, SCY(12), 0, realnightstime, + ST_DrawNightsOverlayNum(160 + numbersize, STRINGY(12), SPLITFLAGS(V_SNAPTOTOP), realnightstime, nightsnum, SKINCOLOR_SUPER4); // Show exact time in debug if (cv_debug & DBG_NIGHTSBASIC) - V_DrawString(SCX(160) + numbersize + 8, SCY(24), V_NOSCALESTART|((realnightstime < 10) ? V_REDMAP : V_YELLOWMAP), va("%02d", G_TicsToCentiseconds(stplyr->nightstime))); + V_DrawString(160 + numbersize + 8, 24, V_SNAPTOTOP|((realnightstime < 10) ? V_REDMAP : V_YELLOWMAP), va("%02d", G_TicsToCentiseconds(stplyr->nightstime))); } // Show pickup durations diff --git a/src/v_video.c b/src/v_video.c index 926107ff..64bf825b 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -484,7 +484,7 @@ void V_DrawFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_t INT32 topdelta, prevdelta = -1; if (x < 0) // don't draw off the left of the screen (WRAP PREVENTION) continue; - if (x > vid.width) // don't draw off the right of the screen (WRAP PREVENTION) + if (x >= vid.width) // don't draw off the right of the screen (WRAP PREVENTION) break; column = (const column_t *)((const UINT8 *)(patch) + LONG(patch->columnofs[col>>FRACBITS])); @@ -596,7 +596,7 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_ INT32 topdelta, prevdelta = -1; if (x < 0) // don't draw off the left of the screen (WRAP PREVENTION) continue; - if (x > vid.width) // don't draw off the right of the screen (WRAP PREVENTION) + if (x >= vid.width) // don't draw off the right of the screen (WRAP PREVENTION) break; column = (const column_t *)((const UINT8 *)(patch) + LONG(patch->columnofs[col>>FRACBITS])); @@ -1609,7 +1609,7 @@ INT32 V_CreditStringWidth(const char *string) { c = toupper(string[i]) - CRED_FONTSTART; if (c < 0 || c >= CRED_FONTSIZE) - w += 8; + w += 16; else w += SHORT(cred_font[c]->width); } diff --git a/src/w_wad.c b/src/w_wad.c index b09236a2..adcbb481 100644 --- a/src/w_wad.c +++ b/src/w_wad.c @@ -418,6 +418,7 @@ UINT16 W_LoadWadFile(const char *filename) free(fileinfov); } +#ifndef NOMD5 // // w-waiiiit! // Let's not add a wad file if the MD5 matches @@ -433,6 +434,7 @@ UINT16 W_LoadWadFile(const char *filename) return INT16_MAX; } } +#endif // // link wad file to search files diff --git a/src/win32/Makefile.cfg b/src/win32/Makefile.cfg index b989923f..c369651b 100644 --- a/src/win32/Makefile.cfg +++ b/src/win32/Makefile.cfg @@ -53,9 +53,9 @@ endif # name of the exefile ifdef SDL - EXENAME?=srb2sdl2.exe -else EXENAME?=srb2win.exe +else + EXENAME?=srb2dd.exe endif ifdef SDL diff --git a/src/y_inter.c b/src/y_inter.c index 35ecf62a..498afa7c 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -770,11 +770,12 @@ void Y_Ticker(void) } // -// Y_UpdateReplays +// Y_UpdateRecordReplays // -// Update replay files/data, etc +// Update replay files/data, etc. for Record Attack +// See G_SetNightsRecords for NiGHTS Attack. // -static void Y_UpdateReplays(void) +static void Y_UpdateRecordReplays(void) { const size_t glen = strlen(srb2home)+1+strlen("replay")+1+strlen(timeattackfolder)+1+strlen("MAPXX")+1; char *gpath; @@ -962,7 +963,7 @@ void Y_StartIntermission(void) mapvisited[gamemap-1] |= MV_PERFECT; if (modeattacking == ATTACKING_RECORD) - Y_UpdateReplays(); + Y_UpdateRecordReplays(); } for (i = 0; i < 4; ++i)