[FIX] Modificada l'estructura de trigger_event per a incorporar funcions init i update
This commit is contained in:
@@ -212,7 +212,10 @@ function stages.stage1_boss()
|
||||
boss.reason=""
|
||||
boss.enabled=true
|
||||
boss:fight()
|
||||
trigger_event.new("Premiere Boss 1",premiere_boss1_trigger)
|
||||
trigger_event.new("Premiere Boss 1",
|
||||
trigger_ev.premiere_boss1_trigger,
|
||||
trigger_ev.premiere_healer_init,
|
||||
trigger_ev.premiere_healer_update)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -2,24 +2,29 @@ trigger_event = {
|
||||
list = {},
|
||||
}
|
||||
|
||||
function trigger_event.new ( _name, _trigger_func )
|
||||
trigger_ev = {}
|
||||
|
||||
function trigger_event.new ( _name, _tr_func, _tr_init, _tr_update )
|
||||
table.insert( trigger_event.list, {
|
||||
name = _name,
|
||||
trigger = _trigger_func,
|
||||
trigger = _tr_func,
|
||||
init = _tr_init,
|
||||
update = _tr_update,
|
||||
enabled = true,
|
||||
running = false
|
||||
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()
|
||||
t.running = t:trigger()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function trigger_event.disable(_name)
|
||||
print("Disabling ".._name)
|
||||
for _,t in ipairs(trigger_event.list) do
|
||||
if t.name == _name then
|
||||
print("Disabled trigger ".._name)
|
||||
@@ -30,20 +35,20 @@ function trigger_event.disable(_name)
|
||||
end
|
||||
|
||||
-- PREMIERE HEALER - BOSS 1 TRIGGER
|
||||
function premiere_boss1_trigger()
|
||||
print(abad.objects.clau_premiere)
|
||||
function trigger_ev:premiere_boss1_trigger( )
|
||||
if stages.boss_loaded and
|
||||
abad.objects.clau_premiere~=nil and
|
||||
--abad.objects.clau_premiere~=nil and
|
||||
abad.energia<=abad.max_energia/2
|
||||
then
|
||||
premiere_healer_init()
|
||||
self:init()
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function premiere_healer_init()
|
||||
if premiere.update==premiere_update_healer then return true end
|
||||
function trigger_ev:premiere_healer_init()
|
||||
-- if premiere.update==premiere_update_healer then return true end
|
||||
-- Guardar l'estat de Premiere
|
||||
premiere.from_hab = premiere.hab
|
||||
premiere.from_x = premiere.x
|
||||
premiere.from_y = premiere.y
|
||||
@@ -56,10 +61,15 @@ function premiere_healer_init()
|
||||
premiere.x=world_x
|
||||
premiere.y=world_y
|
||||
premiere.health_wait = 100
|
||||
premiere.update = premiere_update_healer
|
||||
premiere.update = self.update
|
||||
-- El trigger el deshabilitaria al acabar el update
|
||||
-- pero en estos moments no se com fer-ho
|
||||
-- perque l'update s'executa dins de premiere i no
|
||||
-- dins del trigger
|
||||
trigger_event.disable(self.name)
|
||||
end
|
||||
|
||||
function premiere_update_healer()
|
||||
function trigger_ev:premiere_healer_update()
|
||||
-- Esperar mentres dona la vida
|
||||
if premiere.health_wait>0 and premiere.health_wait<100 then
|
||||
premiere.health_wait = premiere.health_wait - 1
|
||||
@@ -84,10 +94,18 @@ function premiere_update_healer()
|
||||
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
|
||||
end
|
||||
|
||||
function premiere_dialeg1_trigger ()
|
||||
if h_collision( premiere, abad) and
|
||||
distancia ( premiere, abad )<=150
|
||||
then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user