Here's a BEFORE and AFTER video below
[
I couldn't really track what really just happened. It occured after putting resources of every nodes needed, bullet nodes, shooter nodes, enemy nodes, etc. However, I tried reverting them back but none of them are solved.

here are the current codes below:

bullet code:

class_name BulletClass

export var bulletRes: Resource


func _die() -> void:
	set_deferred("monitoring", false)
	bulletRes.spd = 0
	rotation = 0
	$AnimatedSprite.play("die")
	yield($AnimatedSprite, "animation_finished")
	queue_free()

#func _move(delta) -> void:
#	position += bulletRes.dir * bulletRes.spd * delta
#	bulletRes.spd += bulletRes.changingSpeed * delta

func _cancel() -> void: 
	if !bulletRes.cancelled:
		bulletRes.cancelled = true 
		$scoreManager._spawn_gems()
		_die()


func _ready() -> void:
	$AnimatedSprite.play("default")
	if bulletRes.rotate: rotation = bulletRes.dir.angle()


func _on_VisibilityNotifier2D_screen_exited() -> void: queue_free()


func _on_bullet_area_entered(area) -> void:
	if area is Enemy: area._damage(bulletRes.damage)
	elif area is Hurtbox: area._dead()
	
	_die()

shooter code:

class_name Shooter

export var shooterRes: Resource

var bullets: Array = []


func _timer() -> Timer: return get_node("Timer") as Timer

func _shoot(lookAtPos: Vector2 = Vector2.RIGHT) -> void:
	if $Timer.is_stopped():
		$Timer.start(shooterRes.fireRate)
		
		for i in shooterRes.arcRepeat:
			if owner is Enemy:
				if !owner.enemyRes.canDamaged or owner.player.dead: 
					$Timer.stop()
					break
			
			var b = shooterRes.bullet.instance() as BulletClass
			
			if shooterRes.staticDirection: $Position2D.rotation = Vector2.RIGHT.angle_to(lookAtPos)
			else: $Position2D.look_at(lookAtPos)
			
			b.global_position = $Position2D.global_position
			
			if shooterRes.arcRepeat != 1:
				var arcRad = deg2rad(shooterRes.arc)
				var inc = arcRad / (shooterRes.arcRepeat - 1)
				$Position2D.rotation += inc * i - arcRad / 2
			
			b.bulletRes.dir = Vector2.RIGHT.rotated($Position2D.rotation + shooterRes.customRotation)
			
			if shooterRes.customSpeed != 0: b.bulletRes.spd = shooterRes.customSpeed
			
			b.bulletRes.changingSpeed = shooterRes.changingSpeed
			
			get_tree().root.call_deferred("add_child", b)
			
			bullets.append(b)
			
			rotation = 0



func _physics_process(delta) -> void:
	if bullets.empty(): return
	
	for bullet in bullets:
		if is_instance_valid(bullet): 
			bullet.position += bullet.bulletRes.dir * bullet.bulletRes.spd * delta
			bullet.bulletRes.spd += bullet.bulletRes.changingSpeed * delta
		else: bullets.erase(bullet)

somewhere between them are the fault I really couldn't tell but help is super appreciated

Check if you aren't generating too many bullets. Also, it's good practice to make things delete themselves when they are out of the screen.

    CleanWater there aren't, they're already going to instantly free themselves offscreen