You're setting hasPowerup to "false" every 5 seconds, possibly even after they just got the powerup. I don't like global Wait actions for this kind of thing. Some people get good mileage with System: Every x seconds for cooldown periods like this (which it kind of is). I just prefer setting a Timer as it keeps the behaviour with the object. There's also a 3rd party Cooldown add-on which I've used.
edit: this one is better. There was no need for the complicated expression checking the timer values.
[attachment=0:282wbhhf][/attachment:282wbhhf]
edit 2: BTW I wouldn't use "true" and "false", it's very error prone. Use 0 and 1 or Boolean variables.