mirror of
				https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
				synced 2025-11-04 08:35:41 +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()
 |