From e040a3896d82053547aaf27f468ea1efb8cf2628 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Tue, 14 Apr 2026 10:10:08 +0200 Subject: [PATCH] - [NEW] Rat penat --- data/gfx/ratpenat.gif | Bin 0 -> 176 bytes data/gfx/sprites.gif | Bin 3169 -> 3192 bytes data/maps/rooms_items.gif | Bin 1368 -> 1407 bytes data/modules/animations.lua | 9 +++++++++ data/modules/ia/ratpenat.lua | 29 +++++++++++++++++++++++++++++ data/modules/items.lua | 1 + data/modules/templates.lua | 16 ++++++++++++++++ 7 files changed, 55 insertions(+) create mode 100644 data/gfx/ratpenat.gif create mode 100644 data/modules/ia/ratpenat.lua diff --git a/data/gfx/ratpenat.gif b/data/gfx/ratpenat.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c88f678a5bb49fcfb9351cb2fb6dfe9ebe8d1f5 GIT binary patch literal 176 zcmZ?wbh9u|lwjasIKlu036{eC+A3Pgp0ySZM#1sL$>IMQ7@DFDyHc$e)dn8SiLTz{ z_xr5W%(l`Q?d3-&hMb*O@M321hrQ*F4GT)v?%ub1)A0@Se&3&c?9k!=KcD>j|6fMj zK#_}AN=i`iCkrPR&=wt#O&~iNSalN^dX{+1%aB~7JbT`1$@Lx$dsgK#7oR!4HTwM3 Y-@N^5$~kFMR159mUUjaX%^ZHo23TCD%-Y4)j%J9t1nyEOZ__&5wGfj;~J37*! z=5s)51w5k`qMXLMBSHSrJykP=)!;!0p7s39BCA)h_I&iHDSdx41Ym$968z;&ctT)P z?qnr0If%vf{L$17R<+IU^RA8OzhJ4AEsN1g*%V_I$*6|e&wjRgBmF8Je^1clnpIiU z0v_&&Yu$zE9<=}K>~Y&0!_6*t07(1g>!|88<}iU$I?I@nxCJI^02 zH-*RKED~QwI?aEfQEXzG(yU=&(uYX{a?cs|19RsH zQ{>@MZO$QG@_>l1VbhD>b$;6FBb_Kks5a7)|BjCE5lC53kum_(1C!6GK-&Okz(B1A z2t{38dQKr?y2a|D9hj^2>6ZeG)Fovp1CS#Da3{yODV2XG4%nRo2-23)4xk=5b!pAs zdr;p2QwLX#1?>+~`_$FGj|A*v?w|^QIy8WHmXk|8P`8wN#*X=eL~8Tj{-~h1v-Ux? zz44DvEv1+%bZf2ZjiA5I=Jy`^!;3!c4=BB*a*ukss~*$auCf`Vyn8_zp!f%Iy940v zcn3he_(_=j)GNeu0C#71=n(`WcZ57=f0#4`9r%8Lav+rVh(HjD ze71A^Cw_iJMLlu?zXpM5#6@%1Y!=Xp^{tpsiO1mW+vc-wk3aq*bw0OVyx zDR?Z@IE}Qa4%vp3cXva1 zmo4ZQk|H^h9BFshQF-HtEb*6zG)aG| delta 1076 zcmV-41k3yQ7~vSOJqUj;8@77av30Ql7Ma}93^AvzMIho5FN%a5*qad5+WF3S&NH4J zrDND>EnB~Ma-e>i%@pW17R1t*y>&Mt91OmKa;E3(gw<3y5j|B7p8m0{x7k! z&29`2d)omZ?U%2ks?V6i1WJ+XL)(HH+ya2zMfT`mVSQ{ne{|av9+R_3d>!dDheolP z4Rfe70cztw%9(%0G(H(9YHG zMD$Am=ID~LlmW<*fU=V#+my-^2iDF31hu(R>VZ?2)a-w~2gMyQb#T>Ky8fWABmL|9 zNWebO4ypjCLj!FWIl0tRbW5qnVykLAU>>g;zHF&F37TGbmVf1SrG z?Es|T`$q+J`M*D4>}2Qs%!!4|Dyu%9mI}-P43K+4!M^N*cL3q-cvIU~e%SU>ZSs{a z6{Z&}r^bJ;bHOvN=h+ME1XK05?Ey~xJRh9)9;T_{+na88oB#Z;Ibc4>~ zaSlL2J>Y$=R)tBpf35^fRAWaiBRaN_Zd15!0@sGL`6Mv0=7ng zXv9TnIBXU$ildlMu9r`wSc<5aip~dS-jBybFlaZ~B4wjkUlxFQmtp{<=uD+pi@bP? zoySNgK!mnsg4jZf^u>y&Sc|Ny10$&n2g@2h@@0QS_pD;xGd-RjJ-dYe=!+Hbj=mI*Xvi%X zmx{p1d-bAP2C0y&2#sS{hucDli0Fmwg&l+FcC#pv6UlV&IEHIyk=ap=$Wnf9SduL0 ur&<9iSCuk?T(^;#=7GoPl9&dQG+C22d6PJqlRCMRJlT^z`IFcZ0suRj;tQkz diff --git a/data/maps/rooms_items.gif b/data/maps/rooms_items.gif index ae5b0e10709a1a7fa34f9d0ba0a015707d5302e0..34c1fefc5940e09d224265c5b1a74dd16215bf26 100644 GIT binary patch delta 532 zcmV+v0_*+Q3jYeQcLRTFA*$7)NUv($%C)Q4uVBN9Jt;w8*^g%xo^@1^5yYxv%X6mm5yF-`+Jd_wNyV2miNiR-s<;3@NGyzZ5-tgzkSoJn+8$%jx#V;%~S< zzyJRL1{hmb8P6lb$5^y{jNYZNi$u)pN6Po1UV+>+siGZRJ$k{~$Py#@O4P|&x zNG_pA+)@iTWg>rv@R@`gj5OBOP)sk@SW=D%c}SOT2JzTZd|wfX&~y=AG@W-kHc8!u zF9~TOLAF6DkXtjVMdg-;Ihox>Mtb>Dm<5?ArA|Yp=n#nm(Ff6)94aX0K}iafC0%eH zv>|tUjz#92*2(FTnF-|?6rc~;RcBm(B8sP@Mj6_boQ;2aW~8LtRT>tXkoKhMUvSPS zq+3L;=$olteTrtMAEBD2R+u7Wq!FuKxyl!iL5>wGtsChj9df(|Ti;5y@>L~64%W8N zt^%oA5U$M9iIJ62Is4F=*4lJue$+11;$IVXJ7q%Rmg$n9Ta_#9UB&LzE=f}%mMu%s W?lrGW_X-STTz>hk>#uA90RTHBQ~zWD delta 492 zcmV^Y*w$vH%z+hS z4gk6|RJ3N%UbcvEvuVDfUvnib+j4A%lqmzyUAwpM-!(tv>lc;9mQ~j{48AmDNvajOP+KIXMUas{cJ<#w zH#T`vlmj_9=0J0q zDOQ_zenn@WEaLSfpMY`rr*edH)g_?e$#x})Ew+^?qaS2V+83p8S!&Xu2Wf=qr!mSH z7N?&=bXRe^m8vRontH{gk_M$cwh*Z>l@uziIO_LRtFtb|t4nCA7i2>o=7r#}EDek7 iLAW0I)v~KbYt>Y+ZPjdCzqa&iZt7(#?YDmg1OPjC_w#uG diff --git a/data/modules/animations.lua b/data/modules/animations.lua index 7302147..830a99c 100644 --- a/data/modules/animations.lua +++ b/data/modules/animations.lua @@ -249,4 +249,13 @@ animations = { { frame={x=32,y=0,w=16,h=17}, offset={normal={x=0,y=-2}, flipped={x=0,y=-2}}, wait=4 } } }, + ["ratpenat"] = { + cycle = {1,2,3,2}, + loop = true, + frames = { + { frame={x=0,y=0,w=8,h=8}, wait=4 }, + { frame={x=8,y=0,w=8,h=8}, wait=4 }, + { frame={x=16,y=0,w=8,h=8}, wait=4 } + } + }, } \ No newline at end of file diff --git a/data/modules/ia/ratpenat.lua b/data/modules/ia/ratpenat.lua new file mode 100644 index 0000000..e38aa30 --- /dev/null +++ b/data/modules/ia/ratpenat.lua @@ -0,0 +1,29 @@ + +function ia.update_ratpenat(spr) + map.surf(rooms.surf_foreground) + if sprites.hero.state == templates.ALIVE then + local x1,y1,w1,h1 = util.aabb(spr) -- El meu aabb + local x2,y2,w2,h2 = util.aabb(sprites.hero) -- el aabb del heroi + -- Si toca al heroi... + if util.check_aabb_collision(x1,y1,w1,h1, x2,y2,w2,h2) then + sprites.hero.hit() + spr.flipped = not spr.flipped + end + end + + if spr.flipped then + local tx, ty = (spr.pos.x-1)>>3, (spr.pos.y)>>3 + if map.tile(tx,ty) < 16 then + spr.pos.x = spr.pos.x - 1 + else + spr.flipped = not spr.flipped + end + else + local tx, ty = (spr.pos.x+9)>>3, (spr.pos.y)>>3 + if map.tile(tx,ty) < 16 then + spr.pos.x = spr.pos.x + 1 + else + spr.flipped = not spr.flipped + end + end +end diff --git a/data/modules/items.lua b/data/modules/items.lua index c821708..512ac3c 100644 --- a/data/modules/items.lua +++ b/data/modules/items.lua @@ -20,4 +20,5 @@ items = { { name="berserk", label="berserk", visual={x=16, y=24, w=16, h=16} }, { name="abad", label="abad", visual={x=16, y=0, w=16, h=16} }, { name="dimoni", label="dimoni", visual={x=32, y=0, w=16, h=17} }, + { name="ratpenat", label="ratpenat", visual={x=16, y=64, w=8, h=8} }, } diff --git a/data/modules/templates.lua b/data/modules/templates.lua index 0e0b1e1..d64a438 100644 --- a/data/modules/templates.lua +++ b/data/modules/templates.lua @@ -295,6 +295,22 @@ function me.create(type, options) room = options.room, ia = ia.update_dimoni } + elseif key == "ratpenat" then + sprite = { + type = key, + pos = options.pos,--{ x=100, y=4*12*8+71 }, + size = { w=8,h=8 }, + bbo = { left=1, top=1, right=1, bottom=1 }, + current_frame = 1, + current_wait = 1, + flipped = options.flipped, + surf = surf.load("gfx/ratpenat.gif"), + animation = "ratpenat", + state = me.ALIVE, + enemy = true, + room = options.room, + ia = ia.update_ratpenat + } else error("Template not recognized") end