newai.gd 3.2 KB

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