hitbox.gd 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. $expand.set_physics_process(true)
  23. $expand.buff = 0
  24. $Target4.scale.y = 1
  25. $Target4.scale.x = 1
  26. if body.has_node('Health'):
  27. if randf() > critical_chance:
  28. body.get_node('Health')._damage(dmg, effect, self)
  29. else:
  30. body.get_node('Health')._damage(dmg*critical_chance, effect, self)
  31. print('crit')
  32. hpsteal()
  33. get_parent().get_node('Health')._damage(body.get_node('Health').reactive_dmg,'',self)
  34. # print('reactive dmg is : ' + str(body.get_node('Health').reactive_dmg))
  35. $CollisionShape2D.call_deferred('set_disabled', true)
  36. $Timer.wait_time = 1.0/apc
  37. yield($Timer, 'timeout')
  38. $CollisionShape2D.call_deferred('set_disabled', false)
  39. emit_signal('reloaded')
  40. pass # Replace with function body.
  41. func _expgain(exppt):
  42. print(exppt)
  43. emit_signal('gotxp',exppt)