In your pawn class, override the AActor::BeginDestroy() function; I believe it’s easier this way;
You can add your game conditions there and only allow the pawn to be destroyed if you really want to, no matter where the call to Destroy() has come from.
Default destruction is
void BeginDestroy()
{
UnregisterAllComponents();
Super::BeginDestroy();
}
You can change it to something like
void BeginDestroy()
{
if ( 'IReallyWantToDestroyYouBecauseGameWillEnd' ) {
UnregisterAllComponents();
Super::BeginDestroy();
} else {
//I just gonna move you sir to base or leave your there nill or let AI play.
}
}