[NEW] Triggers per event

This commit is contained in:
2026-04-25 12:45:19 +02:00
parent 311e5ff6f8
commit 6b6f6e6721
4 changed files with 137 additions and 41 deletions

View File

@@ -21,6 +21,7 @@ require "bar_meter"
require "stage1" require "stage1"
require "remote_view" require "remote_view"
require "dialeg" require "dialeg"
require "trigger_event"
local DEBUG = false local DEBUG = false
@@ -217,6 +218,7 @@ function world_update()
-- switches.update() -- switches.update()
warp.update_all() warp.update_all()
trigger_event.update()
dialeg.update() dialeg.update()
end end

View File

@@ -223,40 +223,40 @@ function premiere.update_falling()
end end
end end
function premiere.healer_init() -- function premiere.healer_init()
if premiere.update==premiere.update_healer then return true end -- if premiere.update==premiere.update_healer then return true end
premiere.hab = 54 -- premiere.hab = 54
premiere.x = 2 -- premiere.x = 2
premiere.y = 3 -- premiere.y = 3
local world_x, world_y = coords.room_to_world(premiere.hab,premiere.x,premiere.y) -- local world_x, world_y = coords.room_to_world(premiere.hab,premiere.x,premiere.y)
premiere.x=world_x -- premiere.x=world_x
premiere.y=world_y -- premiere.y=world_y
premiere.health_wait = 100 -- premiere.health_wait = 100
premiere.update = premiere.update_healer -- premiere.update = premiere.update_healer
end -- end
--
function premiere.update_healer() -- function premiere.update_healer()
-- Esperar mentres dona la vida -- -- Esperar mentres dona la vida
if premiere.health_wait>0 and premiere.health_wait<100 then -- if premiere.health_wait>0 and premiere.health_wait<100 then
premiere.health_wait = premiere.health_wait - 1 -- premiere.health_wait = premiere.health_wait - 1
else -- else
premiere.x = premiere.x+1 -- premiere.x = premiere.x+1
end -- end
--
-- Lloc de pausa -- -- Lloc de pausa
local hab, tx, ty = coords.world_to_tile(premiere.x, premiere.y) -- 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 -- if hab == 55 and tx==0 and ty==3 and premiere.health_wait==100 then
-- 55 (0,3) -- -- 55 (0,3)
table.insert( -- table.insert(
dialegs, -- dialegs,
{ actor1=premiere, -- { actor1=premiere,
actor2=abad, -- actor2=abad,
distancia=500, -- distancia=500,
direccio = "", -- direccio = "",
enabled=true, -- enabled=true,
text="Tenne! Io t'achudo. Figo!" -- text="Tenne! Io t'achudo. Figo!"
} -- }
) -- )
premiere.health_wait = premiere.health_wait - 1 -- premiere.health_wait = premiere.health_wait - 1
end -- end
end -- end

View File

@@ -173,10 +173,10 @@ end
function stages.stage1_update() function stages.stage1_update()
-- print("stage1_update") -- print("stage1_update")
fireball.update() fireball.update()
if (abad.energia<=abad.max_energia/2) then -- if (abad.energia<=abad.max_energia/2) then
-- Requeriment: tindre mitja clau -- -- Requeriment: tindre mitja clau
premiere.healer_init() -- premiere.healer_init()
end -- end
end end
function stages.stage1_draw_back() function stages.stage1_draw_back()
@@ -212,6 +212,7 @@ function stages.stage1_boss()
boss.reason="" boss.reason=""
boss.enabled=true boss.enabled=true
boss:fight() boss:fight()
trigger_event.new("Premiere Boss 1",premiere_boss1_trigger)
end end
end end

93
data/trigger_event.lua Normal file
View File

@@ -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