oblib = require "Blasters" Arena.Resize(360, 172) waveStartTime = Time.time ourTime = Time.time timeMult = 1 NORMAL = 0 THIN = 1 LARGE = 2 PX = -42 PY = -42 gbs = {} oneFrameBullets = {} timer = 0 inicioX = 0 inicioY = 0 finalX = 0 finalY = 0 function Update() timer = timer + 1 if timer%30 == 0 then inicioX = Player.absx inicioY = Player.absy finalX = Player.absx finalY = Player.absy local rotacion = math.random(359) if rotacion >= 0 and rotacion < 90 then local formula1 = 13.4164078649/90 * (rotacion) local formula2 = 13.4164078649 - formula1 local spawn1 = 26.4575131106/90 * (rotacion) local spawn2 = 26.4575131106 - spawn1 inicioX = inicioX + 700 - (spawn2*spawn2) inicioY = inicioY + 700 - (spawn1*spawn1) finalX = finalX + 180 - (formula2*formula2) finalY = finalY + 180 - (formula1*formula1) elseif rotacion >= 90 and rotacion < 180 then local formula1 = 13.4164078649/90 * (rotacion - 90) local formula2 = 13.4164078649 - formula1 local spawn1 = 26.4575131106/90 * (rotacion - 90) local spawn2 = 26.4575131106 - spawn1 inicioX = inicioX + 700 - (spawn1*spawn1) inicioY = inicioY - 700 + (spawn2*spawn2) finalX = finalX + 180 - (formula1*formula1) finalY = finalY - 180 + (formula2*formula2) elseif rotacion >= 180 and rotacion < 270 then local formula1 = 13.4164078649/90 * (rotacion - 180) local formula2 = 13.4164078649 - formula1 local spawn1 = 26.4575131106/90 * (rotacion - 180) local spawn2 = 26.4575131106 - spawn1 inicioX = inicioX - 700 + (spawn2*spawn2) inicioY = inicioY - 700 + (spawn1*spawn1) finalX = finalX - 180 + (formula2*formula2) finalY = finalY - 180 + (formula1*formula1) elseif rotacion >= 270 and rotacion < 360 then local formula1 = 13.4164078649/90 * (rotacion - 270) local formula2 = 13.4164078649 - formula1 local spawn1 = 26.4575131106/90 * (rotacion - 270) local spawn2 = 26.4575131106 - spawn1 inicioX = inicioX - 700 + (spawn1*spawn1) inicioY = inicioY + 700 - (spawn2*spawn2) finalX = finalX - 180 + (formula1*formula1) finalY = finalY + 180 - (formula2*formula2) end if finalX > 640 then local diferenciaX = finalX - 640 finalX = finalX - diferenciaX elseif finalX < 0 then finalX = 0 end if finalY > 480 then local diferenciaY = finalY - 480 finalY = finalY - diferenciaY elseif finalY < 0 then finalY = 0 end table.insert(gbs, oblib.GasterBlaster.new({ lifetime = 3, startX = inicioX, startY = inicioY, endX = finalX, endY = finalY, time = ourTime+0.2, rotation = rotacion, size = THIN, laserDelay = 0.75, laserLength = 0.55, s1 = false, s2 = false })) end ourTime = ourTime + (Time.dt * timeMult) for i=#oneFrameBullets,1,-1 do oneFrameBullets[i].Remove() table.remove(oneFrameBullets,i) end for i=1,#gbs do gbs[i].Update() end end function OnHit(bullet) if bullet.GetVar("canHit") then Player.Hurt(4, 0.01) end