wave.gd 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. extends Node2D
  2. class_name Wave
  3. @export var title: String
  4. @export_multiline var description: String
  5. @export var duration: float = 20.0
  6. @export var power_level: float = 1.0
  7. @export_group("Encounters")
  8. var UFO1: PackedScene = preload("res://scene/entity/ufo_1.tscn")
  9. var UFO2: PackedScene = preload("res://scene/entity/ufo_2.tscn")
  10. var UFO2B: PackedScene = preload("res://scene/entity/ufo_2_big.tscn")
  11. var UFO3: PackedScene = preload("res://scene/entity/ufo_3.tscn")
  12. var UFO4: PackedScene = preload("res://scene/entity/ufo_4.tscn")
  13. var UFO5: PackedScene = preload("res://scene/entity/ufo_ast.tscn")
  14. @export var witchUFO: int
  15. @export var fork: int
  16. @export var forkB: int
  17. @export var star: int
  18. @export var boss: int
  19. @export var ast: int
  20. @onready var mob_target = $"../../UFOs"
  21. var index = 0
  22. var timer: Timer = Timer.new()
  23. func _ready():
  24. timer.set_wait_time(0.5)
  25. timer.set_one_shot(true)
  26. add_child(timer)
  27. func insert(mob: PackedScene, count: int):
  28. for i in range(0, count):
  29. var new_mob = mob.instantiate()
  30. new_mob.set_position(get_global_position() + Vector2(index * 800, 0))
  31. index += 1
  32. index %= 5
  33. mob_target.add_child(new_mob)
  34. timer.start()
  35. await timer.timeout
  36. func activate():
  37. insert(UFO1, witchUFO)
  38. insert(UFO2, fork)
  39. insert(UFO2B, forkB)
  40. insert(UFO3, star)
  41. insert(UFO4, boss)
  42. insert(UFO5, ast)
  43. func get_log_data_per_mob(val: int, tstr: String, target: String) -> String:
  44. if val > 0:
  45. target += "[indent]" + str(val) + "x " + tstr + "[/indent]\n"
  46. return target
  47. func get_log_data():
  48. var l = ""
  49. l = get_log_data_per_mob(witchUFO, "U.W.O.", l)
  50. l = get_log_data_per_mob(fork, "Farm ship", l)
  51. l = get_log_data_per_mob(forkB, "Shipfork", l)
  52. l = get_log_data_per_mob(star, "Morning star", l)
  53. l = get_log_data_per_mob(boss, "Comically large U.W.O.", l)
  54. l = get_log_data_per_mob(ast, "Asteroid", l)
  55. return l