[NEW] Triggers per event
This commit is contained in:
93
data/trigger_event.lua
Normal file
93
data/trigger_event.lua
Normal 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
|
||||
Reference in New Issue
Block a user