Okay I see what you want to do (I was considering doing this style as well but changed my mind) anyway, what you want to do is, (see the code box it explains it)
Code:
//Psudocode just off the top of my head
//when timer runs out do following:
//get enemy tile
int orig_tile = ene_1->Tile
ene_1->Tile = 0 //Don't actually use 0 find a blank tile and use that
//then set another timer, when that runs out set the enemy tile back to orig_tile
////////////////
//Durring each frame check if Link is touching enemy
//You can run a loop where you load each enemy onscreen into a varible and then check the X and Y cords to see if they intersect with Link's X and Y and check the enemy tile to see if the enemy is not 'invisible'
//Load each enemy
int numb = NumbNPCs()
for (int i = 0; i <= numb; i += 1)
{
//one day we will have arrays :D
if (i == 1) {ene_01 = LoadNPC(1);}
if (i == 2) {ene_02 = LoadNPC(2);}
if (i == 3) {ene_03 = LoadNPC(3);}
if (i == 4) {ene_04 = LoadNPC(4);}
//etc, etc, etc, (and if anyone knows a better way to do this don't be shy
}
//check if the enemy is touching Link
if (Link->X >= ene_01->X - 8 && Link->X <= ene_01->X + 24 && Link->Y >= ene_01->Y && Link->Y <= Link->Y + 24 && ene_01->Tile != 0) //once again use a blank tile
{
//teleport Link
}
That is the basic idea, the code may not be 100% accurate but you seem to have an idea of what you are doing. Hope this helps :)