GameMode::ShouldReset not working at all

I’m currently handling player’s deaths calling “LevelReset” from GameMode.
Problem is, I have many things that I don’t want to reset.

Now, some of it is handled with GameInstance (and Save Files). It can be anything from the items the player is carrying, to whether or not some events have been fired already and I don’t want them to be fired again (a wall breaking when the player overlaps a trigger box) etc etc.

But I’m struggling with 2 things in particular: PlayerStarts and object pickups.
Pickups is pretty straightforward: I find the big key for the big door, I definitely don’t want to find it when I restart the level.
PlayerStarts/Checkpoints are manually triggered by the player: you find a checkpoint, you activate it and I’ll have the GameMode changing that playerstart “PlayerStartTag” from “None” to “WhateverTagThatHelpsMeUnderstandThisIsWhereIHaveToRespawn”.

But when I reset the level, all this is gone: Tags are reset, object pickups are reset as well back into the level.

I looked into it a bit and tried overriding the BlueprintNativeEvent ShouldReset.
So I tried implementing it just for the PlayerStart for starters

Aaand it doesn’t work.

This is before I kill my character

And after I respawn everything is reset regardless

Finally, this is the code called in GameMode to trigger the reset:

APlayerController* controller = Cast<APlayerController>(deadCharacter->GetController());
    deadCharacter->DetachFromControllerPendingDestroy();
	deadCharacter->GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
    UE_LOG(LogTemp, Display, TEXT("GameMode: Restarting Level!"));
    controller->RestartLevel();
    ResetLevel();