diff --git a/data/stage1.lua b/data/stage1.lua index 44c1e6b..e04d9de 100644 --- a/data/stage1.lua +++ b/data/stage1.lua @@ -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 diff --git a/data/trigger_event.lua b/data/trigger_event.lua index 24d00d0..bb0f2e6 100644 --- a/data/trigger_event.lua +++ b/data/trigger_event.lua @@ -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 \ No newline at end of file +end + +function premiere_dialeg1_trigger () + if h_collision( premiere, abad) and + distancia ( premiere, abad )<=150 + then + return true + end + return false +end