| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- extends Node2D
- @export var item: PackedScene = preload("res://Scenes/Prefabs/Entities/Enemies/BulletBill.tscn")
- var timer := 15
- const MAX_TIME := 15
- const HARD_TIME := 7
- func _physics_process(_delta: float) -> void:
- if randi_range(0, 8) == 8:
- timer -= 1
- if timer <= 0:
- if Global.second_quest:
- timer = HARD_TIME
- else:
- timer = MAX_TIME
- fire()
- func fire() -> void:
- if BulletBill.amount >= 3 or $PlayerDetect.get_overlapping_areas().any(func(area: Area2D): return area.owner is Player) or is_inside_tree() == false:
- return
- var player: Player = get_tree().get_first_node_in_group("Players")
- var direction = sign(player.global_position.x - global_position.x)
- $BlockCheck.scale.x = direction
- $BlockCheck/RayCast2D.force_raycast_update()
- if $BlockCheck/RayCast2D.is_colliding():
- return
- var node = item.instantiate()
- node.global_position = global_position + Vector2(0, 8)
- node.set("direction", direction)
- if node is CharacterBody2D:
- node.position.x += 8 * direction
- node.set("velocity", Vector2(100 * direction, 0))
- if node is not BulletBill:
- AudioManager.play_sfx("cannon", global_position)
- else:
- node.cannon = true
- add_sibling(node)
- func flag_die() -> void:
- queue_free()
|