Duplicate an instanced scene when selected with same sprite texture and variable data

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By shreyk27

I have created a Card scene with area2d as parent and collision shape and sprite as child and a lobby scene where the card scene gets instanced through code and the card gets data from an external JSON file, how should I go about duplicating the selected card with complete variable data and same texture as a sibling node.

extends Area2D

export (int) var id
export (Image) var cardFace
export (Image) var cardBack

onready var cardD = get_node("Sprite")
onready var move_tween = get_node("Tween")
var selected = false
var is_mouse_over = false
var oldPos 
var restPoint
var restNodes = []


func _ready():
	cardD.texture = cardFace
	oldPos = global_position
	restNodes = get_tree().get_nodes_in_group("zone")
	restPoint  = restNodes[0].global_position
	restNodes[0].select()
	pass

func _on_Area2D_input_event(_viewport, event, _shape_idx):
	if event is InputEventMouseButton:
		if event.button_index == BUTTON_LEFT:
			selected = true
			oldPos = global_position


func _process(delta):
	if selected:
		self.modulate = Color("#FFFF00")
		global_position = lerp(global_position, get_global_mouse_position(), 25 * delta)
	else:
		self.modulate = Color(1,1,1,1)
#		global_position = lerp(global_position, oldPos, 15 * delta)


func _input(event):
	if event is InputEventMouseButton:
		if event.button_index == BUTTON_LEFT and not event.pressed:
			selected = false
			var shortestDist = 75
			for child in restNodes:
				var distance = global_position.distance_to(child.global_position)
				if distance < shortestDist:
					child.select()
					restPoint = child.global_position
					shortestDist = distance
	if event is InputEventScreenTouch:
		if event.is_action_released("ui_touch"):
			selected = false


func move(target):
	move_tween.interpolate_property(self, "position", position, target, .4, Tween.EASE_OUT)
	move_tween.start()

func _on_Area2D_mouse_entered():
	is_mouse_over = true

func _on_Area2D_mouse_exited():
	is_mouse_over = false

func _unhandled_input(event):
	if is_mouse_over:
		if event is InputEventMouseButton and event.button_index == BUTTON_LEFT:
			selected = event.pressed
			get_tree().set_input_as_handled()
		if event is InputEventScreenTouch and event.is_action_pressed("ui_touch"):
			selected = event.pressed
			get_tree().set_input_as_handled()

Card scene`s script looks like so