From 51f267284ebbc9a5c19eb789d09f5375c5cedb3f Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Fri, 27 Mar 2026 20:37:06 +0100 Subject: [PATCH] =?UTF-8?q?-=20[FIX]=20Retocs=20en=20habitacions=20-=20[FI?= =?UTF-8?q?X]=20Quan=20mor,=20reapareix=20en=20l'habitaci=C3=B3=20que=20to?= =?UTF-8?q?ca=20-=20[FIX]=20Despr=C3=A9s=20de=20morir,=20al=20agafar=20una?= =?UTF-8?q?=20clau=20es=20tornava=20tot=20roig=20infern=20(que=20por)=20-?= =?UTF-8?q?=20[FIX]=20Si=20no=20hi=20havia=20objectes=20amb=20llum=20en=20?= =?UTF-8?q?l'habitaci=C3=B3=20on=20mories,=20mai=20resucitaves=20-=20[FIX]?= =?UTF-8?q?=20Al=20resucitar,=20totes=20les=20llums=20s'encenen=20desde=20?= =?UTF-8?q?cero,=20no=20nomes=20la=20teua=20-=20[FIX]=20Quan=20t'havien=20?= =?UTF-8?q?pegat,=20no=20podies=20disparar=20durant=20el=20cooldown=20-=20?= =?UTF-8?q?[FIX]=20Menos=20posibilitats=20de=20que=20la=20"safe=20position?= =?UTF-8?q?"=20estiga=20en=20un=20lloc=20mortal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/maps/rooms_foreground.gif | Bin 3498 -> 3500 bytes data/maps/rooms_items.gif | Bin 1313 -> 1313 bytes data/modules/ia/hero.lua | 14 ++++++++--- data/modules/rooms.lua | 5 ++++ data/modules/sprites.lua | 41 ++++++++++++++++++++++++++------- data/stages/game.lua | 9 ++++++-- 6 files changed, 56 insertions(+), 13 deletions(-) diff --git a/data/maps/rooms_foreground.gif b/data/maps/rooms_foreground.gif index 9e839fe5a2f2ad1925fb691b2324fa378dac4f2e..127dc240a5400c74f456a7c962f636f8ce4e844b 100644 GIT binary patch delta 892 zcmV-?1B3jk8>}0!3IhZC{QR>G17rpRW+VWUbO}X&`0%Qqgna5r5HO5WoWn#48$^L2 zcCTuQ!{a?pvcTUeu^RTElz6#HTl*?g&`N|~N*#zk8@{d_lMCb^r`EA9aj#X_P`8Op zmQt8G>o);#x!gJ#FHx=WD$5E=9V;0BD9M{+S|e#(6Q@BBKaQ*vW9b&98U(x&^|MVu zHt4i}puv4QUMEaWxK3wQF%60v9E^!p=&RX9lzULap-Ft&G$dI&FaQBFYs}(UeuXJn z37klOT;++dK@DQgj!vA)LNtCyGGMbL8s?~D5rz~nOeyGe)Z$mH1&!7$A4zHOqVzz{Pka$0;Y~U%90Bl zIQIM#2zaz&lggkPBmlp%;UJ3$bsrtU-| zIqwK@hLcnaARg~5=K=Rp$$w;$(t+X>5X_xY5tbQ9V8A_&6l8aTladP}1VQ%#1e3T6 zF()<_&jer}6R+sI<{qJy4BXPax*3tsWL>k&57rcxv_33uIry2APm>S~9)Agb1J#+1 zr$yg3x!+`9=aP{y>>(cYWhy}*!<1W%@)JzQbRLmi!& zF6c*r6ToBuFiXw@h>Q5j6}9@htmS0N^# zNQ|k+a@RE)9OsK8u#C-UDXkZc&xngGCw~9ph<+%57hxcMxMrMaf!Vc&#VCqA(Ti6| SeViy|>6nT+VS@ny00BGaNO_I` delta 889 zcmV-<1BU#p8>$0MKW{*Og;(ef;CpI@TrbwF(>RHj&9v z3NvT@CIBv%TS^@$sxw|?SwV?o1p_7jd2>u_B#mq0H0Ytnk(FXB-J(>3fLEe@wkgO2 zofb5IxDUtcgvkll>C7soL2-j~G0_NpHM@v%4{9(piBFq`BWni+AYkT<@tUaaxr8ZM z37klKOy!BNK@DNfj!vA)LNtCyGGMbL8s>;&5rz~nOeyGe)Z$mH1&!7$A4zHOqVzz{Pka$0;Y~UijoT) zIQ0Az2zaz&lggkPBmlp%;UJ3$bsrtU-| zIqwK@f|FDWARg@;=K=Q;$$w;$(t+X>5X_xY5tbQ9V8A_&6l8aSladP}1c9j`0F$^2 zF()(@&jer}6R+sI<{qJy4BXPax*2iMWL2}w57rcxv_33uIk=fIH>(cIWhy}*!<1W%@)JzQbRLmi!& zF6fsLI-z6$Fi=q^0db(La7MzJ7NKm{RigCe1Q zmIDD3fP(sU7A%+>6+(PRgntwz2saQTad($w_Gfu##Dm9DRvA%uA%!K!S0PP!6w)#% zaj`~Bvl%3DZAOR@cfk{P@nWP>f(1c;P!TBXmueyy6=0|ltsy4AfllP(5j-&(P7!NB zh!`PofKbsWLsmJ5cn}PT8JJN)Q;&0lkQj;YF%v%r9FIXzBanL!*nW7BArMY+h9prZ z7BO@L5sDu;e5i;h1ILMt*NUj9E($m_3nCGoVIVihfqTdpjnaXZ!W8dueSLTpV&aLz zn0hRCU8BKqm7$CyaDA=!jLjI081qLu@h^5Y2BL>*rim7qU1&&*pvV)vcutv^ PD4G~$>4=LG5fA`76%Tox diff --git a/data/maps/rooms_items.gif b/data/maps/rooms_items.gif index f16d438d5c12db5a55857a12df77bc65abfeea3b..4e7e1533b239344b736c57521581d222396c48db 100644 GIT binary patch delta 16 YcmZ3;wUBEA7c=wkKYup!GK(+)05x|7;{X5v delta 16 XcmZ3;wUBEA7c;Zj_RX7lnMIfYE4BoX diff --git a/data/modules/ia/hero.lua b/data/modules/ia/hero.lua index 432f05e..4cac50c 100644 --- a/data/modules/ia/hero.lua +++ b/data/modules/ia/hero.lua @@ -28,6 +28,11 @@ function ia.update_hero() local move_anim = "hero_walk" -- Si estem en cooldown desde l'ultim dispar, decrementem el contador + -- Si estem en cooldown desde l'ultim dispar, decrementem el contador + if sprites.hero.gun_cooldown > 0 then + sprites.hero.gun_cooldown = sprites.hero.gun_cooldown - 1 + end + if sprites.hero.cooldown > 0 then sprites.hero.cooldown = sprites.hero.cooldown - 1 end @@ -167,7 +172,7 @@ function ia.update_hero() sprites.hero.pos.y = (ty<<3)-1 end anim = "hero_stand" - sprites.save_safe_pos() + if sprites.hero.state == templates.ALIVE then sprites.save_safe_pos() end -- SI ESTÀ SOBRE UNES ESCALERES I POLSA AVALL... if (map.tile(txm,ty+2) < 16 and map.tile(txm,ty+2) > 0) then if key.down(key.DOWN) or pad.down(pad.DOWN) then @@ -184,9 +189,9 @@ function ia.update_hero() sprites.hero.jumping = 17 -- SI POLSA DISPAR... - elseif (sprites.hero.cooldown==0) and (key.down(key.Z) or pad.down(pad.B)) then + elseif (sprites.hero.gun_cooldown==0) and (key.down(key.Z) or pad.down(pad.B)) then sprites.hero.shooting = true - sprites.hero.cooldown = 20 + sprites.hero.gun_cooldown = 20 local bullet = templates.create("bullet", {pos={x=sprites.hero.pos.x, y=sprites.hero.pos.y+7}, flipped=sprites.hero.flipped}) table.insert(sprites.list, bullet) anim = "hero_shoot" @@ -244,6 +249,7 @@ function ia.hero_hit(live) if sprites.hero.lives == 0 then sprites.hero.state = templates.DEAD + sprites.hero.invisible = nil sprites.hero.surf = surf.load("gfx/mummy.gif") sprites.set_animation(sprites.hero, "mummy_dying") sprites.hero.jumping = 0 @@ -276,4 +282,6 @@ function ia.hero_reset() sprites.hero.flipped = false sprites.hero.light = 100 sprites.hero.pos = {x=sprites.last_safe_pos.x,y=sprites.last_safe_pos.y} + rooms.go_to_room(sprites.last_safe_room) + palfade.init() end \ No newline at end of file diff --git a/data/modules/rooms.lua b/data/modules/rooms.lua index e5c7f51..2e14985 100644 --- a/data/modules/rooms.lua +++ b/data/modules/rooms.lua @@ -143,3 +143,8 @@ function rooms.toggle_visibility(layer) rooms.visibility = rooms.visibility | layer end end + +function rooms.go_to_room(room) + rooms.pos.x = (room % 8) * 20 + rooms.pos.y = (room // 8) * 13 +end diff --git a/data/modules/sprites.lua b/data/modules/sprites.lua index f658341..210cc92 100644 --- a/data/modules/sprites.lua +++ b/data/modules/sprites.lua @@ -21,11 +21,14 @@ function sprites.remove(sprite) end function sprites.save_safe_pos() - local room = (rooms.pos.x//20) + (rooms.pos.y//12) * 8 - if room ~= sprites.last_safe_room then - sprites.last_safe_room = room - sprites.last_safe_pos = {x=sprites.hero.pos.x, y=sprites.hero.pos.y} - end + local room = rooms.current() + --local hero_room = (sprites.hero.pos.x//160)*20 + ((sprites.hero.pos.y//104)*12) * 8 + --if room ~= hero_room then return end + if room == sprites.last_safe_room then return end + + sprites.last_safe_room = room + sprites.last_safe_pos = {x=sprites.hero.pos.x, y=sprites.hero.pos.y} + --print("safepos: " .. sprites.last_safe_pos.x .. ", " .. sprites.last_safe_pos.y) end function sprites.add_from_room(rx,ry) @@ -63,6 +66,7 @@ function sprites.init() light_ox = 8, light_oy = 8, cooldown = 0, + gun_cooldown = 0, jump_throttle = 0, lives = 4, keys = {}, @@ -124,9 +128,9 @@ function sprites.lights_out() spr.light = value if finished then spr.light = nil - if sprites.hero.state == templates.DEAD then - game.restart() - end + --if sprites.hero.state == templates.DEAD then + -- game.restart() + --end end end ) @@ -137,11 +141,32 @@ function sprites.lights_out() sprites.hero.light = value if finished then sprites.hero.light = nil + game.restart() end end ) end +function sprites.lights_in() + for i,spr in ipairs(sprites.list) do + if spr.light then + tweening.add(0,spr.light,0.5,easing.linear, + function(value,n,finished) + spr.light = value + end + ) + end + end +-- tweening.add(sprites.hero.light,0,0.5,easing.linear, +-- function(value,n,finished) +-- sprites.hero.light = value +-- if finished then +-- sprites.hero.light = nil +-- end +-- end +-- ) +end + function sprites.draw(ignore_selected) if app.update ~= editor.update then surf.target(game.circ_buf) diff --git a/data/stages/game.lua b/data/stages/game.lua index 62a5131..3180712 100644 --- a/data/stages/game.lua +++ b/data/stages/game.lua @@ -37,12 +37,13 @@ game = { end, restart = function() - rooms.reload() + --rooms.reload() + ia.hero_reset() sprites.add_from_room(rooms.pos.x, rooms.pos.y) pal.set(palfade.original) - ia.hero_reset() sprites.hero.light = 0 tweening.add(0,100,1,easing.linear,function(value,n,finished)sprites.hero.light = value end) + sprites.lights_in() score.init(true) end, @@ -72,6 +73,10 @@ game = { score.draw() + view.origin(0,0) + draw.text("safe: "..sprites.last_safe_room,1,96,28) + --draw.text(sprites.hero.pos.x ..","..sprites.hero.pos.y,14,89,28) + if key.press(key.ESCAPE) or key.press(key.F9) then rooms.reload() sprites.add_from_room(rooms.pos.x, rooms.pos.y)