- 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