My label is going to null when I call the function form another script

I have a function where I set two RichTextLabels to the name of the enemy and how much health it has, but every time I call this function from another script it says its null. Even though in the same script in the _ready() func Its not.

I think it might be because my global var are being set to null when I create a reference to the script but idk.

Also please excuse my spaghetti code.

extends Node2D

var enemy_manager_instance
var end_turn_instance

var level
var level_round

func _ready(): 
	enemy_manager_instance = preload("res://scripts/EnemyManager.gd").new()
	enemy_manager_instance.get_label_nodes()
	end_turn_instance = preload("res://scripts/EndTurn.gd").new()
	
	level = 1
	level_round = 1
	
func enemy_turn():
	print("ENEMY TURN")
	if !enemy_manager_instance and !end_turn_instance: #_ready wasnt running because 
		enemy_manager_instance = preload("res://scripts/EnemyManager.gd").new() #This does not run _ready() which has been causing my issues 
		
		enemy_manager_instance.get_label_nodes()
		end_turn_instance = preload("res://scripts/EndTurn.gd").new()
		level = 1
		level_round = 1
	
		enemy_manager_instance.enemy_picker(level) 
	
	if enemy_manager_instance.enemy_health <= 0: #If dead
		level += 1
		level_round = 1
		enemy_manager_instance.enemy_picker(level) 
	else: #not dead
		enemy_manager_instance.enemy_move_picker()
	
extends Node2D
#Picks decides what enemy is at each round and assigns stats
#Also picks what move they are going to do

var CARD_DATABASE_REF
var PLAYER_MANAGER_REF

var rng : RandomNumberGenerator
var center_of_screen_x

var enemy_name
var enemy_health
var enemy_block

var enemy_health_stat
var enemy_damage_stat
var enemy_block_stat

@onready var enemy_name_node: RichTextLabel = $enemy_name_value
@onready var health_value_node: RichTextLabel = $health_value

var rich_label_text_temp

var db_ref_flag = true


func _ready():
	CARD_DATABASE_REF = preload("res://scripts/CardDatabase.gd").new()
	PLAYER_MANAGER_REF = preload("res://scripts/Player_Manager.gd").new()
	rng = RandomNumberGenerator.new()
	
	var enemy = $"."
	center_of_screen_x = get_viewport_rect().size.x / 2
	enemy.position = Vector2(center_of_screen_x, 250)
	
	#enemy_name_node = get_node("enemy_name_value")
	#health_value_node = get_node("health_value")

	set_intial_text_stats("Example", 56)
	
	
func get_label_nodes():
	
	if !enemy_name_node:
		enemy_name_node = $enemy_name_value
		if !enemy_name_node:
			print("enemy_name_value node not found!")
		else:
			print("enemy_name_value node found:", enemy_name_node)

	if !health_value_node:
		health_value_node = $health_value
		if !health_value_node:
			print("health_value node not found!")
		else:
			print("health_value node found:", health_value_node)
	
func enemy_picker(level):
	if level == 1:
		enemy_name = "LilGoblinBro" 
		assign_enemy_stats(enemy_name)
	elif level == 2:
		enemy_name = "GhostyWosty"
		assign_enemy_stats(enemy_name)
	elif level == 3:
		enemy_name = "FlyingMongoose"
		assign_enemy_stats(enemy_name)
	else:
		level = 1
		
func assign_enemy_stats(name):
	while db_ref_flag == true:
		if CARD_DATABASE_REF:
			db_ref_flag = false
			enemy_block = 0
			enemy_health = CARD_DATABASE_REF.ENEMIES[name][0] 
			enemy_damage_stat = CARD_DATABASE_REF.ENEMIES[name][1]
			enemy_block_stat = CARD_DATABASE_REF.ENEMIES[name][2]
			
			call_deferred("set_intial_text_stats", name, enemy_health)
			
		else:
			CARD_DATABASE_REF = preload("res://scripts/CardDatabase.gd").new()
			PLAYER_MANAGER_REF = preload("res://scripts/Player_Manager.gd").new()
			
			

func enemy_move_picker(): #Random number decides what enemy does
	if rng:
		var move_decider = floor(rng.randi_range(1, 3))
		if move_decider == 1:
			PLAYER_MANAGER_REF.update_health(enemy_damage_stat)
			update_intension("Attack", enemy_damage_stat)
		elif move_decider == 2:
			enemy_block = enemy_block + enemy_block_stat
			update_intension("Block", enemy_block)
	else:
		rng = RandomNumberGenerator.new()


func _update_health(damage_taken): 
	if enemy_block_stat - damage_taken <= 0:
		var damage_to_health = abs(enemy_block - damage_taken)
		enemy_health = enemy_health - damage_to_health
		enemy_block = 0
		#ealth_value_node.text = str(enemy_health)
	else:
		enemy_block = enemy_block - damage_taken
		$block_value.text = str(enemy_block)
		

func update_intension(intension_type, intension_value): #Shows player what the enemys next move is
	$intension_type.text = str(intension_type)
	$intension_value.text = str(intension_value)
	
func set_intial_text_stats(input_name, health):
	if enemy_name_node and health_value_node:
		enemy_name_node.text = str(input_name)
		health_value_node.text = str(health)
	else:
		print("error, pain")
	

I don’t know which scripts are which but your enemy_manager_instance is never added to the tree so _ready() is never called, and it won’t have any children since you are creating a new node from the script rather than instantiating a scene.

Thank you ill look into it and see if that fixes it.
Also yeah my bad didn’t realise the scripts weren’t labelled till after I posted.
Top script - GameManager
Bottom script - EnemyManager