From 6b6f6e6721f4658932390d5e837419b77c631182 Mon Sep 17 00:00:00 2001 From: JailGamer Date: Sat, 25 Apr 2026 12:45:19 +0200 Subject: [PATCH] [NEW] Triggers per event --- data/game.lua | 2 + data/premiere.lua | 74 ++++++++++++++++----------------- data/stage1.lua | 9 ++-- data/trigger_event.lua | 93 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 137 insertions(+), 41 deletions(-) create mode 100644 data/trigger_event.lua diff --git a/data/game.lua b/data/game.lua index 7ba45a3..9fbeb34 100644 --- a/data/game.lua +++ b/data/game.lua @@ -21,6 +21,7 @@ require "bar_meter" require "stage1" require "remote_view" require "dialeg" +require "trigger_event" local DEBUG = false @@ -217,6 +218,7 @@ function world_update() -- switches.update() warp.update_all() + trigger_event.update() dialeg.update() end diff --git a/data/premiere.lua b/data/premiere.lua index 6c614f0..ec4f21e 100644 --- a/data/premiere.lua +++ b/data/premiere.lua @@ -223,40 +223,40 @@ function premiere.update_falling() end end -function premiere.healer_init() - if premiere.update==premiere.update_healer then return true end - premiere.hab = 54 - premiere.x = 2 - 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.health_wait = 100 - premiere.update = premiere.update_healer -end - -function premiere.update_healer() - -- 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 - 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) - table.insert( - dialegs, - { actor1=premiere, - actor2=abad, - distancia=500, - direccio = "", - enabled=true, - text="Tenne! Io t'achudo. Figo!" - } - ) - premiere.health_wait = premiere.health_wait - 1 - end -end \ No newline at end of file +-- function premiere.healer_init() +-- if premiere.update==premiere.update_healer then return true end +-- premiere.hab = 54 +-- premiere.x = 2 +-- 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.health_wait = 100 +-- premiere.update = premiere.update_healer +-- end +-- +-- function premiere.update_healer() +-- -- 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 +-- 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) +-- table.insert( +-- dialegs, +-- { actor1=premiere, +-- actor2=abad, +-- distancia=500, +-- direccio = "", +-- enabled=true, +-- text="Tenne! Io t'achudo. Figo!" +-- } +-- ) +-- premiere.health_wait = premiere.health_wait - 1 +-- end +-- end \ No newline at end of file diff --git a/data/stage1.lua b/data/stage1.lua index e0d847f..44c1e6b 100644 --- a/data/stage1.lua +++ b/data/stage1.lua @@ -173,10 +173,10 @@ end function stages.stage1_update() -- print("stage1_update") fireball.update() - if (abad.energia<=abad.max_energia/2) then - -- Requeriment: tindre mitja clau - premiere.healer_init() - end + -- if (abad.energia<=abad.max_energia/2) then + -- -- Requeriment: tindre mitja clau + -- premiere.healer_init() + -- end end function stages.stage1_draw_back() @@ -212,6 +212,7 @@ function stages.stage1_boss() boss.reason="" boss.enabled=true boss:fight() + trigger_event.new("Premiere Boss 1",premiere_boss1_trigger) end end diff --git a/data/trigger_event.lua b/data/trigger_event.lua new file mode 100644 index 0000000..24d00d0 --- /dev/null +++ b/data/trigger_event.lua @@ -0,0 +1,93 @@ +trigger_event = { + list = {}, +} + +function trigger_event.new ( _name, _trigger_func ) + table.insert( trigger_event.list, { + name = _name, + trigger = _trigger_func, + enabled = true, + running = false + }) +end + +function trigger_event.update () + for _,t in ipairs(trigger_event.list) do + if t.enabled and not t.running then + t.running = t.trigger() + end + end +end + +function trigger_event.disable(_name) + for _,t in ipairs(trigger_event.list) do + if t.name == _name then + print("Disabled trigger ".._name) + t.running = false + t.enabled = false + end + end +end + +-- PREMIERE HEALER - BOSS 1 TRIGGER +function premiere_boss1_trigger() +print(abad.objects.clau_premiere) + if stages.boss_loaded and + abad.objects.clau_premiere~=nil and + abad.energia<=abad.max_energia/2 + then + premiere_healer_init() + return true + end + return false +end + +function premiere_healer_init() + if premiere.update==premiere_update_healer then return true end + premiere.from_hab = premiere.hab + premiere.from_x = premiere.x + premiere.from_y = premiere.y + premiere.from_update = premiere.update + -- Moure a premiere al Boss stage + premiere.hab = 54 + premiere.x = 2 + 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.health_wait = 100 + premiere.update = premiere_update_healer +end + +function premiere_update_healer() + -- 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 + 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) + table.insert( + dialegs, + { actor1=premiere, + actor2=abad, + distancia=500, + direccio = "", + enabled=true, + text="Tenne! Io t'achudo. Figo!" + } + ) + premiere.health_wait = premiere.health_wait - 1 + elseif hab >= 56 then + -- Restaurar a Premiere + trigger_event.disable("Premiere Boss 1") + premiere.hab = premiere.from_hab + premiere.x = premiere.from_x + premiere.y = premiere.from_y + premiere.update = premiere.from_update + end +end \ No newline at end of file