From a987fb330a997c97bd30a5a9d4b8033bdc783c55 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Fri, 13 Mar 2026 12:13:04 +0100 Subject: [PATCH] - [NEW] Sucubo acabat i funcionant --- data/gfx/misc.gif | Bin 1088 -> 1108 bytes data/maps/rooms_foreground.gif | Bin 2068 -> 2068 bytes data/maps/rooms_items.gif | Bin 1057 -> 1060 bytes data/modules/animations.lua | 13 ++++++++++--- data/modules/ia/palo.lua | 24 ++++++++++++++++++++++++ data/modules/ia/sucubo.lua | 16 ++++++++++++++++ data/modules/items.lua | 27 +++++++++++++++------------ data/modules/templates.lua | 17 ++++++++++++++++- 8 files changed, 81 insertions(+), 16 deletions(-) create mode 100644 data/modules/ia/palo.lua diff --git a/data/gfx/misc.gif b/data/gfx/misc.gif index 4132de7c8e91bba96fe421435926faab31f74881..994286f9ad067ec4d6ae3d73dc07b9386d4faf25 100644 GIT binary patch delta 819 zcmV-31I+xu2-FC$F9CmiCD-A%&)ntS#3VQZ=i=>oWX4ZMw2aI?|1?;+@`KAH zNL+qEK$E7-3OI4P94Ssl5T8C)9%ulq!3QL0%s7~dpg>cnA8>yfs9<2KB%aj*Twr;D zT>u6(8Jr_Z6xz$AW?VLXTEHb$s#SMl&Dx+u-C|J?l+cS;rr*DS0|%Z<*F*r8i0kGx zT(hy>Mu}y@T&lM5&72kF5*~KgZo+9S0`L`GqJZfXLdzOODhLfzr=}4^eOop2W|BjN z8t&Q^g;SaZ42ypiD}rpav#lejg>BmH)T#zF-yVky=#-5>1#92_ce?izDiKSDDbw-g zoYKEL3;B!viPS}pVp970scflmZL2pG0MH+=7UX2XSVJ9m6k5v7#9aSdQ9T#eRr_HB z3MfDYP(cY7_Ql|Ad|gfp<$R|WK7v=0ic1DVHxzd#8grlHsFB86=>Fh$t}m0b8tlm;gR1|CsBpS zaA;0+o_zM{=bwNED(Iku7Ha6Bh`NIpF2E#; z3j`2w0|9?Z8bK;4rH-xuX{488>cXbwOd49IMsQkAsFVg^>Z#j^`hcf|s=Dc{o8t3> zthCNb!mF^xngjzAaKHcq9Kf0ju)-3%>jMXnYJ>v}KpX4;91LJA(X`T5TkWn2IeRO# z!%iUXxP~>V5xBsPD{cVRdi(9L>8iWz1N6T75W0Wru4}8iD8MUjxFrlQz)4>DI|0A} zOt3G%BWSPyBpfKPfCl7lWQ4;IOH6UQ4F95m!xAVEu>>1)EJOewFA(y`6!&WAR}4J7 zvH}uVXT-2Fi%j#v48t6N$~xEVsn0o&?DEUm;Gh7#3e+=nG)gn=bjL8@KyNhkM)UDO|g2s%4j|d9n)cJv=feHqGN%pl12725;2%tw&^CY8G@~)+&H@^N0u6eS zsK5p#z!r;wphVfR9@DB_%a*OzuOm(7Hlpj1Wqw_r`Di^4c~f(aoz}|NKxnnSs-rHrXrq3lZrV))y_&nQFRe5)4eh0Rs$hU}_Yos>-UX0X*=) z0gh(p00XEEg#&zeiyRr%`y|e)YtE>;qT6^sT zq}nR(KixWeEpgla((JR=mN38oi)FX&1nmX@uCRZbYOnw#94N4W2H2vToxc3~3$V87 z{-S}t5-8BG1P3E5L;wpf(D1_m~DCgM$LLDiDAGuV!<=%{lL^ahp2}U~4qC;?Oe=M?;e|&on!sGzris-N)26LmldhXs50A+G2zN06Uznf?ogt diff --git a/data/maps/rooms_foreground.gif b/data/maps/rooms_foreground.gif index b54e58b32d268b349c6b535ca2db185e3251a212..15740ed8cb2fa8cc306767b8c48d80e01eba4cc8 100644 GIT binary patch delta 16 XcmbOtFhyVk7c+Ax1H)!sW_DHpB8CGk delta 16 YcmbOtFhyVk7c=wkKYup!GPAP+05pOH%K!iX diff --git a/data/maps/rooms_items.gif b/data/maps/rooms_items.gif index 7d9346cb9ee064d1b5ca05b9a870c3336816c41f..6af960eb92b8e6aaa3463b9fb602b159bd25891a 100644 GIT binary patch delta 123 zcmV->0EGXc2&4$Gu>*65j1CS^xcIPRi4Pu2o=o|!fXW*UOTLV`v**vCvvLkiakS*d z1P?^iOuDt}*RXf87C1Y$?b`rq<8G*X_dwHuf%_g_u{Tc5!ig(i&U|X1gvOgopYArf d^ydk&dyX#9I`!}1!;=YKAili$^GgE)06X_4KSBTi delta 120 zcmV-;0Ehpi2%!kDu>)|60~97c%($`R$B-clh%Ar+M#GLLQ{K$Ev*)auKT{0tcrn2P z5iyHi&APSgovH=KeoebJfZ4Vi;?6ygbYS1SgIC;*6Ekq($dfCd8Ym(0<>3, (spr.pos.y+1)>>3, (spr.pos.y+2)>>3 + + if rooms.is_outside(tx,ty) then sprites.remove(spr) return end + + 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() + end + end + + spr.dy = spr.dy + spr.ay; + spr.pos.y = spr.pos.y + spr.dy + if spr.flipped then + spr.pos.x = spr.pos.x - 6 + else + spr.pos.x = spr.pos.x + 6 + end +end + diff --git a/data/modules/ia/sucubo.lua b/data/modules/ia/sucubo.lua index 370184a..21b731b 100644 --- a/data/modules/ia/sucubo.lua +++ b/data/modules/ia/sucubo.lua @@ -1,7 +1,23 @@ function ia.update_sucubo(spr) + map.surf(rooms.surf_foreground) + if spr.state == templates.ALIVE then + spr.timer = spr.timer + 1 + if spr.timer==100 then + sprites.set_animation(spr, "sucubo_fire") + elseif spr.timer > 100 then + if spr.current_frame == 2 then + spr.timer = 0 + local palo = templates.create("palo", {pos={x=spr.pos.x, y=spr.pos.y}, flipped=spr.flipped}) + table.insert(sprites.list, palo) + end + end + if spr.animation_finished then + spr.animation_finished = nil + sprites.set_animation(spr, "sucubo_stand") + end 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 diff --git a/data/modules/items.lua b/data/modules/items.lua index 3d8b553..a6c12d6 100644 --- a/data/modules/items.lua +++ b/data/modules/items.lua @@ -1,14 +1,17 @@ items = { - { name="mummy", label="momia", visual={x=0, y=24, w=16, h=16} }, - { name="coin", label="moneda", visual={x=0, y=40, w=8, h=8} }, - { name="torxa", label="torxa", visual={x=0, y=48, w=8, h=16} }, - { name="clau verda", label="clau", visual={x=16, y=48, w=16, h=8} }, - { name="clau groga", label="clau", visual={x=16, y=56, w=16, h=8} }, - { name="clau roja", label="clau", visual={x=32, y=48, w=16, h=8} }, - { name="clau blava", label="clau", visual={x=32, y=56, w=16, h=8} }, - { name="porta verda", label="porta", visual={x=48, y=48, w=8, h=16} }, - { name="porta groga", label="porta", visual={x=56, y=48, w=8, h=16} }, - { name="porta roja", label="porta", visual={x=64, y=48, w=8, h=16} }, - { name="porta blava", label="porta", visual={x=72, y=48, w=8, h=16} }, - { name="sucubo", label="sucubo", visual={x=0, y=64, w=16, h=16} }, + { name="mummy", label="momia", visual={x=0, y=24, w=16, h=16} }, + { name="coin", label="moneda", visual={x=0, y=40, w=8, h=8} }, + { name="torxa", label="torxa", visual={x=0, y=48, w=8, h=16} }, + { name="clau verda", label="clau", visual={x=16, y=48, w=16, h=8} }, + { name="clau groga", label="clau", visual={x=16, y=56, w=16, h=8} }, + { name="clau roja", label="clau", visual={x=32, y=48, w=16, h=8} }, + { name="clau blava", label="clau", visual={x=32, y=56, w=16, h=8} }, + { name="porta verda", label="porta", visual={x=48, y=48, w=8, h=16} }, + { name="porta groga", label="porta", visual={x=56, y=48, w=8, h=16} }, + { name="porta roja", label="porta", visual={x=64, y=48, w=8, h=16} }, + { name="porta blava", label="porta", visual={x=72, y=48, w=8, h=16} }, + { name="sucubo 0", label="sucubo00", visual={x=0, y=64, w=16, h=16} }, + { name="sucubo 25", label="sucubo25", visual={x=0, y=64, w=16, h=16} }, + { name="sucubo 50", label="sucubo50", visual={x=0, y=64, w=16, h=16} }, + { name="sucubo 75", label="sucubo75", visual={x=0, y=64, w=16, h=16} }, } diff --git a/data/modules/templates.lua b/data/modules/templates.lua index a775952..af3e671 100644 --- a/data/modules/templates.lua +++ b/data/modules/templates.lua @@ -138,11 +138,26 @@ function me.create(type, options) surf = surf.load("gfx/sucubo.gif"), animation = "sucubo_stand", state = me.ALIVE, - timer = 0, + timer = tonumber(value), enemy = true, room = options.room, ia = ia.update_sucubo } + elseif key == "palo" then + sprite = { + type = key, + pos = options.pos,--{ x=100, y=4*12*8+71 }, + size = { w=16,h=6 }, + bbo = { left=0, top=0, right=0, bottom=0 }, + current_frame = 1, + current_wait = 1, + flipped = options.flipped, + surf = surf.load("gfx/misc.gif"), + animation = "palo", + dy = -4, + ay = 1, + ia = ia.update_palo + } else error("Template not recognized") end