EndFlagpole.gd 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. extends Node2D
  2. const FLAG_POINTS := [100, 400, 800, 2000, 5000]
  3. signal player_reached
  4. signal sequence_begin
  5. func _ready() -> void:
  6. if Settings.file.difficulty.flagpole_lives == 0:
  7. print(Settings.file.difficulty)
  8. $Top.queue_free()
  9. func on_area_entered(area: Area2D) -> void:
  10. if area.owner is Player:
  11. player_touch(area.owner)
  12. func player_touch(player: Player) -> void:
  13. player_reached.emit()
  14. if Global.current_game_mode == Global.GameMode.MARATHON_PRACTICE:
  15. SpeedrunHandler.is_warp_run = false
  16. SpeedrunHandler.run_finished()
  17. Global.can_pause = false
  18. if get_node_or_null("Top") != null:
  19. $Top.queue_free()
  20. $Hitbox.queue_free()
  21. get_tree().call_group("Enemies", "flag_die")
  22. give_points(player)
  23. Global.can_time_tick = false
  24. player.z_index = -2
  25. player.global_position.x = $Flag.global_position.x + 3
  26. $Animation.play("FlagDown")
  27. player.state_machine.transition_to("FlagPole")
  28. AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.FLAG_POLE, 99, false)
  29. await get_tree().create_timer(1.5, false).timeout
  30. sequence_begin.emit()
  31. if Global.current_game_mode == Global.GameMode.BOO_RACE:
  32. AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.RACE_WIN, 99, false)
  33. else:
  34. AudioManager.set_music_override(AudioManager.MUSIC_OVERRIDES.LEVEL_COMPLETE, 99, false)
  35. Global.level_complete_begin.emit()
  36. await get_tree().create_timer(1, false).timeout
  37. if [Global.GameMode.BOO_RACE].has(Global.current_game_mode) == false:
  38. Global.tally_time()
  39. func give_points(player: Player) -> void:
  40. var value = clamp(int(lerp(0, 4, (player.global_position.y / -144))), 0, 4)
  41. var nearest_value = FLAG_POINTS[value]
  42. $Score.text = str(nearest_value)
  43. Global.score += nearest_value
  44. $Score/Animation2.play("ScoreRise")
  45. func on_player_entered(player: Player) -> void:
  46. player_touch(player)
  47. Global.lives += 1
  48. AudioManager.play_sfx("1_up", global_position)