adrenaline.lua 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. local Adrenaline = {}
  2. ----------------
  3. -- Meta
  4. ----------------
  5. Adrenaline.name = 'Adrenaline'
  6. Adrenaline.code = 'adrenaline'
  7. Adrenaline.text = 'Increases movespeed, drains health.'
  8. Adrenaline.hide = false
  9. ----------------
  10. -- Data
  11. ----------------
  12. Adrenaline.drain = 20
  13. Adrenaline.rate = .5
  14. function Adrenaline:activate()
  15. self.amount = self.owner.class.speed * .6
  16. self.owner.haste = self.owner.haste + self.amount
  17. self.hurtTimer = 0
  18. end
  19. function Adrenaline:deactivate()
  20. self.owner.haste = self.owner.haste - self.amount
  21. end
  22. function Adrenaline:update()
  23. self.hurtTimer = self.hurtTimer - 1
  24. if self.hurtTimer <= 0 then
  25. local amt = math.min(Adrenaline.drain * Adrenaline.rate, self.owner.health - 1)
  26. ctx.net:emit(app.net.events.damage, {id = self.owner.id, amount = amt, from = self.owner.id, tick = tick})
  27. self.hurtTimer = math.round(Adrenaline.rate / tickRate)
  28. for _ = 1, 8 do
  29. ctx.event:emit('particle.create', {
  30. kind = 'blood',
  31. vars = {
  32. x = self.owner.x - 25 + love.math.random(50),
  33. y = self.owner.y - 25 + love.math.random(50)
  34. }
  35. })
  36. end
  37. end
  38. end
  39. return Adrenaline