newai.gd 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. extends KinematicBody2D
  2. func damage(arg, id):
  3. vida += arg
  4. get_tree().get_nodes_in_group('server')[0]._enemy_dmg(enemy_id)
  5. if vida <= 0:
  6. get_tree().get_nodes_in_group('enemy_authority')[0].death_count(id)
  7. queue_free()
  8. var enemy_id = 0
  9. var type = 0
  10. var fliph = 0
  11. export var vida = 2
  12. # Called when the node enters the scene tree for the first time.
  13. var motion = Vector2(0,0)
  14. var target
  15. var target_position_buff
  16. func find_target():
  17. var data = get_tree().get_nodes_in_group('players')
  18. if data.size() > 0:
  19. data.shuffle()
  20. target_position_buff = data[0].global_position
  21. return data[0]
  22. func _ready(): find_target()
  23. var bullet = preload('res://bullet.tscn')
  24. var firerate = 30
  25. var fireratebuff = 30
  26. var alert = false
  27. var state = 'walk'
  28. var behaviours = {
  29. 'walkleft':120,
  30. 'walkright':120,
  31. 'idle':60,
  32. 'knockback':60,
  33. 'canon':60,
  34. 'die':120,
  35. 'followtarget':120,
  36. 'blowup':60,
  37. }
  38. export var gen = ['walkleft','walkright','idle','canon']
  39. var clock = 1
  40. var onceacycle = true
  41. func sprite_loader(anim,pos,id):
  42. get_tree().get_nodes_in_group('server')[0].spriter_request(anim,pos,id)
  43. func _physics_process(delta):
  44. clock -= 1
  45. match state:
  46. 'walkleft':
  47. sprite_loader('walk',global_position,enemy_id)
  48. motion.x = 75
  49. 'walkright':
  50. sprite_loader('walk',global_position,enemy_id)
  51. motion.x = -75
  52. 'idle':
  53. sprite_loader('idle',global_position,enemy_id)
  54. motion.x = 0
  55. 'knockback':
  56. sprite_loader('knockback',global_position,enemy_id)
  57. motion.x = 0
  58. 'canon':
  59. if onceacycle:
  60. sprite_loader('canon',global_position,enemy_id)
  61. onceacycle = false
  62. var instancer = load('res://enemie/tankcanonball.tscn').instance()
  63. add_child(instancer)
  64. instancer.global_position = global_position
  65. motion.x = 0
  66. 'die':
  67. sprite_loader('die',global_position,enemy_id)
  68. motion.x = 0
  69. 'followtarget':
  70. if target == null:
  71. target = find_target()
  72. return
  73. if motion == Vector2(0,0): motion = (target_position_buff - global_position).normalized() * 150
  74. if clock == 0:
  75. gen.shuffle()
  76. state = gen[0]
  77. clock = behaviours[state]
  78. print(state)
  79. onceacycle = true
  80. move_and_slide(motion)
  81. func _on_Area2D_body_entered(body):
  82. if body.is_in_group('player'):
  83. sprite_loader('explosion',global_position,enemy_id)
  84. body.damage(-20, enemy_id)
  85. queue_free()
  86. if body.is_in_group('terrain'):
  87. sprite_loader('explosion',global_position,enemy_id)
  88. queue_free()
  89. pass # Replace with function body.