Then the problem is here
Code:
while (1)
   { 
      ...
		
      c_scan(my.x,my.pan,vector(360,0,750),SCAN_ENTS | SCAN_FLAG2 | IGNORE_ME);
			
      if (you) // player detected?
      {  
         pathSetNum = 1;
	
         path_setter();
					
         ...
			
         my.STATE = 2; 	
      }				
   }
	
   if (my.STATE == 2) 
   {				
      if((hero.z > 50) && (hero.z > my.z)) // player is above
         //    bottom of tower, and monster
      {
         pathSetNum = 2;
	 path_setter();
      }
			
      if((my.z >= 47) && (my.z <= 49)) // once on bottom of 
         //    tower, monster faces and runs toward player
      {
         path_set(my,NULL);
				 
         vec_set(temp.x, player.x);
         vec_sub(temp.x, my.x);
         vec_to_angle(my.pan, temp); // rotate the enemy towards the player
      }


With PathSetNum being toggled and filled.

please try this debug
Code:
action path_setter()
{
   VECTOR vec_next_node;

   path_set(my,"path_001");
	
   if(pathSetNum == 1)
   {
      my.NODE_NEXT=path_nextnode(my,1,1); // SET THE NODE
   }

   if(pathSetNum == 2)
   {	
      my.NODE_NEXT=4; // SET THE NODE
   }

   while(1)
   {

      // PATH NODE DETECTION AND FACING //////////////////////////////////
		
      if(vec_dist(my.x,vec_next_node.x) < 80) 
      {    
         if(pathSetNum == 1) 
         {
            my.NODE_NEXT=path_nextnode(my,my.NODE_NEXT,1); // Grab Next node on 
         }
	 if(pathSetNum == 2) 
	 {
	    my.NODE_NEXT-=1; // NODE GOES DOWN TO 3, BUT THEN JUMPS BACK UP TO 
                             //    4.
         }
      }
		
      path_getnode(my,my.NODE_NEXT,vec_next_node,NULL);  
         // Get next node - actual vector location
         // I BELIEVE THE ERROR IS HAPPENING HERE, PROBABLY WITH vec_next_node
	
      vec_to_angle(my.pan,vec_diff(NULL,vec_next_node,my.x)); // face the new 
                                                              //    node	
      
///////////
DEBUG_VAR(PathSetNum,500);
////////////////////////


wait(1);
   }
}



watch it flip-flop

Mal