mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
43 lines
1.2 KiB
GDScript
43 lines
1.2 KiB
GDScript
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()
|