aboutsummaryrefslogtreecommitdiff
path: root/pickups.lua
diff options
context:
space:
mode:
Diffstat (limited to 'pickups.lua')
-rw-r--r--pickups.lua71
1 files changed, 71 insertions, 0 deletions
diff --git a/pickups.lua b/pickups.lua
new file mode 100644
index 0000000..ce09e91
--- /dev/null
+++ b/pickups.lua
@@ -0,0 +1,71 @@
+local randompickups = {}
+pickuptimer = 10
+function randompickups.update()
+ pickuptimer -= 1/60
+ if (pickuptimer < 0) then
+ pickuptimer = 10
+ if rnd(100) > 93 then
+ addpickup(128, rnd(80)+20)
+ end
+ end
+end
+function randompickups.draw()
+end
+add(obj, randompickups)
+
+function addpickup(x, y, type)
+ local pickup = {}
+ pickup.x = x
+ pickup.y = y
+ pickup.type = type or rnd({"health", "fastshoot", "3shoot"})
+ pickup.sprite = 5
+
+ if (pickup.type == "fastshoot") then
+ pickup.sprite = 21
+ elseif (pickup.type == "3shoot") then
+ pickup.sprite = 37
+ end
+
+ function pickup.collide(player)
+ if pickup.x+4 >= player.x-4 and pickup.x+4 <= player.x+4+player.w and pickup.y+4 >= player.y-4 and pickup.y+4 <= player.y+player.h+4 then
+ pickup:affect(player)
+ for i = 1, 8, 1 do
+ local color = 8
+ if (pickup.type == "fastshoot") then
+ color = 12
+ elseif (pickup.type == "3shoot") then
+ color = 11
+ end
+ addcircle(pickup.x, pickup.y, sin(i/8), cos(i/8), 2, 0.6, color, 0)
+ end
+ del(obj, pickup)
+ end
+ end
+
+ function pickup.affect(pickup, player)
+ if pickup.type == "health" then
+ player.health = 3
+ elseif pickup.type == "fastshoot" then
+ player.shootspeed = 0.1
+ elseif pickup.type == "3shoot" then
+ player.shoot3 = true
+ end
+ end
+
+ function pickup.draw(pickup)
+ spr(pickup.sprite, pickup.x, pickup.y)
+ end
+
+ function pickup.update(pickup)
+ pickup.x -= 0.3
+ pickup.y += sin(time()/2)*0.2
+ foreach(players, pickup.collide)
+ if pickup.x < -8 then
+ del(obj, pickup)
+ end
+ end
+
+ add(obj, pickup)
+end
+
+addpickup(120, 60) \ No newline at end of file