aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--enemies.lua17
-rw-r--r--pickups.lua2
-rw-r--r--players.lua2
-rw-r--r--update.lua1
-rw-r--r--waves.lua80
5 files changed, 92 insertions, 10 deletions
diff --git a/enemies.lua b/enemies.lua
index 6721a2a..ff8606f 100644
--- a/enemies.lua
+++ b/enemies.lua
@@ -11,12 +11,12 @@ function addbasicenemy(x, y, sprite, health, speed)
enemy.inv = -1
enemy.sprite = sprite
enemy.health = health
- enemy.shootcooldown = 3
+ enemy.shootcooldown = rnd(1)+2
enemy.speed = speed
function enemy.draw(enemy)
local sprite = enemy.sprite
- if flr(sin(time()/5)) ~= 0 then
+ if flr(sin(time()*speed)) ~= 0 then --if the ships heading up, change sprite
sprite += 1
end
spr(sprite, enemy.x, enemy.y, 1,1)
@@ -27,6 +27,7 @@ function addbasicenemy(x, y, sprite, health, speed)
explosion(enemy.x, enemy.y)
--and reduce health
enemy.health -= 1
+ sfx(4)
end
function enemy.collide(object)
@@ -39,12 +40,13 @@ function addbasicenemy(x, y, sprite, health, speed)
function enemy.update()
enemy.x -= speed
- enemy.y += sin(time()/5)*speed
+ enemy.y += sin(time()*speed)*speed
enemy.shootcooldown -= 1/60
foreach(players, enemy.collide)
if enemy.shootcooldown < 0 then
- enemy.shootcooldown = 0.5 + rnd(2)
+ enemy.shootcooldown = 0.5 + rnd(1.5)
addbullet(enemy.x-3, enemy.y, -1, 0, true, 3)
+ sfx(3)
end
if enemy.x < -8 then
del(enemies, enemy)
@@ -59,13 +61,10 @@ function addbasicenemy(x, y, sprite, health, speed)
if shake < 3 then
shake = 2.5
end
+ sfx(2)
del(enemies, enemy)
end
end
add(enemies, enemy)
-end
-
-addbasicenemy(128, 60, rnd(basicenemysprites), 1, 0.2)
-addbasicenemy(128, 90, rnd(basicenemysprites), 1, 0.1)
-addbasicenemy(128, 20, rnd(basicenemysprites), 1, 0.1)
+end \ No newline at end of file
diff --git a/pickups.lua b/pickups.lua
index ce09e91..853ddeb 100644
--- a/pickups.lua
+++ b/pickups.lua
@@ -34,7 +34,7 @@ function addpickup(x, y, type)
if (pickup.type == "fastshoot") then
color = 12
elseif (pickup.type == "3shoot") then
- color = 11
+ color = 9
end
addcircle(pickup.x, pickup.y, sin(i/8), cos(i/8), 2, 0.6, color, 0)
end
diff --git a/players.lua b/players.lua
index a4792ec..bb73345 100644
--- a/players.lua
+++ b/players.lua
@@ -41,6 +41,7 @@ function addplayer(sprite, bulletsprite)
player.shootspeed = 0.25
player.shoot3 = false
shake = 9
+ sfx(1)
explosion(player.x, player.y)
end
@@ -88,6 +89,7 @@ function addplayer(sprite, bulletsprite)
--addcircle(player.x+3, player.y+4, rnd(1)+0.5, rnd(1)-0.5, 1.5, rnd(0.4), 12)
--end
addbullet(player.x+3, player.y, 2, 0, false, player.bulletsprite)
+ sfx(0)
if player.shoot3 then
addbullet(player.x+3, player.y+3, 2, 0.25, false, player.bulletsprite)
addbullet(player.x+3, player.y-3, 2, -0.25, false, player.bulletsprite)
diff --git a/update.lua b/update.lua
index 01847a5..2682c1e 100644
--- a/update.lua
+++ b/update.lua
@@ -1,3 +1,4 @@
+updatewaves()
updateobjs()
--screenshake math
shake = shake + 0.11 * (0 - shake);
diff --git a/waves.lua b/waves.lua
new file mode 100644
index 0000000..7be4735
--- /dev/null
+++ b/waves.lua
@@ -0,0 +1,80 @@
+wave = {} --store wave functions here
+currentwave = 1 --THIS IS THE CURRENT WAVE
+currentwavetime = 0
+delaytimer = 0
+
+wave[1] = {
+ delay = 2,
+ start = function()
+ addbasicenemy(130, 60, rnd(basicenemysprites), 1, 0.15)
+ end,
+ ending = function()
+ end,
+ everysecond = function()
+ end,
+ conditions = function()
+ if #enemies < 1 then
+ return true
+ else
+ return false
+ end
+ end
+}
+
+wave[2] = {
+ delay = 2,
+ start = function()
+ addbasicenemy(128, 30, rnd(basicenemysprites), 1, 0.4)
+ addbasicenemy(128, 60, rnd(basicenemysprites), 1, 0.8)
+ addbasicenemy(128, 90, rnd(basicenemysprites), 1, 0.4)
+ end,
+ ending = function()
+ end,
+ everysecond = function()
+ end,
+ conditions = function()
+ if #enemies < 1 then
+ return true
+ else
+ return false
+ end
+ end
+}
+
+wave[3] = {
+ delay = 2,
+ start = function()
+ for i = 1, 7, 1 do
+ addbasicenemy(128, i*16, rnd(basicenemysprites), 1, 0.5 + 0.075*i)
+ addbasicenemy(170, i*16, rnd(basicenemysprites), 1, 1.05 - 0.075*i)
+ end
+ end,
+ ending = function()
+ end,
+ everysecond = function()
+ end,
+ conditions = function()
+ if #enemies < 1 then
+ return true
+ else
+ return false
+ end
+ end
+}
+
+wave[currentwave].start()
+
+function updatewaves()
+ currentwavetime += 1/60
+ if wave[currentwave].conditions() then
+ delaytimer += 1/60
+ if delaytimer > wave[currentwave].delay then
+ wave[currentwave].ending()
+ currentwave += 1
+ currentwavetime = 0
+ delaytimer = 0
+ currentwave = (currentwave - 1) % #wave+1 --temporarily looping the waves
+ wave[currentwave].start()
+ end
+ end
+end \ No newline at end of file