hitbox.gd 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. extends Area2D
  2. export var dmg = 1
  3. var effect = ''
  4. export var affect = 'enemy'
  5. export var apc = 1.0
  6. signal reloaded
  7. export var singletime = false
  8. var enable = true
  9. var hpsteal = 0
  10. var stealhp = 0
  11. signal regenhealth(arg, arg1, arg2)
  12. var critical_dmg = 1.0
  13. var critical_chance = 0.0
  14. signal gotxp(arg)
  15. func hpsteal():
  16. if randf() < stealhp:
  17. emit_signal("regenhealth", -(dmg*hpsteal), '', self)
  18. func _on_hitbox_body_entered(body):
  19. if not enable : return
  20. if singletime: enable = false
  21. if body.is_in_group(affect):
  22. $AudioStreamPlayer2D.play()
  23. $expand.set_physics_process(true)
  24. $expand.buff = 0
  25. $Target4.scale.y = 1
  26. $Target4.scale.x = 1
  27. if body.has_node('Health'):
  28. if randf() > critical_chance:
  29. body.get_node('Health')._damage(dmg, effect, self)
  30. else:
  31. body.get_node('Health')._damage(dmg*critical_chance, effect, self)
  32. print('crit')
  33. hpsteal()
  34. get_parent().get_node('Health')._damage(body.get_node('Health').reactive_dmg,'',self)
  35. # print('reactive dmg is : ' + str(body.get_node('Health').reactive_dmg))
  36. $CollisionShape2D.call_deferred('set_disabled', true)
  37. $Timer.wait_time = 1.0/apc
  38. yield($Timer, 'timeout')
  39. $CollisionShape2D.call_deferred('set_disabled', false)
  40. emit_signal('reloaded')
  41. pass # Replace with function body.
  42. func _expgain(exppt):
  43. print(exppt)
  44. emit_signal('gotxp',exppt)