From 7b63f963b05cab60499b21f4cf4138f9e9153fdb Mon Sep 17 00:00:00 2001 From: "Raimon @ quifisraimon" Date: Wed, 30 Sep 2026 12:58:48 +0200 Subject: [PATCH] =?UTF-8?q?-=20[NEW]=20Alguns=20ajustos=20en=20habitacions?= =?UTF-8?q?=20-=20[FIX]=20C=C3=A0lcul=20del=20tile=20m=C3=A9s=20robust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/maps/rooms_background.gif | Bin 3215 -> 3233 bytes data/maps/rooms_foreground.gif | Bin 4383 -> 4444 bytes data/maps/rooms_items.gif | Bin 1437 -> 1434 bytes data/modules/ia/berserk.lua | 4 ++-- data/modules/ia/brick.lua | 4 ++-- data/modules/ia/bullet.lua | 2 +- data/modules/ia/clau.lua | 2 +- data/modules/ia/coin.lua | 2 +- data/modules/ia/dimoni.lua | 4 ++-- data/modules/ia/gota.lua | 4 ++-- data/modules/ia/hero.lua | 25 +++++++++++++------------ data/modules/ia/mummy.lua | 4 ++-- data/modules/ia/palo.lua | 2 +- data/modules/ia/porta.lua | 2 +- data/modules/ia/rata.lua | 4 ++-- data/modules/ia/ratpenat.lua | 4 ++-- data/modules/sprites.lua | 7 ++++++- 17 files changed, 38 insertions(+), 32 deletions(-) diff --git a/data/maps/rooms_background.gif b/data/maps/rooms_background.gif index efdc7afa89ec6c706b1c4c3bdf8a324393195200..20394471d4f0a386b5412b2a0089d12d5503e11a 100644 GIT binary patch delta 2442 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 diff --git a/data/maps/rooms_foreground.gif b/data/maps/rooms_foreground.gif index d19f52cf30812acf9edda3a1a39d08fade4016cc..01f2974cf005d2fa4abd5818a80bad05b7987bf7 100644 GIT binary patch delta 3618 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 delta 3556 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 TFEL#0K#Wr7Fu)Xd7Z3nDFrcqs delta 376 zcmV-;0f+vY3!MwF3IhZC{QR>G11kZ4@P-HQ1ebgGVK*If#NBmZL-#Rvo^O?r7twPP z8bldE7Z#}DhMzq++h8~uq+Lt@E#TCTH9FLvL%1dBBuVVzS0p$7M9scQ0tC#I71cWQU6f`U~js!qkq*Pl&V z>6U&(?$&EpwgO7)OTTux)vE_*X*6tH#qOo$mSZ8iY)N`ahupN-qPkMEd(kPULEI@M ztw6yJ^z676VwC1p>3, (spr.pos.y+15)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+3), sprites.get_tile(spr.pos.y+15) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 and map.tile(tx,ty+1) > 0 then spr.pos.x = spr.pos.x - advance else spr.flipped = not spr.flipped end else - local tx, ty = (spr.pos.x+12)>>3, (spr.pos.y+15)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+12), sprites.get_tile(spr.pos.y+15) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 and map.tile(tx,ty+1) > 0 then spr.pos.x = spr.pos.x + advance else diff --git a/data/modules/ia/brick.lua b/data/modules/ia/brick.lua index ade2e82..5f33896 100644 --- a/data/modules/ia/brick.lua +++ b/data/modules/ia/brick.lua @@ -3,12 +3,12 @@ function ia.update_brick(spr) if spr.timeout > 0 then spr.timeout = spr.timeout - 1 if spr.timeout == 0 then - local tx, ty = spr.pos.x>>3, spr.pos.y>>3 + local tx, ty = sprites.get_tile(spr.pos.x), sprites.get_tile(spr.pos.y) map.tile(tx,ty,0) end else spr.pos.y = spr.pos.y + 2 - local tx, ty = (spr.pos.x+2)>>3, (spr.pos.y)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+2), sprites.get_tile(spr.pos.y) if rooms.is_outside(tx,ty) then sprites.remove(spr) return end end end diff --git a/data/modules/ia/bullet.lua b/data/modules/ia/bullet.lua index 1cd2532..a830605 100644 --- a/data/modules/ia/bullet.lua +++ b/data/modules/ia/bullet.lua @@ -1,6 +1,6 @@ function ia.update_bullet(spr) - local tx, ty, ty2 = (spr.pos.x+2)>>3, (spr.pos.y+1)>>3, (spr.pos.y+2)>>3 + local tx, ty, ty2 = sprites.get_tile(spr.pos.x+2), sprites.get_tile(spr.pos.y+1), sprites.get_tile(spr.pos.y+2) if rooms.is_outside(tx,ty) then sprites.remove(spr) return end diff --git a/data/modules/ia/clau.lua b/data/modules/ia/clau.lua index df066e3..8ed926b 100644 --- a/data/modules/ia/clau.lua +++ b/data/modules/ia/clau.lua @@ -5,7 +5,7 @@ function ia.update_clau(spr) local x2,y2,w2,h2 = util.aabb(sprites.hero) if util.check_aabb_collision(x1,y1,w1,h1, x2,y2,w2,h2) then if sprites.hero.give_key(spr.color) then - local tx, ty = (spr.pos.x)>>3, (spr.pos.y)>>3 + local tx, ty = sprites.get_tile(spr.pos.x), sprites.get_tile(spr.pos.y) map.surf(rooms.surf_items) map.tile(tx,ty,0) sprites.remove(spr) diff --git a/data/modules/ia/coin.lua b/data/modules/ia/coin.lua index 2cbc399..4e0d2e3 100644 --- a/data/modules/ia/coin.lua +++ b/data/modules/ia/coin.lua @@ -4,7 +4,7 @@ function ia.update_coin(spr) local x1,y1,w1,h1 = util.aabb(spr) local x2,y2,w2,h2 = util.aabb(sprites.hero) if util.check_aabb_collision(x1,y1,w1,h1, x2,y2,w2,h2) then - local tx, ty = (spr.pos.x)>>3, (spr.pos.y)>>3 + local tx, ty = sprites.get_tile(spr.pos.x), sprites.get_tile(spr.pos.y) map.surf(rooms.surf_items) map.tile(tx,ty,0) diff --git a/data/modules/ia/dimoni.lua b/data/modules/ia/dimoni.lua index 8c802af..acdbe0b 100644 --- a/data/modules/ia/dimoni.lua +++ b/data/modules/ia/dimoni.lua @@ -13,14 +13,14 @@ function ia.update_dimoni(spr) end if spr.flipped then - local tx, ty = (spr.pos.x+3)>>3, (spr.pos.y+15)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+3), sprites.get_tile(spr.pos.y+15) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 and map.tile(tx,ty+1) > 0 then spr.pos.x = spr.pos.x - 1 else spr.flipped = not spr.flipped end else - local tx, ty = (spr.pos.x+12)>>3, (spr.pos.y+15)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+12), sprites.get_tile(spr.pos.y+15) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 and map.tile(tx,ty+1) > 0 then spr.pos.x = spr.pos.x + 1 else diff --git a/data/modules/ia/gota.lua b/data/modules/ia/gota.lua index 03744cd..b2266e3 100644 --- a/data/modules/ia/gota.lua +++ b/data/modules/ia/gota.lua @@ -27,7 +27,7 @@ function gota_esguita(spr) end function ia.update_gota_caiguent(spr) - local tx, ty = (spr.pos.x+4)>>3, (spr.pos.y+4)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+4), sprites.get_tile(spr.pos.y+4) if rooms.is_outside(tx,ty) then sprites.remove(spr) return end @@ -49,7 +49,7 @@ function ia.update_gota_caiguent(spr) end function ia.update_gota_esguit(spr) - local tx, ty = (spr.pos.x+4)>>3, (spr.pos.y+4)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+4), sprites.get_tile(spr.pos.y+4) if rooms.is_outside(tx,ty) then sprites.remove(spr) return end diff --git a/data/modules/ia/hero.lua b/data/modules/ia/hero.lua index a3a95b9..b5c6c65 100644 --- a/data/modules/ia/hero.lua +++ b/data/modules/ia/hero.lua @@ -3,7 +3,7 @@ function ia.update_hero() if sprites.hero.state == templates.DEAD then if sprites.hero.cooldown > 0 then - local tx1, tx2, ty = (sprites.hero.pos.x+4)>>3, (sprites.hero.pos.x+11)>>3, (sprites.hero.pos.y+1)>>3 + local tx1, tx2, ty = sprites.get_tile(sprites.hero.pos.x+4), sprites.get_tile(sprites.hero.pos.x+11), sprites.get_tile(sprites.hero.pos.y+1) local tile_under_me1 = map.tile(tx1,ty+2) local tile_under_me2 = map.tile(tx2,ty+2) if tile_under_me1 == 0 and tile_under_me2 == 0 then @@ -57,7 +57,7 @@ function ia.update_hero() -- Si li han pegat... if sprites.hero.has_been_hit then if sprites.hero.flipped then - local tx, ty = (sprites.hero.pos.x+12)>>3, (sprites.hero.pos.y+16)>>3 + local tx, ty = sprites.get_tile(sprites.hero.pos.x+12), sprites.get_tile(sprites.hero.pos.y+16) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 then if tx>rooms.pos.x+19 then game.change_room(1,0) @@ -66,7 +66,7 @@ function ia.update_hero() end end else - local tx, ty = (sprites.hero.pos.x+3)>>3, (sprites.hero.pos.y+16)>>3 + local tx, ty = sprites.get_tile(sprites.hero.pos.x+3), sprites.get_tile(sprites.hero.pos.y+16) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 then if tx 0 then anim = "hero_jump" move_anim = "hero_jump" - local tx1, tx2, ty = (sprites.hero.pos.x+4)>>3, (sprites.hero.pos.x+11)>>3, (sprites.hero.pos.y)>>3 + local tx1, tx2, ty = sprites.get_tile(sprites.hero.pos.x+4), sprites.get_tile(sprites.hero.pos.x+11), sprites.get_tile(sprites.hero.pos.y) --draw.rect(tx1<<3,ty<<3,8,8,8) --draw.rect(tx2<<3,ty<<3,8,8,28) if map.tile(tx1,ty) < 16 and map.tile(tx2,ty) < 16 then @@ -113,14 +113,14 @@ function ia.update_hero() else -- SI NO ESTÀ BOTANT... -- SI ESTÀ EN UNES ESCALERES... - local txm, ty = (sprites.hero.pos.x+8)>>3, (sprites.hero.pos.y+8)>>3 + local txm, ty = sprites.get_tile(sprites.hero.pos.x+8), sprites.get_tile(sprites.hero.pos.y+8) if (map.tile(txm,ty) > 0 and map.tile(txm,ty) < 16) or (map.tile(txm,ty+1) > 0 and map.tile(txm,ty+1) < 16) then anim = "hero_stairs_idle" move_anim = "hero_stairs" -- SI PULSA AMUNT... if key.down(key.UP) or pad.down(pad.UP) then anim = move_anim - local tx1, tx2, ty = (sprites.hero.pos.x+8)>>3, (sprites.hero.pos.x+11)>>3, (sprites.hero.pos.y)>>3 + local tx1, tx2, ty = sprites.get_tile(sprites.hero.pos.x+8), sprites.get_tile(sprites.hero.pos.x+11), sprites.get_tile(sprites.hero.pos.y) if map.tile(tx1,ty) < 16 then --or map.tile(tx2,ty) < 16 then if ty+1>3, (sprites.hero.pos.x+11)>>3, (sprites.hero.pos.y+1)>>3 + local tx1, tx2, ty = sprites.get_tile(sprites.hero.pos.x+4), sprites.get_tile(sprites.hero.pos.x+11), sprites.get_tile(sprites.hero.pos.y+1) if map.tile(tx1,ty+2) < 16 or map.tile(tx2,ty+2) < 16 then if ty+2>rooms.pos.y+12 then game.change_room(0,1) @@ -142,12 +142,13 @@ function ia.update_hero() end else -- SI NO ESTÀ EN UNES ESCALERES... - local tx1, txm, tx2, ty = (sprites.hero.pos.x+4)>>3, (sprites.hero.pos.x+8)>>3, (sprites.hero.pos.x+11)>>3, (sprites.hero.pos.y+1)>>3 + local tx1, txm, tx2, ty = sprites.get_tile(sprites.hero.pos.x+4), sprites.get_tile(sprites.hero.pos.x+8), sprites.get_tile(sprites.hero.pos.x+11), (sprites.hero.pos.y+1)/8 -- SI ESTÀ CAIGUENT... local tile_under_me1 = map.tile(tx1,ty+2) local tile_under_me2 = map.tile(tx2,ty+2) if tile_under_me1 == 0 and tile_under_me2 == 0 then - if rooms.pos.y<84 and ty+2>rooms.pos.y+12 then + + if rooms.pos.y<84 and sprites.hero.pos.y>=0 and ty+2>rooms.pos.y+12 then game.change_room(0,1) else if sprites.hero.pos.y >= 808 then @@ -177,7 +178,7 @@ function ia.update_hero() 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 anim = "hero_stairs" - --local tx1, tx2, ty = (sprites.hero.pos.x+4)>>3, (sprites.hero.pos.x+11)>>3, (sprites.hero.pos.y+1)>>3 + --local tx1, tx2, ty = sprites.get_tile(sprites.hero.pos.x+4), sprites.get_tile(sprites.hero.pos.x+11), sprites.get_tile(sprites.hero.pos.y+1) --if map.tile(tx1,ty+2) < 16 or map.tile(tx2,ty+2) < 16 then sprites.hero.pos.x = (txm << 3)-4 sprites.hero.pos.y = sprites.hero.pos.y + 1 @@ -204,7 +205,7 @@ function ia.update_hero() if key.down(key.LEFT) or pad.down(pad.LEFT) then sprites.hero.flipped = true anim = move_anim - local tx, ty = (sprites.hero.pos.x+3)>>3, (sprites.hero.pos.y+16)>>3 + local tx, ty = sprites.get_tile(sprites.hero.pos.x+3), sprites.get_tile(sprites.hero.pos.y+16) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 then if tx>3, (sprites.hero.pos.y+16)>>3 + local tx, ty = sprites.get_tile(sprites.hero.pos.x+12), sprites.get_tile(sprites.hero.pos.y+16) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 then if tx>rooms.pos.x+19 then game.change_room(1,0) diff --git a/data/modules/ia/mummy.lua b/data/modules/ia/mummy.lua index 17751b2..c7d39e0 100644 --- a/data/modules/ia/mummy.lua +++ b/data/modules/ia/mummy.lua @@ -13,14 +13,14 @@ function ia.update_mummy(spr) end if spr.flipped then - local tx, ty = (spr.pos.x+3)>>3, (spr.pos.y+15)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+3), sprites.get_tile(spr.pos.y+15) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 and map.tile(tx,ty+1) > 0 then spr.pos.x = spr.pos.x - 1 else spr.flipped = not spr.flipped end else - local tx, ty = (spr.pos.x+12)>>3, (spr.pos.y+15)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+12), sprites.get_tile(spr.pos.y+15) if map.tile(tx,ty) < 16 and map.tile(tx,ty-1) < 16 and map.tile(tx,ty+1) > 0 then spr.pos.x = spr.pos.x + 1 else diff --git a/data/modules/ia/palo.lua b/data/modules/ia/palo.lua index bedc6a5..fff3559 100644 --- a/data/modules/ia/palo.lua +++ b/data/modules/ia/palo.lua @@ -1,6 +1,6 @@ function ia.update_palo(spr) - local tx, ty, ty2 = (spr.pos.x+2)>>3, (spr.pos.y+1)>>3, (spr.pos.y+2)>>3 + local tx, ty, ty2 = sprites.get_tile(spr.pos.x+2), sprites.get_tile(spr.pos.y+1), sprites.get_tile(spr.pos.y+2) if rooms.is_outside(tx,ty) then sprites.remove(spr) return end diff --git a/data/modules/ia/porta.lua b/data/modules/ia/porta.lua index e76c9a6..15b02d3 100644 --- a/data/modules/ia/porta.lua +++ b/data/modules/ia/porta.lua @@ -12,7 +12,7 @@ function ia.update_porta(spr) end elseif spr.state == templates.DYING then if spr.current_frame == 15 then - local tx, ty = (spr.pos.x)>>3, (spr.pos.y)>>3 + local tx, ty = sprites.get_tile(spr.pos.x), sprites.get_tile(spr.pos.y) map.surf(rooms.surf_items) map.tile(tx,ty,0) map.surf(rooms.surf_foreground) diff --git a/data/modules/ia/rata.lua b/data/modules/ia/rata.lua index b121b46..25b6758 100644 --- a/data/modules/ia/rata.lua +++ b/data/modules/ia/rata.lua @@ -12,14 +12,14 @@ function ia.update_rata(spr) end if spr.flipped then - local tx, ty = (spr.pos.x-1)>>3, (spr.pos.y+7)>>3 + local tx, ty = sprites.get_tile(spr.pos.x-1), sprites.get_tile(spr.pos.y+7) if map.tile(tx,ty) < 16 and map.tile(tx,ty+1) > 0 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+7)>>3 + local tx, ty = sprites.get_tile(spr.pos.x+9), sprites.get_tile(spr.pos.y+7) if map.tile(tx,ty) < 16 and map.tile(tx,ty+1) > 0 then spr.pos.x = spr.pos.x + 1 else diff --git a/data/modules/ia/ratpenat.lua b/data/modules/ia/ratpenat.lua index e38aa30..80632b1 100644 --- a/data/modules/ia/ratpenat.lua +++ b/data/modules/ia/ratpenat.lua @@ -12,14 +12,14 @@ function ia.update_ratpenat(spr) end if spr.flipped then - local tx, ty = (spr.pos.x-1)>>3, (spr.pos.y)>>3 + local tx, ty = sprites.get_tile(spr.pos.x-1), sprites.get_tile(spr.pos.y) 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 + local tx, ty = sprites.get_tile(spr.pos.x+9), sprites.get_tile(spr.pos.y) if map.tile(tx,ty) < 16 then spr.pos.x = spr.pos.x + 1 else diff --git a/data/modules/sprites.lua b/data/modules/sprites.lua index d9855c2..00f1af1 100644 --- a/data/modules/sprites.lua +++ b/data/modules/sprites.lua @@ -10,6 +10,10 @@ sprites = { last_safe_pos = { x=28, y=4*13*8+79 } } +function sprites.get_tile(num) + return math.floor(num/8); +end + function sprites.remove(sprite) for i,v in ipairs(sprites.list) do if v == sprite then @@ -72,7 +76,8 @@ function sprites.init() keys = {}, stairs = false, hit = ia.hero_hit, - give_key = ia.hero_give_key + give_key = ia.hero_give_key, + falling = false } end