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