I have made some glitch. Blueprint copied from another blueprint, with ALT action, fire up "Begin Cursor Over" event in Blueprint from whitch it was copied

I have made some C++ class based on Actor:

Then I made Blueprint from that class:
And add some events about cursor to MouseCollision box.

All works fine, event fire when mouse over MouseCollision box.
But when i copy blueprint from another placed blueprint things go wrong!

Copy #2 fire up events in it self and Copy #1, Copy #3 fire up events in it self and in #2 and #1, while only Copy #1 fire event only in it self.

All on this [video][2].

What am I doing wrong?)

C++ files

class.h

#pragma once

#include "GameFramework/Actor.h"
#include "class_BaseGameBlock.generated.h"

UCLASS()
class MINESWEEPERII_API Aclass_BaseGameBlock : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	Aclass_BaseGameBlock();

	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void Tick( float DeltaSeconds ) override;

	virtual void PostInitProperties() override;
	virtual void PostEditChangeProperty(FPropertyChangedEvent& PCE) override;

	virtual void GetBaseMeshSize();


	UPROPERTY(EditAnywhere)
		UBoxComponent* ComBox;

	UPROPERTY(EditAnywhere)
		UBoxComponent* MouseCollision;

	UPROPERTY(EditAnywhere)
		UStaticMeshComponent* BaseMesh;


	UFUNCTION(BlueprintCallable, Category = "cFunctions")
		void OnBeginMouseCollisionCursorOver(UPrimitiveComponent * TouchedComponent);




// Debug	
	UPROPERTY(EditAnywhere, Category = "Mesh Size")
		FVector MeshSizeMin;

	UPROPERTY(EditAnywhere, Category = "Mesh Size")
		FVector MeshSizeMax;

	UPROPERTY(EditAnywhere, Category = "Mesh Size")
		float MeshSizeX;

	UPROPERTY(EditAnywhere, Category = "Mesh Size")
		float MeshSizeY;

	UPROPERTY(EditAnywhere, Category = "Mesh Size")
		float MeshSizeZ;


};

class.cpp

#include "MinesWeeperII.h"
#include "class_BaseGameBlock.h"


Aclass_BaseGameBlock::Aclass_BaseGameBlock()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	ComBox = CreateDefaultSubobject<UBoxComponent>(TEXT("ComBox"));
	MouseCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("MouseCollision"));
	BaseMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BaseMesh"));

	RootComponent = ComBox;

	MouseCollision->SetBoxExtent(FVector(10.f, 10.f, 2.f));
	MouseCollision->AttachTo(RootComponent);
	MouseCollision->SetRelativeLocation(FVector(0.f, 0.f, 20.f));
	MouseCollision->OnBeginCursorOver.AddDynamic(this, &Aclass_BaseGameBlock::OnBeginMouseCollisionCursorOver);

	BaseMesh->AttachTo(RootComponent);


}

// Called when the game starts or when spawned
void Aclass_BaseGameBlock::BeginPlay()
{
	Super::BeginPlay();
	
}

// Called every frame
void Aclass_BaseGameBlock::Tick( float DeltaTime )
{
	Super::Tick( DeltaTime );

}


void Aclass_BaseGameBlock::PostInitProperties()
{
	Super::PostInitProperties();

	//GetBaseMeshSize();

}

void Aclass_BaseGameBlock::PostEditChangeProperty(FPropertyChangedEvent & PCE)
{
	GetBaseMeshSize();

	Super::PostEditChangeProperty(PCE);
}

void Aclass_BaseGameBlock::GetBaseMeshSize()
{
	if (BaseMesh->StaticMesh != nullptr)
	{
		BaseMesh->GetLocalBounds(MeshSizeMin, MeshSizeMax);

		MeshSizeX = MeshSizeMax.X - MeshSizeMin.X;
		MeshSizeY = MeshSizeMax.Y - MeshSizeMin.Y;
		MeshSizeZ = MeshSizeMax.Z - MeshSizeMin.Z;

		MouseCollision->SetBoxExtent(FVector(MeshSizeX / 2.f, MeshSizeY / 2.f, 1.f));
		MouseCollision->SetRelativeLocation(FVector(0.f, 0.f, MeshSizeZ - 1.f));

		ComBox->SetBoxExtent(FVector(MeshSizeX * .55f, MeshSizeY * .55f, FMath::FRandRange(1.f, 4.f)));

	}
	else
	{
		MeshSizeMax = FVector(0.f);
		MeshSizeMin = FVector(0.f);

		MeshSizeX = 0.f;
		MeshSizeY = 0.f;
		MeshSizeZ = 0.f;

		MouseCollision->SetBoxExtent(FVector(4.f));
		ComBox->SetBoxExtent(FVector(4.f));
	}
}

void Aclass_BaseGameBlock::OnBeginMouseCollisionCursorOver(UPrimitiveComponent * TouchedComponent)
{

}