If I might suggest, it'd be cleaner to do this:

Code:
void HolesLavaMain()
{
	if(Link->Z==0 && !Falling && (returnscreen != Game->GetCurDMapScreen() || returndmap != Game->GetCurDMap()))
	{
		if(OnPitCombo()==0) //Not having this check was causing a terrible death trap.
		{
			returndmap = Game->GetCurDMap();
			returnscreen = Game->GetCurDMapScreen();
			returnx = Link->X;
			returny = Link->Y;
			returndir = Link->Dir;
		}
	}
}

void DoHolesLava()
{
	if(Link->Action != LA_SCROLLING)
	{
		HolesLavaMain();
		Update_HoleLava(returnx, returny, returndmap, returnscreen, returndir);
	}
}


global script slot2_holelava
{
	void run()
	{
		//Initialize variables used to store Link's strating position on Screen Init.
		int returndmap = Game->GetCurDMap();
		int returnscreen = Game->GetCurDMapScreen();
		int returnx = Link->X;
		int returny = Link->Y;
		int returndir = Link->Dir;
 
		//Clear global variables used by Bottomless pits.
		Falling = 0;
		Warping = false;
 
		//Main Loop
		while(true)
		{
			NesMovementFix();
			Waitdraw();
			DoHolesLava();
			Waitframe();
		}
	}
}
This permits easier integration for users not used to modifying, or combining global scripts, and would simplify some support problems.

Why, also, did you place all of this after Waitdraw() here? I think I had to modify it for someone on PZC to put the holes code before waitdraw, and after ghost, to get something to work right. I have no idea for who, or why though. I clearly recall putting the code in container functions though, to solve problems with user support, and people botching this integration, at least twice.