TimerObject = {} function TimerObject:New(team, timer, id) local self = {} self.a_timer = 0 self.a_num = 0 self.a_max = 0 self.a_obj = {} local i = 1 self.a_obj[1] = bf:findObjectById(1 + id) while self.a_obj[i] ~= nil do self.a_obj[i]:setTeam(-2) self.a_obj[i]:setGlobal(false) i = i + 1 self.a_obj[i] = bf:findObjectById(i + id) end self.a_max = i - 1 self.a_num = 1 self.a_timer_max = timer self.a_team = team function self:onTick(timePassed) self.a_timer = self.a_timer + timePassed if self.a_timer > self.a_timer_max then self.a_timer = 0 self.a_obj[self.a_num]:setGlobal(false) if self.a_team == -2 then self.a_obj[self.a_num]:setTeam(-1) end self.a_obj[self.a_num]:setTeam(-2) self.a_num = self.a_num + 1 if self.a_num > self.a_max then self.a_num = 1 end self.a_obj[self.a_num]:setGlobal(true) if self.a_team == -2 then self.a_obj[self.a_num]:setTeam(-1) end self.a_obj[self.a_num]:setTeam(self.a_team) end end return self end timerObjects = {} function onTick(timePassed) for index, obj in pairs(timerObjects) do obj:onTick(timePassed) end end function main() timerObjects[3] = TimerObject:New(-2, 180, 300) timerObjects[2] = TimerObject:New(-1, 120, 200) timerObjects[1] = TimerObject:New(2, 30, 0) subscribe(Event.tick) end