diff --git a/data/elalien.lua b/data/elalien.lua index 400f388..c686b17 100644 --- a/data/elalien.lua +++ b/data/elalien.lua @@ -356,4 +356,50 @@ function elalien.update_stairs() end end end +end + +function elalien.backup() + -- Guardar l'estat de elalien + elalien.from_hab = elalien.hab + elalien.from_x = elalien.x + elalien.from_y = elalien.y + elalien.from_update = elalien.update +end + +function elalien.restore() + -- Restaurar a elalien + elalien.hab = elalien.from_hab + elalien.x = elalien.from_x + elalien.y = elalien.from_y + elalien.update = elalien.from_update +end + +function elalien.stage1_ending_init() + -- if elalien.update==premiere_update_healer then return true end + elalien.backup() + -- Moure a elalien al ending + elalien.hab = 9 + elalien.x = 0 + elalien.y = 3 + local world_x, world_y = coords.room_to_world(elalien.hab,elalien.x,elalien.y) + elalien.x=world_x + elalien.y=world_y + elalien.update = elalien.stage1_ending_update +end + +function elalien.stage1_ending_update() + elalien.wait=elalien.wait+1 + + -- avançar a 8,1,3 + local hab, tx, ty = coords.world_to_tile(elalien.x, elalien.y) + if hab == 8 and tx==6 and ty==3 then + -- premiere.health_wait = premiere.health_wait - 1 + else + elalien.x = elalien.x-1 + if elalien.wait>=6 then + elalien.wait = 0 + elalien.step=(elalien.step+1)%4 + elalien.frame=elalien.anim[elalien.step+1] + end + end end \ No newline at end of file diff --git a/data/premiere.lua b/data/premiere.lua index 793bedc..c11db24 100644 --- a/data/premiere.lua +++ b/data/premiere.lua @@ -236,3 +236,94 @@ function premiere.update_falling() end end end + +function premiere.healer_update() + premiere.wait=premiere.wait+1 + + -- Esperar mentres dona la vida + if premiere.health_wait>0 and premiere.health_wait<100 then + premiere.health_wait = premiere.health_wait - 1 + else + premiere.x = premiere.x+1 + if premiere.wait>=6 then + premiere.wait = 0 + premiere.step=(premiere.step+1)%4 + premiere.frame=premiere.anim[premiere.step+1] + end + end + + -- Lloc de pausa + local hab, tx, ty = coords.world_to_tile(premiere.x, premiere.y) + if hab == 55 and tx==0 and ty==3 and premiere.health_wait==100 then + -- 55 (0,3) + local _text = "Tenne! Io t'achudo. Figo!"; + table.insert( + dialeg.list, + { actor=premiere, + text=_text, + time=200, + w = math.floor(4.6*#_text), + h = 20, + } + ) + premiere.health_wait = premiere.health_wait - 1 + table.insert( actors, health_potion.new( + premiere.hab, + premiere.x+premiere.bb.x+premiere.bb.w, + premiere.y+premiere.bb.y+premiere.bb.h/3, + 1, 24, 3) + ) + -- health_potion.init(premiere.hab, + -- premiere.x+premiere.bb.x+premiere.bb.w, + -- premiere.y+premiere.bb.y+premiere.bb.h/3, + -- 1, 24, 2) + elseif hab >= 56 then + premiere.restore() + end +end + +function premiere.backup() + -- Guardar l'estat de Premiere + premiere.from_hab = premiere.hab + premiere.from_x = premiere.x + premiere.from_y = premiere.y + premiere.from_update = premiere.update +end + +function premiere.restore() + -- Restaurar a Premiere + premiere.hab = premiere.from_hab + premiere.x = premiere.from_x + premiere.y = premiere.from_y + premiere.update = premiere.from_update +end + +function premiere.stage1_ending_init() + -- if premiere.update==premiere_update_healer then return true end + premiere.backup() + -- Moure a premiere al ending + premiere.hab = 7 + premiere.x = 6 + premiere.y = 3 + local world_x, world_y = coords.room_to_world(premiere.hab,premiere.x,premiere.y) + premiere.x=world_x + premiere.y=world_y + premiere.update = premiere.stage1_ending_update +end + +function premiere.stage1_ending_update() + premiere.wait=premiere.wait+1 + + -- avançar a 8,1,3 + local hab, tx, ty = coords.world_to_tile(premiere.x, premiere.y) + if hab == 8 and tx==1 and ty==3 then + -- premiere.health_wait = premiere.health_wait - 1 + else + premiere.x = premiere.x+1 + if premiere.wait>=6 then + premiere.wait = 0 + premiere.step=(premiere.step+1)%4 + premiere.frame=premiere.anim[premiere.step+1] + end + end +end \ No newline at end of file diff --git a/data/stage1.lua b/data/stage1.lua index 1a133d6..e094dfe 100644 --- a/data/stage1.lua +++ b/data/stage1.lua @@ -230,7 +230,7 @@ function stages.stage1_boss() trigger_event.new("Premiere Boss 1", trigger_ev.premiere_boss1_trigger, trigger_ev.premiere_healer_init, - trigger_ev.premiere_healer_update) + premiere.healer_update) end end diff --git a/data/stage1_ending.lua b/data/stage1_ending.lua index 01ada1e..f945e4e 100644 --- a/data/stage1_ending.lua +++ b/data/stage1_ending.lua @@ -5,20 +5,39 @@ stage1_ending ={ function stage1_ending:update_scene () print("UPDATING "..self.time) - batvio.x = batvio.x - self.batvio_vx - if self.time>=120 then - flow:next() - end - self.time = self.time + 1 - if self.time % 6 == 0 then - self.batvio_vx= self.batvio_vx+1 - end - batvio.update() + -- primera escena - batman escapa + if self.time<120 then + batvio.x = batvio.x - self.batvio_vx + if self.time % 6 == 0 then + self.batvio_vx= self.batvio_vx+1 + end + batvio.update() + elseif self.time==120 then + batvio.enabled = false + premiere.stage1_ending_init() + elalien.stage1_ending_init() + elseif self.time<250 then + premiere.update() + elalien.update() + -- segona escena - Aparició de elalien i premiere + -- elalien 9,0,3 -> 8,6,3 + -- premiere 7,6,3 -> 8,1,3 + elseif self.time<300 then + + end + surf.target(0) surf.cls(16) world_draw() score.draw() + + self.time = self.time + 1 + + -- Acabar ending + if self.time>=250 then + flow:next() + end end function stage1_ending:end_scene()