From 4d13ed4eb0f656124b73f303e05ce184b7863905 Mon Sep 17 00:00:00 2001 From: JailGamer Date: Fri, 22 May 2026 20:02:22 +0200 Subject: [PATCH] =?UTF-8?q?[ENH]=20Tile=20de=20botella=20[NEW]=20Indicacio?= =?UTF-8?q?ns=20per=20a=20anar=20a=20la=20mansi=C3=B3=20de=20Batman=20al?= =?UTF-8?q?=20obrir=20totes=20les=20portes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/game.lua | 145 ++++++++++++++++++++++--------------------- data/sign.lua | 44 +++++++++++++ data/stage1.lua | 42 +++++++++++++ data/stage1_boss.lua | 2 +- data/tiles.gif | Bin 12192 -> 12235 bytes 5 files changed, 162 insertions(+), 71 deletions(-) create mode 100644 data/sign.lua diff --git a/data/game.lua b/data/game.lua index 51100ce..8a5a724 100644 --- a/data/game.lua +++ b/data/game.lua @@ -29,6 +29,7 @@ require "tiles_layer2" require "batvio" -- require "live_scene" require "copter" +require "sign" local DEBUG = false @@ -153,6 +154,10 @@ function load_stage() if stage_init then stage_init() stage_loaded = stage + stage_update = stages["stage"..stage.."_update"] + stage_draw_back = stages["stage"..stage.."_draw_back"] + stage_draw_middle = stages["stage"..stage.."_draw_middle"] + stage_draw_front = stages["stage"..stage.."_draw_front"] print("Stage "..stage.." loaded") else print("No se ha cargado la fase "..stage) @@ -294,76 +299,76 @@ function update_game() end end -function pause() - print("pause()") - -- surf.source(0) - -- surf.target(back) - -- draw.surf(0,0,128,96,0,0) - -- surf.target(0) - -- surf.source(tiles) - -- pausa_option=1 - -- pause_old_update=game_update - -- game_update=update_pause -end - -function update_pause() - draw.rectf(16,16,97,65,16) - draw.rect(16,16,97,65,15) - draw.text("PAUSA",54,20,15) - - menu_count=menu_count+1 - local parpadeig=false - if menu_count>=20 then - parpadeig=true - if menu_count>40 then menu_count=0 end - end - draw.rect(28,33+(10*(pausa_option-1)),73,9,14) - if (not parpadeig) then draw.rect(28,33+(10*(pausa_option-1)),73,9,13) end - - --draw.rect(28,33+(10*(pausa_option-1)),73,9,13) - - draw.text("CONTINUAR",30,35,14) - draw.text("MUSICA:",30,45,14) - if music.enabled() then - draw.text("SI",91,45,15) - else - draw.text("NO",91,45,15) - end - draw.text("SÓ:",30,55,14) - if sound.enabled() then - draw.text("SI",91,55,15) - else - draw.text("NO",91,55,15) - end - draw.text("EIXIR",30,65,14) - - if key.press(key.ESCAPE) then - surf.source(back) - draw.surf(0,0,128,96,0,0) - surf.source(tiles) - game_update = pause_old_update - elseif key.press(keyDown) or pad.press(btnDown) then - pausa_option = pausa_option + 1 - if pausa_option == 5 then pausa_option = 1 end - elseif key.press(keyUp) or pad.press(btnUp) then - pausa_option = pausa_option - 1 - if pausa_option == 0 then pausa_option = 4 end - elseif key.press(keyShoot) or pad.press(btnShoot) then - if pausa_option==1 then - surf.source(back) - draw.surf(0,0,128,96,0,0) - surf.source(tiles) - game_update = pause_old_update - elseif pausa_option==2 then - music.enabled(not music.enabled()) - elseif pausa_option==3 then - sound.enabled(not sound.enabled()) - else - game_exit() - game_init(true) - end - end -end +-- function pause() +-- print("pause()") +-- -- surf.source(0) +-- -- surf.target(back) +-- -- draw.surf(0,0,128,96,0,0) +-- -- surf.target(0) +-- -- surf.source(tiles) +-- -- pausa_option=1 +-- -- pause_old_update=game_update +-- -- game_update=update_pause +-- end +-- +-- function update_pause() +-- draw.rectf(16,16,97,65,16) +-- draw.rect(16,16,97,65,15) +-- draw.text("PAUSA",54,20,15) +-- +-- menu_count=menu_count+1 +-- local parpadeig=false +-- if menu_count>=20 then +-- parpadeig=true +-- if menu_count>40 then menu_count=0 end +-- end +-- draw.rect(28,33+(10*(pausa_option-1)),73,9,14) +-- if (not parpadeig) then draw.rect(28,33+(10*(pausa_option-1)),73,9,13) end +-- +-- --draw.rect(28,33+(10*(pausa_option-1)),73,9,13) +-- +-- draw.text("CONTINUAR",30,35,14) +-- draw.text("MUSICA:",30,45,14) +-- if music.enabled() then +-- draw.text("SI",91,45,15) +-- else +-- draw.text("NO",91,45,15) +-- end +-- draw.text("SÓ:",30,55,14) +-- if sound.enabled() then +-- draw.text("SI",91,55,15) +-- else +-- draw.text("NO",91,55,15) +-- end +-- draw.text("EIXIR",30,65,14) +-- +-- if key.press(key.ESCAPE) then +-- surf.source(back) +-- draw.surf(0,0,128,96,0,0) +-- surf.source(tiles) +-- game_update = pause_old_update +-- elseif key.press(keyDown) or pad.press(btnDown) then +-- pausa_option = pausa_option + 1 +-- if pausa_option == 5 then pausa_option = 1 end +-- elseif key.press(keyUp) or pad.press(btnUp) then +-- pausa_option = pausa_option - 1 +-- if pausa_option == 0 then pausa_option = 4 end +-- elseif key.press(keyShoot) or pad.press(btnShoot) then +-- if pausa_option==1 then +-- surf.source(back) +-- draw.surf(0,0,128,96,0,0) +-- surf.source(tiles) +-- game_update = pause_old_update +-- elseif pausa_option==2 then +-- music.enabled(not music.enabled()) +-- elseif pausa_option==3 then +-- sound.enabled(not sound.enabled()) +-- else +-- game_exit() +-- game_init(true) +-- end +-- end +-- end function print_analisis_field ( field ) local field_state=" " diff --git a/data/sign.lua b/data/sign.lua new file mode 100644 index 0000000..a895c1e --- /dev/null +++ b/data/sign.lua @@ -0,0 +1,44 @@ +sign={} + +function sign.new(_hab, _x, _y, _angle,_flip) + local world_x, world_y = coords.room_to_world(_hab,_x,_y) + return {name="sign", + hab=_hab, + x=world_x, + y=world_y, + w=16, + h=16, + flip=_flip, + --frame=19, + wait=0, + step=0, + can_warp=false, + warping=false, + shrink=1, + d_shrink=1, + angle=_angle, + d_angle=0, + --hit=sign.hit, + update=sign.update, + draw=sign.draw, + --jumpfwd=false, + --dying=false, + --death_time=40, + --anim={19,19,20,21}, + bb={x=0,y=0,w=16,h=16}, + enabled= true, + disable_reason="" } +end + +function sign:draw() + if not self.enabled then return end + local scr_x, scr_y = viewp:screen_coords( self.x, self.y ) + draw.surf(240,224,self.w,self.h,scr_x,scr_y,self.w,self.h,self.flip) +end + +function sign:update() + self.wait = (self.wait + 1) % 18 + if (self.wait==0) then + self.enabled = not self.enabled + end +end diff --git a/data/stage1.lua b/data/stage1.lua index cfbe207..5265aea 100644 --- a/data/stage1.lua +++ b/data/stage1.lua @@ -1,15 +1,18 @@ stages = {} +stages.actors={} stages.boss_loaded = false stages.boss_ready = false stages.boss_finished = false boss = nil function stages.stage1_init() + stages.actors={} mapa = stage1_mapa tiletype={void=0,nonpc=1,stair=2,switch=3,half=4,block=5} mapa.wait=0 mapa.step=0 + mapa.tobatcave = false load_tilemap( sf_mapa ) llibre.init() @@ -179,6 +182,8 @@ function stages.stage1_init() tiles_layer2.new(76,3,2,128,208,16,16, tiles_layer2.update_aranya, tiles_layer2.draw_aranya) tiles_layer2.new(78,6,2,128,208,16,16, tiles_layer2.update_aranya, tiles_layer2.draw_aranya) + -- table.insert( actors, sign.new(10, 6 , 3, 0, false) ) -- L + local abad_x, abad_y = coords.room_to_world ( 10, 4, 3 ) -- local abad_x, abad_y = coords.room_to_world ( 54, 8, 3 ) -- table.insert( actors, trigger.new(8,4,3,triggers.escena_stage1_ending,"stage1 ending","TR09") ) @@ -197,6 +202,32 @@ function stages.stage1_init() stages.boss_loaded = false end +function stages.stage1_toBatcave() + local switches_enabled = 0 + + if mapa.tobatcave then return end + + for key,actor in pairs(actors) do + if actor.type=="switch" and actor.enabled then + switches_enabled = switches_enabled +1 + end + end + + if switches_enabled<=2 then + mapa.tobatcave = true + table.insert( stages.actors, sign.new(76, 8 , 1, 0, true) ) -- L + table.insert( stages.actors, sign.new(73, 10, 3, 0, true) ) -- L + table.insert( stages.actors, sign.new(72, 5 , 1, 0, true) ) -- L + -- table.insert( stages.actors, sign.new(61, 6 , 1, 0, true) ) -- L + -- table.insert( stages.actors, sign.new(50, 9 , 1, 0, true) ) -- L + table.insert( stages.actors, sign.new(41, 5, 3, 0, false) ) -- R + -- table.insert( actors, sign.new(40, 10, 3, 0, false) ) -- R + -- table.insert( actors, sign.new(42, 1 , 2, 90, false) ) -- D + table.insert( stages.actors, sign.new(53, 4 , 3, 0, false) ) -- R + print("GO TO BATCAVE") + end +end + function stages.stage1_update() -- print("stage1_update") -- fireball.update() @@ -204,10 +235,21 @@ function stages.stage1_update() -- -- Requeriment: tindre mitja clau -- premiere.healer_init() -- end + stages.stage1_toBatcave() + for key,actor in pairs(stages.actors) do + if viewp:inside(actor.x, actor.y, actor.w, actor.h) and actor~=abad then + actor:update() + end + end end function stages.stage1_draw_back() -- print("stage1_draw_back") + for key,actor in pairs(stages.actors) do + if viewp:inside(actor.x, actor.y, actor.w, actor.h) and actor~=abad then + actor:draw() + end + end end function stages.stage1_draw_middle() diff --git a/data/stage1_boss.lua b/data/stage1_boss.lua index ace37b9..b2a61b4 100644 --- a/data/stage1_boss.lua +++ b/data/stage1_boss.lua @@ -86,7 +86,7 @@ end function stages.stage1_boss_intro_update() if stage1_boss.time==0 then - -- start_scene(scenes.lluita_imp, nil, false) + start_scene(scenes.lluita_imp, nil, false) stages.stage1_boss_ready() end diff --git a/data/tiles.gif b/data/tiles.gif index a9379484ce252f752f3ea75a3575ea540b715752..443e3792339934dfe5c1e40a04e02fb544457fef 100644 GIT binary patch delta 1471 zcmV;w1wi_sU&~(%M@dFFH(>w)00HL=u?!(9f2jrdDBgw@)pqWLe$s9p4x_6?9pwbkUbt=Z*)dy_Xh6xmTv}V>_CwYj!yZQI6h zf4i1PmiF!Q7HxSYZLJ`RCpmDGNC@RNO$dnaqoM2nh;N8E8XC7%l~w@h7?%c^Y=yvZ zm2lGyw{6RY%-H_xz&0G_9{z0JIC0EYaUT!wT``CkpKn=#5v^u`#m;gYH__@&fHv_8 z>;`h(6!P27&Hi@NX&!G8@73uYaPdCqe?Ar5`!Mhn5A!I;qn)7gxlYY14QJ~ zX7JV4>(M=!u!sqT_$^jHx47l-SC39dZ%0U<8W2D7^A_3!_SGKdb)s-`!ULIL2X;Ka z^4sF`V?R%2Z*T{9$B6!z!~{?PI=#EUa-Le}ZG!!8TZi-Kw2V3rCrJ9uGFjD=V12@wmSiFkNd zc6m37NF8p_rg`%eCnFD9BoFtUM{NP_jh6yH9tIy-gloi>h}O3BwNCnOulc6`?S04j zFV*>;?|9+{`K>_k@w;!QL2Owx`ha$KjgND&PYIUL9F*Xjxj1{fu^M`5e|y!K3%!wh zxwz4;3qGw{d#cfzynlO5>3c7!8QDIGzrPKmFcGWK9K_H2!f%O}u6qI7Qo3c#mXRdE zkB_`jd(QC)v}X_g!iSB`u^6)_e8pFnw&#?Xppg0{;`){Rqjo7g%6!Z>{P)Q4(Xaf( zuYAt;e7Nv@&4+uEXneKUfBa`b{NVq53r&6AXe~1S+v|LqXJjVbPkW0=d$w47-uHd% z&;FTl``$-@#SatOfD7*Dec|W)vL9zMUVY{Nty6UV=a3H@lK$z>9NGto@85pE-~6`l z`|EFu?*|9~0tXTlH~_(bf(ii)IM`5O!-o+W4xDIkV#13FEmq7(e=tD;2O>w36bTY! z$&?O23KUS#B|(@AAuJ>af#yJ*9V7C5Sd(GTo*EG#^jWhZQKCjWCgu2(Ap zJM5>vZ9^x2TjArt!uQgZ9Pu$w=JMw^9}W8a+p0IEx5uv9f2n_{5mW$y1WHw)flnb= zKwRUASKfp85v1OFj=AShRul>r7l)#a<`PU2+Qgqta#7clb$B(D-CYYFh~SF_HVENQ z4%SHHRNNFk23$|-0oB)z-tpKWk!{5kqK69IL?nrI{kK$rVig2qj0{%!Qvd-BBw?0W z3gl%=GIgmXe*j?KH_(`b0j3_CLB98%n`<&QmU1;M*V~a{8Y$O)ed;Hba4ND_lZ;gr z8Y7lwqB-W5iZ+0>dm_6Ve7gnd-!LU%gnA$~aOw`5KvTBcop-%Xhy zqK3k{(4><}S}UXl;hHM|miqcDuxc(AtffU7i{x{rDaHjCs>V9|s+F-yThp%8;%aTJ Z6B4^EuyS(yY=_8-W+Rh+f?H%j06W^w-PHg9 delta 1427 zcmV;E1#J4uU!Y$MM@dFFH(>w)00HL$u?!(9e<{rd?o&bM=1%Hv9uA`k>k86G%stc6 zq-%o6?2j_;sp;+A0c_%C3Eog+00LunUmiBG&7HxSYZLJ`R ze9@Cw&&vHnuCK4=~92;S&$ z`yL7K6LAuEZ&`s6t!9A5PX6*0H__>4483`9-HdSCo>J|G-D$p?8{cu$Hg1w_?F7D$ z|NihYVy2xS^0`jUBM%?3@K?OXBPf53e;AKf37_ybwQ@Jb^8DUw!k%6qy-#| zF%Rt^93gxPrl?OXL4J0bG(CbDVK3NuX6jw^QzAB*#2t_m)qjj@N$mT-pHOY zkBIQ#Zixk-+k)-zM(6@p&}ZJ2r|BHno$}kx%{$l4Joj!+4_fgS+64C19wv37e*kjB z1DOLrbrC-p#6ojdKhM=Z@AT$u=eWDSavm)|XoAJ>?k4L|-wH7gryxId1yJ_w*@>o5 z>;sSxQA-PRhIKg^><0e#C%ke$_W?Hmbyw^O5euP# zcWFoGgs%2O2knVBPjT|~94Brse;@XZ7vSDVZbIT=@R3EhMr?`r@)k#Glz;Lar}&ot z^ZmZ~k&St8*Z6)niUzQZ05|kmXNr+e?2->?XwUcMCT_~H8nt+FNvieBIr@i5`lHtz zmWcYfIE)+Zy5Q5QsizvP(fX#>6tDM^nvw030Q=i`an(Qx&9NHJN&BXMe+{eeBhe|!4njn*P#x`k5cDH*-b`=^hKFoE-~ ze-^%ha=h7^r*Dh?mVgV70R5Cmd(TID3#E|yCF1)1+v}ut>fV*Me-C=84Ndv`%whYP ziF~;5d$hkA1kn1hul>t+e;2O58LAI`3nk;!PyF9HMb>xmXIy#RkNwJzmyhuM+n4^n zAN|?y{oNk`-+!3v*ZcW6e!M3W;V1j4*Lvmu8YWqMUTuEYuc7B(mfW8p)nE?nR|^EO z`~%Vdwg3nO2mlZ)Xpo@50S6Zn9FTC~fQS+&Hk4Q~Vnu@%F<#_Ie=tD;2O>w36bTY! z$&?O20uXS}r9qes0YI2(v!=$05+OkFcrYSQofZK|6o|klM288H5>>j?X2FO8p&~r0 zkgC*yKPOt<{^*q=MukH?>TC!ArAm?~L#7?cQYJyTa2evHN|0w#p+TAM>?!nWQ=@=q zW*xfKDbs}l7SCnKf4H$?#(5q7tt_c@62>r%^>HGicXc0lOl%0DQru{|!iyi37ZrSb_?Y=b}vk1VEZh zGRjEMjj{RRXycAF7Gz@pw`CkYA%nQ6KiDVaY~N@kpyYP#v1oNDSJs8fEZ9(~an3M#6LI@;)qk3za8 hLzm7ZYeAmc%BhmKrdpqd+0p<2