From 4de7503bef2712180fe8c86a89a0a7c281a5fe96 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Thu, 5 Jan 2023 02:50:25 +0100 Subject: [PATCH] improved MM graphics engine to support custom explosions of elements --- graphics/gfx_classic/RocksMM.png | Bin 20263 -> 20446 bytes src/conf_gfx.c | 28 ++++++++---- src/engines.h | 1 + src/game_mm/mm_game.c | 73 ++++++------------------------- src/game_mm/mm_main.h | 3 ++ src/game_mm/mm_tools.c | 5 +++ src/game_mm/mm_tools.h | 1 + src/tools.c | 5 +++ 8 files changed, 49 insertions(+), 67 deletions(-) diff --git a/graphics/gfx_classic/RocksMM.png b/graphics/gfx_classic/RocksMM.png index b5066c690a137cc11e7c0384538c2f03a90d9920..c993e64ca6c4aab80384e313443023f967747e98 100644 GIT binary patch delta 19606 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 N002ovPDHLkV1j990Qo%snp7P7 zbIXC-CF{$Z;ZIFk@Ze24H=8{?9^w1?NB7~(fb&$>%Wi7q`8Hib6L45`Sp2u zAh{uCcfGy3zt=PaK@1&Y4Kdih^{BQ+7};{3=9a?KOHhE7^|?3tflv29(TVJ-;ie%m zK0(8(RhQKv~valmj1~Gdw!H&h~d$)r>-irS4Y$TF>1S}TfsG^65enPmf2hh zD2*LKCZiIe+*E%o8&%6}Z0BiU71ICJt~C{u?VGZWNucMLmx0qRJjmE6C^yXsknfZ3 zBZK?((N`Ju25z`FVn>>)OWjd2cP%G)`${-<8n28)P0V;+?B*X_-67P~K7mla}XZ5d>*=ld0Js~YL)qo06b^OHHp5```G+IS!$I1XGN^si+k>I>W$`FKCJz{ z9_STE`J=oGqChS!mNK)yxlR4swQ*ct-xD8@HJhl{0XZIvPXrzt%p#zEyRcVlx?qL^ zjkDB<+fm{Q+KR{3RYNW?{LCDIM6qLQA?XWL|M$FKm(MWgD_#dJLGG)3XFR$;ZDS3j zDnEG67Q@xuglG-ga`f$9d7Y7PH14?_7uPTrWiA&U{TW%*Dl-4@pxvp zvneDfRl{5)o&Uw&LrPXlR$^3#nqcBIZK;UPOp-sX0LYFt9Vj`FCLHFG*PY|(d!nEzn)AnOzzH&3$4=HGn7UQMUgSkxRT`}uxXP=;o z@Sd4K${D$65puu0xr;%My|7=8f;))HY9U1RP!YfWoa-N(4j=4Pcz`SjpESF{>VduH z{)u&folmRgp$GKR1i(wQ6Nf~&G8Gp>j-e@jy3i3dI58u`<$lZJE)V;pV4Ro-X8oTD z_z`G*Scao8TQL$S*JRiU56-~rVM4E<&mb}L8Y=!tfz@_ltMB(^9QLp_nFA;R?xPWJ zWUSX3xk_vCxVTERjAkY=g#opTqQ^jb)bHOnd-=@;$VBRbz;aX7Wk50ZF!&m14uv*3 z7-Y76%BI3kX~Q1P|F3uOB0CzKKUxa&^StC}?z;vMZZJ zB@YRxOTI8^Is+4$8WX&3-WEucfYeOa@@R^POmC>c??cP6cT|8auXI#7>`5YmI&}It zN0T~|3U?Yo#@-U0{Obgq069@9)`Kulv5I++#_pjFCK&m}9m=+XNHW$1dxkIwf(N7h@cxF1{yM0J&llY-wzO4M=2 zLwC6ktLgDA2+(iv%+OwsGxfrDtjG9wy@UMrqxu|~JFaB@xAU8}!J!ekVsX%gZ;jfj z3$@@YJTKOa!BDC{M9N_|Y+l$SgV9rs zh{T2fg#g1ZYu_3bA!Gi_{810SvHjogMq-DyCaFUo5uH6@jmit zo@ppP3`UEf16kO*QeF1*n-tbPXxUEoIea+V21{nRCvv!8;*@e`6xtt6Smyp0O<|q_ zEQZw}TXVXa!cRf=YbefqgUk+Lu=upDet7ccL!OZc8cdnUvzmX?xq5AYC!r5hjwtuH zPhP^URljQd+Wjw8itk^lJj7b5%V=jW?y*+|=+bH5-@9gX z->WaV_PWT``HqWdEG*iPHOQ2o0DMTJCD*chi(_KkWTL>B5?hDblDg~7O}jA_lhH;F zrwQ|$<9!^H8RG$#Mg6yiQcs1N_gIC!n$4~4N_q7>AEPvP$FgmJN2$K#&ifp**9joh z;A?1?!U6dH$~YxMUL-Ju;|e0CbCS!N*5be|zypk38QyuxFK7iHnBRUOMsej}7!UQg zf`*xCVW3iECV9~?0yMbb~|<*uOd3Wrj1=3OD>-00YmOu%c_ZY?~PIb^jZ zy$%s06;+{lr^x*HoHMEm$MwH@yddo-7*&|tK|KOLC;PZ;sx36h&J}IYxi}vY-+nZG z2pYuN)VyA7QEaPhoBg1FNl~jl=s$=tmrGYN6wUe72}liB$qX^TyOW(ngDzys9w!qk zkL<-5u!+E~{UdbO_slD?EF{ZzMJ4rTefPl42O3!y1`v1l{&-hi9r?w7W#5=KLCP21 zqKN;vP>KF~OlJQ+iufNX?@J!#`R`0Z8~8`>q(VB={rVUV{=_`|_urN#S_FE$xXwB)EE?+O#$M zD{-U=7GC>+v2xrB(YIaUFTlPGtV(@Db}S`H_J9g~r~D!@XKw_tc@McF9*=!l1MYbP;enLcq=p9_#qMnW?&MIVmsz^Pd&Y-OK;ARGL>M{;{5fT1Dg*Ut z!M;)BaTJSSo5et(=YSf6;AI$Q`(Xd9d73l9Ggl7Xko2uB(6N9x$);I^(S0zE!0Fts zr!c><*XK-pUcnN&TdeB*2JTlsSTYg{P&ZN`e~cb$4PPzr*Z&aTJvz-^PnGOAUBQHdnHi)t6~GrLW6^bm`4(g9^`NemIh+B>k<8hX`D4VFq>$ z@{W&a^`s$SUXH^>6S880U5Cy8{)X6rXSVyxJQM|Y{Nq324CG&?MI^qAfcVEzyXljs zrm*%z)8PBYKTScocF&LGkIKGBl9=&MG0MCo?>Cut)Ly8s((O=pqFoz1*Zz3>-u&uD zL%uz}VKn8=0)IT)A(ofU2^}%Iej0P@)InB0qVPON^k=H`rB}jEk_(0t5K$2h-?;L$ zw_S4aiO{4VcffCq2aTC2op{z;S9{!}F~v}?RB+(lf8wATvn(vHrp3h+E~vKf@1KMi zX*)0XwBj1!MT~JLw&fEk;szxXc8K^h)Ce=ImQ*F;x_i?Sm1p$+LkHC4x4`)% zN6jCF-v(@P6j8mV<=f>+&3IAEmr%l;L3DZeL$Fz7(CDW`c2-xbDB8@ev;%7zA3vya zlGFC(72C({$J5#sxs-(fb>Kw_Lr&+Og<1vF7jbwk%Y=+OU*ik40Ag;@s|)R4ah^xt zXovR63z*vi954jWeOuq*)nAX8mSxGzvqnY`7=)bO@#EfA-3(`h4ir6V{}zF14XHf= z(mXoFGdKvo&c7ea-yJfPDfLZ{ads%v_+xSqzknJ6H96O`)0s`lW63-!1|~9jZBr^h zjc)2RLSO(fpYWTlSKZQ482@4C74+i$CWNsvBgV2(JK$kN(>Ub#L=7T%JD%~L!tN_K zfDJ59_4_KNBnH|>a&`;vv!1|-3irX*8%S*r*Ne^uSN=6B61Exvi}1v zL!^#U%2r^nlG8STDgk4Y%eOwuQ4_!{-$f75jq>OFe+{moBS6sJsMIh85B)gL3?39C_tg|<*^FM4`u|;9%y=+br3YOdIFu^K=J53>{xs6ITd?hzd=s0Gh81 z&-$5g>Y4E2m%$;l9_HJUOzOhCHL$Xw`AZ-SvX))Aye#-%1r*e=0;c-}>{`Q%qqyhB60J?twE&P{99PQ?D)bDH&9Nc9)PUN!04}4CTmukM~^^|+H)Ab$B z;F0q`rmu0-34|{OEE@4YHrYCEZmW8eKw@T~sSpx1t+c0hPNr zYMPrN)f>VO@^1?Yh*v<%?r`ze+|HLo0xo-@FD$W8lXBphz~KQX{tLpSo9hPUJ`9sm zNcy0h3q%9l9`E6J|B%rs6Z~?^8Ci1GSb}oE+lXEd4_>u<0=T@UJOI|A^`(Dw?`=fF zE;)2npj7;V_;ZY3*GX6ky8X@68FS1u%%gbzq#`(IUr+WL81U*J@Dk>uV3}2DxS?`> znd-GmI%N*@f55M5&aiLW@|hd4QIGlVlA9Wfe#hgX=@|MeKVlR_L z{n^iDJ9asbGKqFdHK;uxZ*=_Rboi&#Po`NkJ)X~;=c-QN4to1Eh|a$n&o?bJADL0} z6vWGN5`$1nJd~u&Maf(%i_w7)>Ojc)KuGzd)|`?!el01h zmKp)V#6QfjPiIO<51jz1eaG1O&s&-%G&YIvV7)KZUf-JJk0&kOHMpAVZKC>RKp(g` zFs|bw6sKHM6L|q+HbiLCu6?4E7X0FAbB>i~0=R;d-%_%6QNZiCQme+t!7+8F-c*=7 z_2trBySwqJJ0~4Df+$aK_~`OTUlTE^pE=X5=yo*WU)prdV#}|aikklv`V*CTQp^V!EKK@cw?k!SR!p{IFZX)tp23ZShsy$Z{K3r+b>+1@jGqYw3P zxu;L)H?sw+`6M14ZImcA1v5}3BTMx7#-;95Rf)qXHIoI%@@gGk3(p@#>8w{L3wv~r z?)e3o>O6tw0`k7O+%0>hTKG1#GkV8?6eev?a~iOWfRZd{#I?0yj*z_V2cZyw5KT;I z$(wZUe0$=bQ$*1*Ni=UYFNqzDRphgVNhX*rGb8Aogr0@Em)xK;zd}mDS%W4)M=d__ zL-(`L>*ZQF-#e`cEJa(Yhm6gldoqhdKgVrh|S>>U^;Ig=rA z{)9<0;s^W+MC!aJP{n(W#G!Im_t6Z|U>3@9mlZ(c^!xHQZ}f0T`lj)hC^MH=%spud zE`R@~$6UTK|FUNWC1@2 z*(9}F8n^MNCY-u%0oqcqTyW;onc3}93NX>5tpxW9SX*l_!(*{~lJs zYl;A!fK*Jq%}$0O1(VoI>N)|~7UH3v_xm$42tO>uI z;WO%sZ#Vl|KYV^$dG$-8=$W_8`p$J?t?*e!KWyuLv^7N526fs)^pzsJ0BX&$f!}8) z@{U}JVT3*srE7ixqgV~sl=lng_x5}+fUD{;cXLQ3)fx1!zAi+11Vamu4jID;l7<=G zFTbX%;MMHotdzDzSi~FRevDPLY~bhWZ}@)=?MB5dZ}Oc?n8Ge+Tze~se2SChHi1T;3dwMS@0IWuXK(n zhn7M2m@lFCl{*eHJfIkYpo|Lq^-LnG@RW2%0CJ9`77Dd|@y$Tdybcz0<`k?nHt@QM}BllTn6 zu>@um0uKs^p|{=LI;0r@MS;AKe~ENczp~%RPQ#<3z(3?Fe1)nQTF0b%TfocscId`X zG#jy|z=4-IGxx$q!|cdeD88+ZhsCy@$cr;TrEFSzuVP2C3&P52PiV8E5>` zV`uR^nMoBxi%4~Q2^?R8KDGVLV@slUl`8;;&qdp9Pn7iz^L9w`-5Xvht5p+}5&citKSda#& z;LZ4?E5?3Jw zd^L5vVtD50VLZXxrbWrgQH2xK~Um~Zp<9IW~*IJ5HE9u$G)R(_s-^0#w!j7af zDIKSFb3fwybpC3Y+*`kZelp7uP+fs ztI(1XC|rnr3OIB~kXijpu$#ve|31&nRoC~eV4Qh=X`bad(Lg#|v89PQBq$Cxm{HUr zVX$7JqcyNnHOqNQ`BF@p+Kum>H13#^xsIc8(DdPJfNyYGe<{2pdiM}#Yy)saMyU7% z@H3i?hT#6&ScjF_f&aUn-dN}Jkmf~yUoW;_CUFDKRn>PYhNQXT?xvnPw0)C?mJND~ zFn8~^vP_KST3Zz7i&Ea88EnB&qDKyG{`t@B9DQi(D2AB=D^qy_{+#19ZPBfJ&AT%& z{jXpDchIll3nrXd5Vs$Lt40z)CH5yws%lqk;Q8nCL*+goAF{3fGCC#V6JBid8ssh0 ziCKsSTu(t_0eh|-qlwW1kD*d1Bv)QfnSM4*eyQ>XC3d;dVEFc=`haM``5_;-jze&y zO_R8PX+R_l-(eG8c?v=?<-1!lQc9;Az=Raf8XMUfQ}~E)&N}+QNLqrtM5o3H6~IsA z9yIf?BB*xoBxF3RX60cGJc8mNAz|FYM@|%V_}2*L(4tq?7rTh@(u+T!c4B#!qNAe4 zo~o{uPen+-xjkgL@sIlo;ym$o{q9d7AD(8ArvVTj|FNSc;=^`4Ny6o<#qF=pU>^6X zGI}I|3xWS_uORgtP?|_>paQ3(2}lS1gL!~;vA0!7Jjjb^Bw%)Ej22RM2{10S{tz(z zqYah7RCC~b@)3|%SYMMby>*m|Fp#+V?98QD9ArRx&fj%Y8L2n$A*=*3NsaoQm>B*g zIzxW6o0k%R42w}*W!gi0B{MO=w{a5x{#8ilMprK2U2z5Qzq*l@F$ConBf`tL!MROB zSsbh1r+9`dcRh-img&*1&toL2fA)mOEkh{wbtNpUwn@QUHg@{+Ykc#@x-lfH>OsTB zGmdi!g5tusPcQI17MJcgm`J3wX^us8N6XDZFxI|5r*7-G0|uf3--)b0&;@Dk|7aQC ztS_RifeUVf?PnH5pqX-yp;v&Xp!Bd#M+)c;G(gQEuuX>0tU`^NV@oX|ac)oAeSo8( zh$r{&)E&)(-O(}1e^+Jr5m$8$t!_JSjrHw zM|^rv?zzqNn1ymyi|5S-Hji^0E+NJ;52(iGEht)a%`-O*$G5lhJFU6U(2;HoN9CZQ zI+wm&E53V*5#u!_JS@<9V`2$JMayvb5R$;rAK@mrQ@IRDIayotsGod#K?pt%cPb{6 zn`oEH_w+1~v*;m=N6iU?yp&NqaFzo)!UbJ;3|&xysKYU0Byz&${?tB#!i(n0Q0!|l z4;NCV*dfS3O!=vhd;mZKr%za2G_yFAQN*?LGrLGv3CQ1>o-))XDGR{6Jq}r%N6-V$ z0sSY(UqKf*$22Z~h`2f^g&^m;?G8QM6lD3TWNIc$bAJwf50*jg(s;jU^AUUO6`^M8 zcwZ~K7oZq0?ZbC}+F7`bE(|gm~ zP+xh5-e{m(HoFZd;nh+g3IwbUsfTk)UGm42&_h@o6yS zsLsp9s(_iNxa|O|EZu2q;Wm@-pW8ji3ZOYKSdi!r3_&10I0&83`n`@S-kOKFjNlV&!Yz+7-h=!0FGp1xlZ>7oBM=cI8+4CTp&&Cy{=|3eg{TXF~*~c z3=2-WQ&I~aab;E1%_$jeO{*O<|CzS7ZtKRnL$~hdyjNOq$YQuKvi>?vk9?$g^mzLT zP=2Co+T0AMSD-agFdsEohb%BJPhYlyQ$x}Jn}CHkiLS+XomGJM9Kb`uwQTN#u74OY zExNti=sONWP0n&WrVvb$y0X>Li`)*e(&{&9LdTDOyX&0u@$&6n4d?H!QSOm{0@p@$ zM$+K#Mweo0anG#sFF`v{I5``@~r?qUXT%W>4sGSN!)>tRs!5_c?WbEl=7H4=}um| z40?-stP!tO}bLobw?a=UJ)bPv)3TEAC$>0&s)0v>2vd}&eCDknq`mtsp9%@JX^Nkp7*^}6#DE@Eb^#)@h|D-vTKdU+Md;gzv>{y#`bJFRCWVX6PeGVTwxib#& zhfbR{NC!GSK+N}sk(}mB=$Z{y*eQ2=SgzTJj~Y0hiA%FrG9HH-3d0(}`(L4Mby4BI zE#asMThuj$ec$M65yRXE;%{w_>NIDW$FAl^yZ!h|fF?wcuR`~|C8)2L%&){Mc zFrrwr7xr}P#eDaiQ-x~NOF`BKyn34iI<+)ngIPnMeCXT?qPoj#DrU5d>T?$n4%Oo= zE2rFwqW`b5O72Mbm(j>IA=%0gKb{mF!iw?4`LgMJRFwy*^BVd6CxOLHgJ+Gbsr?PM z*_6#*hkIO+x)HWY?O~0_yG>oW=k=D>>rdHaVTHdamWX*<8Kt(IzgfIvk})2%xGcNk z3jTlXJjZ;TrZp1a{b}C%C7QKh^f#2{Q&dwh!(GcQ5^R*T`~sRcb8sHZzd15>4WKbB zAlTvIy=hTK@ZS6oLyf7rv-5KD0N=*k>&o;y(|{m>!+q-!5ele7j*s}tOg1#JN7!+M zD6mo1vIZRM5QUk!T#%d22f(S#Jt!4(fcBkG4O%_|6A8g!qoU4UhwXV%!wGA1FZx{< zn|GUB{82R%3Wq2UJ=nPCY{juvf)CCD!?vM2G4^lQjH62a8_BXuRpUvgHB3kK6KWc& zQI;ghNmhh{J3mFYkiP4VLd1pN7J#8g2&yU5fQo&I1>5%75qd;}G{iJE5 z&(yo+VH>)7Fw0%Y-FIwF!8Z4@s4jDVzO-!?s^P+ieBi9#u+Z|LQLKa!Ezmct(9E^T zJ~KJwr-e_z*z3`%6&ghl29(KU{ssZb7?GNebxn*~8KQ^n*d7Y6-0SdYj8GZE2r& zQob5?I7k)mJc-*^WVWoMC_dcb%)k5741icLzi8R#qnpgGOE%|_4A;104!Qj? zni@WkITR_N{2)%e^&FossNi91w~)>8{4A)60r;d@GG%g@f@LX=)g*;~Z5$F>a~^Pu z8D|CA>6h7Se&57=v9Kn{?^sM~#YOI+Nqa z(_X-dkDK`9)sfLmp*38q*=&XdPB$Hfm^^xU{a;3KTy1SbIOKuz@q^GYck8Ds=mX$3 ziW>nJI_OWH2N}K}OnU-cWIZ4+PMPDdZ2Ee-SsWK;js3QdFomjX2nKSP+G5}$Q;ncN zA-ks@oIKg%v`m&<1C=p6e^6noZ4gK6fDOQ7hT~-_g=PJJeH1NZP~jP6hx<#fCo#8A z0u1KjJcrkY!X}}n5%dLV11uW(P{%CazKN*$edQL$ayN^OW8LfL8ek|i|7qTzJy_Se zSXAG^cks!?_2;`Afjcg!9UPF?sAwL#Ke<0GS+B5jp!>P3lC$|RYoRvg9|JIrvcb+V zfd6aSAl2Np+ovnD_|>xLf052N2WhnRQucTd7z9LP)7_4v+uKyDsC)~!E{Z$VA?pwX>d&>V&2@aEDWyu8Vzv*Us zopmLC*9nvB)jw-CH|-nZ(M!%6Xp|RIIUVGxr+04dT*X`r5!_SxljD0hkX=&!DI&k#UmF{u7*To7w$`Tz3+PGwyvm zd7Jz*G+x)_Ul4AYM}tyzd%5c4hXru)RCPNFpZ>SCFoUkxweR?1xuRg2ETC&S$1KQ7 z4|2Gcaw9Siu&}m_JYLf>sfA`+wyPn}M*eprt@foq>*7dw$T|{VQn&g%CWMQ+AN~YV z$GZOUUua@!TiY82BIjK}p!(=i0Bzw_v7UzdViYFY)xxb1|Nlcg05O*52+_)y)z&<@ z*W)|7_S74WCNxg0JgqKk8U?Ad1cwUwG=>9pjo~%YKsNFu9)dQ#{UDnOy<+=1%MqXg*6BE<%@*zCf>(k4IFFv=r-?~tBN&z0p`<}5SuVU{gZ&Q6BbGrC8 z+FbpkUYey5s5KeF@WF&WHq5uMtY`ii4&OnGozj2t+RGg0`m@K^!&|JZx&)tIcqC1s zcrMUrFK0D*pua0&gYyyLY9-235joCo;+l=Wj$a~wsi@0IJDkNS`25(`shtEjoV~ol z;KkQKo1I+o+_!F&x_bweRj{xAj0ht;Jxkp76vpf z^%6+nxq@!nhGm(*i7({Zy^UUVScLo(Bm(~>?H!3c9{B);)VR;PwQxNj;#)o*IGeZN z4=#5=Y*q_zD`@>m_WC2z_mq8y+RWb8nK!QW8T=PzgCRoS@6Gx1Z%KF-i7E|z`}kmj zzsC8|M0;7?xaj9uNz;++U9|uFA=y^uz1r7O0Q=*xodV|cIr7`_RJ|c(djxa@!0=&D z2Pru9k7X+}GD(44+h{I z$Tg}qh0lqO9=m&{MRsy>|4l1BExH6Am4tm#4FI+njcs3lbVDQ?To3>tI% z1RBIWX}ueNl(h3A%uvU-lk2toBYt1SCGW2b5*l%|%VNIig7oG+EH=UdaL(Ahuli9W( z3ivuL@kiK?SuYiTFdq*|+_VT`DpLr%Tw?O6R{SoB*Iz%wp^W$iHpm_o0KxvXEk~QS zbIfgcjc}&r6u@ra(z#oc{U7*35qT(9fRZ!ad(7T_a<-!bOG1^~{xVo#)Py&lM=MO! zyklwsfdfey<2^IKeq5KppP`M@!Fy~iz^m3ft_;Eb?Ib^2@gj*@Chvb(YBdWW-buXl zQq$r%*G!{^UkJ&C@+_R|&&k*Ywwc*wDG4X^ZAz>sbXP1>jkGO$6NJ=(wC(ZaaoQ5T zqI4bRd*w5;LpOZZEEqfWslZ@A2CFdc6n|8CK5z-uXz?@6Y%Jh51((e0A>c7_+pKUX zH0yH{_W(U&!R#z``=9dKjAB76J4pd<+>8YXJWi3DiRbt9g%;HL?f8)On<0=R2gpb?LpiI@5S zs{R?OzSUS!(nyHl$_w51VvUdHO~)b-wzlqewy}xPU~$|iH!yvldL=Dzr%u541tUQj zcmlwIC$p!f43kzOm>Dm^h4{Yk*oB-Hvq?=P-*gs^$&gus1HI~ysTxn#b@^j+O~?(| z>Mm%^LqNnFVWe1kx5YgiH;Ff48!Wc=K4zNXO2?V))H4v$?=X&^7${t95QY&0vN73- zmf+~e{2Wd^SjPDRm5i1f8~5lal`jYIe|fg}mOks>Kw5APaudBFKMhaVcaZNXWOjC( z!n67hCUd*u?|>m&81mR|u)zu_ZFP`uk@EI53m$tw=*98$*qiC>w|*nrQ;n-w6)8O$ z>fB@fSL9E@qAqkZ7TBFa_z)mXv{(&1Y&Cw@dyLZ~*YO;%&D-?DGqqn4*#?Sn|J-`{ z_I^Mb;LGfX#WBB%ZmEuwydXQ&MxONQt`OsmysybN*c%Ny8~xvNb7F}(In_U4!S0Tj zp-1E^*mWL{bw1c0!(jCE$P2@Yv`3^*(d0ruh|vn9XGSs=6BDwFsDE&hf^9$_F5otO~mSJ!6RS+ zW<)Lcz}IY6yy^cbA%6MuiGmO#sPFX(EJp(CAwrecjtDJ#b}k-T0ZUG}f!?OlTdJiZc|YQW7RCy=mvRol z^&TFV30c$ry?5{EJHK<>B}%a+1Q<3G7zwhU%U{F@j&0$k&}LQ6u6>+s88 z)7$hm*Xi4_VAo>v!LM@aeR)lO?}mHMXz}!38xVNc+F?A`FRR^|(Yqi&4FCotC@1<XjjLg-<-%>=An}@bmn$1ne~#Zi-!FdzWJBrdU_?XR(hJ4|xn! zpJ))Or)>WH7)FQ-&3hobZ+m2%x9x)aK<*zp9d$ZO03^QK+eE!&zkGVD1*t7y2vsku z4ja88lq6o?FPXhZ(=HivSvVs~hY98^b~dBGQr z#{B~~eJ+iBx>^0UD5L2RC+yfa*&~dpy;2ZB2J@jU%;9-JTdz`>su!?sk( z8usv1BYkhRzhkJ{hsu9t;GsC(CNDbmT9cd)Z8!Vi_2k?eXxJhZm1=u}fpuqHFb)iw zG>M3Y3^6J^jClqcrIx$Ys9YHYqSH{k~?uldh68I+g$1KJLxsDo(14%b@ZjC_7 z-+&}Uc9-sY#Kf@nmchMJg{SH5S=;WI?h6~c>1`KTA*vaeDBoR{+>2&`=h_OUwvG(Q zZUGZV+FP^`@f>UXDun26Z}GpXM)NvUT_b{q?i^Sz3ILqB1ioGSg$63?$n}OeZ`%7v zQBZ*v6REon$uDNhWJvwPIJaFG9=>GWUMcHHQ35Vl=VjP}IwUj8NvK%B4=+Yn+U1;$ zrxi2b2|tE6cj|WfH6PoUD~)t`a;;C6i|$}#+f_HSKTb&;;7wnJ2<3-ElCB%N#@t&9 zVI=T&)+X_zI6r-6PX71EGG=yv!=x}b(=K)Im^rCX!n}2M&om-tw&g-i%1=@3=M=Ls zz8Nh`$uV9K$=D5b?GT;K3Wwb9t{s|P7RzkT(_9G^{wd^zVJdZ$MmOS~Bh`WSmN|>| zhXY5kd6tc{>JiZ=Z}2)^4ocjEF5n%G1`rLK4n!#vs* zm~oEre5ZfNMqNa>rrFj8JB`_zbd~UlQ#MDMw1PHq1~qiLPzH=LEqHc{C)U?oRp`NW zcwfj?+N4KwA|y6mxVEgzPtI&yI>n;Y5j?HjV>Qp(~E*?qm1ZF&R% z8?z-OGuMjV@H#25ZsJx5meIIIps(EkN)r>BuDs1@ZT^geY z?F>i#Le*F`M{)1It5GdGGmo;Oex>{e(Qq+~6>>c7QI>!ZHuJ5lp&wbIGmgovd$@2i zZLy1+o13)HrilJoc5lrkw2U)v5)HfpElFO;o4|c)^82;iWs|Cz*+&dxpKoIBjM|E; zkUGx69i~stG2`hqrU*%{e>cb6kcoHTDwuKpR;(7}VPiF?I`OhJ_m3m>vHuCMejYtE zIeD9@8(;k^qUHk$GLayz*E+gnZhm-x;ua@XQkvQN6dFlWO70NBVDluc#zD`;pL47% zfBR3@oOW1|8En`ZjnHZndjczai3()U`Dj%KxGW_XHM^-JRx;tdQY4L&sYO!3*t4*W zn20W~TYN}6UwPBawnO{!4Vz=2NNMw~!lc!HI+YmHfpuxJF_%DJv5bMI(=sVFxN#F7 znH{mr);v)u(kD1Jw;BBAJ~8OX*x~lx*fc3RJ!RGba%L=~VL*#hycu%1BwIlw$uq{r zoMLQhNimN7ddDm14PK>$Gr<6BhiMH|iKDJAzQuivm#ikVs9r*?jU2G?yrTE9k3obZ zb$$BM0!i7$wRN~!Q{ni@IXd!W9nLk*a7`?;{X;QlBJ+U=Xh&O4M&cUlH3;LiCgV=y z8BrQg^OnYj27=O4RGv~En5`5JK1N2d@1@`v#bP-d6&m+u?}%q=vXdxD3aBAO6V?K6t8t!*ptwC&2V(*2+!VVvc4YU@F?%}%dAIHFYK6e9)9|e~SWQ&R zdiH@2R-W`t?2jaI`0ALCaXanT(vj0T?8hn~2eHCX>9+H2re-M(jKUB1-UhAIWMVfy^-?G98P`{B1AN$e_VaH##b zGQ=hB*zNY$0EPXcrkZyEb@>Bm%3i;1V>Mv53a)oG?SHxN~ex zos?ZtwJOtb`Unx^A*WFxsn*7_IF|wys`9cm;m!@M@a+(xs-r$99?)z`Qh%q`3$5?< zdb>QaDCAnwO_e<3)t`1hn#$S%d%E~$=4;nHu|l?x`W1S~b(HR+#@K9R+8Noeyi9PM zViYILjQG?!Z|&WXdcg^LMg5GcOL*({&bku5xAjNlp$%PLO3%IT4$r?8?9(_uSI~s- z{bRAVa(>_m^OgyTL1Lut^!4|ukICN~uEx9#`}1Y`N3qth_>iY3{*E{g=(2p+L--2T z-{GrntRjR`)Ij!~BR1m{HUf363B3=PFq^&UwCxqJw113DkRTbb24EID)1wDIWFgAv z7~{ix&MM7K`KKvLXqWq=8>YS63hmRQNKzHt>wMq;6i#v1O4&Fr$n!#8#nAX^R}n3hQ`%k%zoOmPd(Eb?oWtYco< zXDAs@-<{LkJYz{Cyp=4wVqY{Q43!L{Tw#@kTR^#t9_c2vcFp}N> zKd}&)$(~m?v~-3H*35%Z%&2I{{^&z?XyLisO4P*B?7!@F4dm(!-$Y}{{ObNGWLcS% z*b|C7W&=o`&OUPyy~M;7Apv5v4?k*1_StBJS_{yMda9*K+Jb!qNE}`*z&+qnO~URz z%)_RxSQoD_NJAyc;2v!L>-ccY*h&xrhV$C3tcUaLheiksvT`P(vNd_zbJ#!BA5;K0 zfx3_xj;T#&F-8HfRb64B`*zJVEceQ+@!-4-e56>21(sHwjJ(G0~$h~bz zK4u~>Q1s9ea&gmj=Mj`BdTSS2ODD@a9}iwB z)@|NjFX;Wog%tZIx0t59#;fmE0etq1NHSon3J#sv-+uuYI@IVAcg;kQxLL^4Ug`ux zlo>>y{5+oOR&GWJFKLnETHALp(v}&72pgL{#hv#5v~uSE zP_Jzq|IRmKhC#NBWin&QXt5N9vCQB|hmw}3bh3=3kT9~xe1}v@Sqs@a3iVXBoFvRx z3S~{5WY@%)7(-+Rvpn;h=U;g4pRQl;>vO-Z>-D;>_x*8w4CI29>dd{yxY)S(_z_ON z5hu{VCa944F>bpUD+Te3z zIx+^(v=_pCBdgvZF15{ivbl3v96M3+jBrIvzY36o#8;`}xMA2G>q`ux41+~K>8%Z? zB|ijcWA9W*_S_Rtl%2#dKs)=8A$HVX{`oB=FoziBybqV6UOo(xv8A@Or4mJkDm;wf zwVmP#3?aa&j4+F;KCi;aG(cKLTk%lU+cN4Cp*RGBd|zEGd<8XM&YhLXAK_cO-2y97 z?L@dt7v1iQa@L+Y&`>tT_+1}@lu;7}dVDO%xhvsG#aJSh28<~0A9q(F&#l49%wW0< zqY(n%G=2o9HvPXc^KeMAC=Hy8T)t?oB+SuVl}G-qh2LSHf=8sRTV!26M?!*DvfsIK z3Jb=lX`;ps2fSLFgB}nEc^3xS5OfMAV~!a6p3^(t}b}K|frn>TLpK0s7l1_)Wo@J`e%u)0%@%TzJ9sX4G>6uY(Og z(2T`#xamNz)`Ee;V)~cshV(jUbMu!pCR7|p#dYf${%*R;oZs6*=F|B!xPi`ornDoOn~2A)1Wp!9w96kwA| zC@GT)i|yHzlaiNTm6KPM=cY$H%?%cePI9vz@whC3OFDqdz&_xc>~;a34)vOK-b`RQ z!>25jud4sZY~|Df#fH-H@eZ)1pYHhz2PH$7jISg;KwI%8Xn6yiT7vLk<-}1y=-A9& z8j#ShpbY2d52BUPQ6y!CV*v2&A`tz3DlkzkKoDe2@aJAzZpFFOqO z$JW&)n(4tr$wRHfxl>BS5b%Kcv8G&Vsn@nbWkv)EU~!=VD`&vKx7Nhe-0RMPmqc%_ zI5#wIjn|24`zG9c0{gb7)keG-0#;{|6G4WBafMp)oxtxjKhjU&{i!HghMO{qw8B*- z!!tZEh4p4q<3H1FziH7G8WEpD3tZN)hwEqD`w8tkc9Q zXY>0;u;Lp+Zp3V>a5J>-VUc}JWYejd`*&dtCS5 zo(Zc%^;t733ZTbM7qheUHa_t=ZE_%Bx1kl}Db=U5hk9*a!1%2Da zSY|rbMT7*4?UzGJSu(`!pXuz-;* z=!UGe&IhLEg(@pMH)8qcbdV_A=j|vCo4vw%WBsVW0JL>{>b2|M^>`>fX+7WqHOosX zObJ-y7zzFSE>uNSu%pXLjWHirr!bZ$I`q3MhdZaofT@duH1x%;Ou>~oQD(f(+N^;p zgQ-`(E}>s879|xR=opbi*{|1|ifOG^a^EJ0?RcZBP_@ocSyu`^MYhQhM# z{ccNYG{44@+uI45V+52S^e%;Qx}~TWUU}H+zyAS}yRe+KAv${+ud$48=V9!^CaubIOTQEm#vG zM4E4=-MV|l>g|B==0j{&YJ}P6xt_PeR3MKUf*giE`)S(9-s%LZ3gY}M@?5L$rTR>xfI0ht%6H#(M!y$v#o_^x3&Fu#R&NAVhC)57T5jbf)# znH*mqK{tDOcp5hlxs>NUZe)WQ@HKm_(+AZ_P*)*N=}5E+rTUEP_eEpQY^>o1e(Qc8 z$z>S%*3egQ68Pp z1So5|FpY`N<2J;u50NXTLeuqtg_uxXl_W}*GYZ$SjEQ^d;m+y!b<(UXI@;IS{pPLk ziIQ{wyd?%sF&DBQdNF!%t^&^=(5DQ`-vit`Xy@mo8IjC}f*ac{0)c_RGAZ-4^V1=5 z5BmJ=Q}mO`IkfK&5Y)_X@fO@dK=E#ODjZj2hiM%A6y)hyuh+kwjR>Eca?;N`u=u0f z>inPV9hjDGiPpXFfygG@$Pus%h+0b+3Q`i(M+rY>s}XUql57j2K18h1icw;OngBT@ z*Yuw@#Cur&m;B@_S;j8~#rYHkGz>pR(`jV4ez3UzU4~oO*>OHCdf(;US|h$>J8oJj6|Kro^Q@aE!S4h({G4U0qRxQe?77; nN!XJAxpn-5nfzZup9v8b<^tM`sg?%=lJmQh+ix!%$VvYJtdede diff --git a/src/conf_gfx.c b/src/conf_gfx.c index 5b601e62..b810bce8 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -5037,14 +5037,14 @@ struct ConfigInfo image_config[] = { "mm_teleporter_blue_16.frames", "1" }, { "mm_kettle", "RocksMM.png" }, - { "mm_kettle.xpos", "12" }, - { "mm_kettle.ypos", "1" }, + { "mm_kettle.xpos", "9" }, + { "mm_kettle.ypos", "8" }, { "mm_kettle.frames", "1" }, { "mm_kettle.exploding", "RocksMM.png" }, - { "mm_kettle.exploding.xpos", "13" }, - { "mm_kettle.exploding.ypos", "1" }, - { "mm_kettle.exploding.frames", "3" }, - { "mm_kettle.exploding.delay", "4" }, + { "mm_kettle.exploding.xpos", "10" }, + { "mm_kettle.exploding.ypos", "8" }, + { "mm_kettle.exploding.frames", "6" }, + { "mm_kettle.exploding.delay", "2" }, { "mm_kettle.exploding.anim_mode", "linear" }, { "mm_bomb", "RocksMM.png" }, @@ -5070,11 +5070,23 @@ struct ConfigInfo image_config[] = { "mm_steel_lock.xpos", "8" }, { "mm_steel_lock.ypos", "2" }, { "mm_steel_lock.frames", "1" }, + { "mm_steel_lock.exploding", "RocksMM.png" }, + { "mm_steel_lock.exploding.xpos", "4" }, + { "mm_steel_lock.exploding.ypos", "8" }, + { "mm_steel_lock.exploding.frames", "5" }, + { "mm_steel_lock.exploding.delay", "2" }, + { "mm_steel_lock.exploding.anim_mode", "linear" }, { "mm_wooden_lock", "RocksMM.png" }, { "mm_wooden_lock.xpos", "9" }, { "mm_wooden_lock.ypos", "6" }, { "mm_wooden_lock.frames", "1" }, + { "mm_wooden_lock.exploding", "RocksMM.png" }, + { "mm_wooden_lock.exploding.xpos", "4" }, + { "mm_wooden_lock.exploding.ypos", "8" }, + { "mm_wooden_lock.exploding.frames", "5" }, + { "mm_wooden_lock.exploding.delay", "2" }, + { "mm_wooden_lock.exploding.anim_mode", "linear" }, { "mm_steel_block", "RocksMM.png" }, { "mm_steel_block.xpos", "8" }, @@ -5202,8 +5214,8 @@ struct ConfigInfo image_config[] = { "mm_pacman.eating.down.frames", "1" }, { "[mm_default].exploding", "RocksMM.png" }, - { "[mm_default].exploding.xpos", "8" }, - { "[mm_default].exploding.ypos", "4" }, + { "[mm_default].exploding.xpos", "0" }, + { "[mm_default].exploding.ypos", "8" }, { "[mm_default].exploding.frames", "8" }, { "[mm_default].exploding.delay", "2" }, { "[mm_default].exploding.anim_mode", "linear" }, diff --git a/src/engines.h b/src/engines.h index c90cc0a1..dadfa21d 100644 --- a/src/engines.h +++ b/src/engines.h @@ -61,6 +61,7 @@ boolean isNextAnimationFrame_SP(int, int); void SetDrawtoField(int); int el2img_mm(int); +int el_act2img_mm(int, int); void CheckSingleStepMode_MM(boolean, boolean); diff --git a/src/game_mm/mm_game.c b/src/game_mm/mm_game.c index 164f1e39..85a9d409 100644 --- a/src/game_mm/mm_game.c +++ b/src/game_mm/mm_game.c @@ -25,9 +25,8 @@ // values for Explode_MM() #define EX_PHASE_START 0 -#define EX_NORMAL 0 -#define EX_KETTLE 1 -#define EX_SHORT 2 +#define EX_TYPE_NONE 0 +#define EX_TYPE_NORMAL (1 << 0) // special positions in the game control window (relative to control window) #define XX_LEVEL 36 @@ -2525,13 +2524,20 @@ static void Explode_MM(int x, int y, int phase, int mode) Store[x][y] = EL_EMPTY; Store2[x][y] = mode; + Tile[x][y] = EL_EXPLODING_OPAQUE; + GfxElement[x][y] = center_element; + MovDir[x][y] = MovPos[x][y] = MovDelay[x][y] = 0; + ExplodePhase[x][y] = 1; return; } + if (phase == 1) + GfxFrame[x][y] = 0; // restart explosion animation + ExplodePhase[x][y] = (phase < last_phase ? phase + 1 : 0); if (phase == half_phase) @@ -2572,44 +2578,10 @@ static void Explode_MM(int x, int y, int phase, int mode) } else if (!(phase % delay) && IN_SCR_FIELD(SCREENX(x), SCREENY(y))) { - int graphic = IMG_MM_DEFAULT_EXPLODING; - int graphic_phase = (phase / delay - 1); - Bitmap *bitmap; - int src_x, src_y; + int graphic = el_act2gfx(GfxElement[x][y], MM_ACTION_EXPLODING); + int frame = getGraphicAnimationFrameXY(graphic, x, y); - if (Store2[x][y] == EX_KETTLE) - { - if (graphic_phase < 3) - { - graphic = IMG_MM_KETTLE_EXPLODING; - } - else if (graphic_phase < 5) - { - graphic_phase += 3; - } - else - { - graphic = IMG_EMPTY; - graphic_phase = 0; - } - } - else if (Store2[x][y] == EX_SHORT) - { - if (graphic_phase < 4) - { - graphic_phase += 4; - } - else - { - graphic = IMG_EMPTY; - graphic_phase = 0; - } - } - - getGraphicSource(graphic, graphic_phase, &bitmap, &src_x, &src_y); - - BlitBitmap(bitmap, drawto_field, src_x, src_y, TILEX, TILEY, - cFX + x * TILEX, cFY + y * TILEY); + DrawGraphicAnimation_MM(x, y, graphic, frame); MarkTileDirty(x, y); } @@ -2618,28 +2590,11 @@ static void Explode_MM(int x, int y, int phase, int mode) static void Bang_MM(int x, int y) { int element = Tile[x][y]; - int mode = EX_NORMAL; #if 0 DrawLaser(0, DL_LASER_ENABLED); #endif - switch (element) - { - case EL_KETTLE: - mode = EX_KETTLE; - break; - - case EL_GATE_STONE: - case EL_GATE_WOOD: - mode = EX_SHORT; - break; - - default: - mode = EX_NORMAL; - break; - } - if (IS_PACMAN(element)) PlayLevelSound_MM(x, y, element, MM_ACTION_EXPLODING); else if (element == EL_BOMB || IS_MCDUFFIN(element)) @@ -2649,7 +2604,7 @@ static void Bang_MM(int x, int y) else PlayLevelSound_MM(x, y, element, MM_ACTION_EXPLODING); - Explode_MM(x, y, EX_PHASE_START, mode); + Explode_MM(x, y, EX_PHASE_START, EX_TYPE_NORMAL); } void TurnRound(int x, int y) @@ -3174,7 +3129,7 @@ static void GameActions_MM_Ext(void) else if (IS_MOVING(x, y)) ContinueMoving_MM(x, y); else if (IS_EXPLODING(element)) - Explode_MM(x, y, ExplodePhase[x][y], EX_NORMAL); + Explode_MM(x, y, ExplodePhase[x][y], EX_TYPE_NORMAL); else if (element == EL_EXIT_OPENING) OpenExit(x, y); else if (element == EL_GRAY_BALL_OPENING) diff --git a/src/game_mm/mm_main.h b/src/game_mm/mm_main.h index 2c12cfcc..5d0718f5 100644 --- a/src/game_mm/mm_main.h +++ b/src/game_mm/mm_main.h @@ -207,6 +207,9 @@ extern short AmoebaCnt[MAX_NUM_AMOEBA]; extern short AmoebaCnt2[MAX_NUM_AMOEBA]; extern short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; + extern unsigned int Elementeigenschaften[MAX_ELEMENTS]; extern int level_nr; diff --git a/src/game_mm/mm_tools.c b/src/game_mm/mm_tools.c index d4bb5d37..3a3aa2e8 100644 --- a/src/game_mm/mm_tools.c +++ b/src/game_mm/mm_tools.c @@ -1292,6 +1292,11 @@ int el2gfx(int element) return el2img_mm(map_element(element)); } +int el_act2gfx(int element, int action) +{ + return el_act2img_mm(map_element(element), action); +} + void RedrawPlayfield_MM(void) { DrawLevel_MM(); diff --git a/src/game_mm/mm_tools.h b/src/game_mm/mm_tools.h index d6679de5..58b2beb0 100644 --- a/src/game_mm/mm_tools.h +++ b/src/game_mm/mm_tools.h @@ -107,5 +107,6 @@ int get_num_elements(int); int get_rotated_element(int, int); int el2gfx(int); +int el_act2gfx(int, int); #endif diff --git a/src/tools.c b/src/tools.c index 7f448fdf..351c36e4 100644 --- a/src/tools.c +++ b/src/tools.c @@ -8323,6 +8323,11 @@ int el2img_mm(int element_mm) return el2img(map_element_MM_to_RND(element_mm)); } +int el_act2img_mm(int element_mm, int action) +{ + return el_act2img(map_element_MM_to_RND(element_mm), action); +} + int el_act_dir2img(int element, int action, int direction) { element = GFX_ELEMENT(element); -- 2.34.1