I created the door code from another tutorial as the one in the RPG didn't have one. The player can open doors, but ejection to the moon takes place. Here's my door code:

Code:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Template rpg doors and keys
// Written by Mike Schoenhals, May 11th, 2015.
// based on the Tutorial code by Bandicam, Devon Lively

//DOOR MUST HAVE BOUNDING BOX FLAG ENABLED!!!!!!!

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define key skill1
#define key skill2

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var door_range = 120;  //scan distance of door to player
var key_rotating_speed = 5; //how fast should the key rotate when visible

STRING* got_key_wav = "gotkey.wav";  //sets the file name for getting a key
STRING* door_opens_wav = "dooropens.wav";  //sets the file name for opening the door

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function key_collision()
{
	if (you == player)
	{
		my.skill67 = 1;
	}
}

//Below is a define skill statement needed for the customizable window in WED.  Note how they are commented out.

// skill1: key 0
action keys()
{
	set (my, PASSABLE); // the key is passable
	while (!player) {wait (1);} // wait until the player model is loaded
	while (vec_dist (player.x, my.x) > 50) // wait until the player comes close to the key
	{
		my.pan += 5 * time_step; // rotate while waiting for the player
		wait (1);	
	}
	player.skill70 = my.skill1; // now pass the value set inside the key's skill1 using Wed to player's skill70
	
	SND_CREATE_STATIC(got_the_key, got_key_wav); 
	snd_play(got_the_key, 80, 0); // play the "got the key" sound
	set (my, INVISIBLE); // make the key invisible
	wait (-1);
	ent_remove(my); // and then remove it after a second
}



function open_doors() // this function is called by each door
{

	set(me, POLYGON | SHADOW);
	
	var door_swing_speed = 5;
	var closed_pan = my.pan;
	var OPEN_OR_CLOSED = 0;
	//	if (is(my.FLAG1)) {OPEN_OR_CLOSED = 1;my.pan+=90;closed_pan = my.pan-90;}
	
	VECTOR door_handle;
	vec_for_vertex(door_handle, me, 1);
	
	while(1){wait(1);
		
		if(vec_dist(door_handle.x, player.x) < 100 && my.pan == closed_pan){
			set(me, PASSABLE);
			while(my.pan < closed_pan+90){wait(1);my.pan+=door_swing_speed;}
			SND_CREATE_STATIC(door_opens, door_opens_wav); // play the "door opens" sound
			snd_play(door_opens, 100, 0);
			//			door_sounds();  //runs the function for sounds below.
			reset(me, PASSABLE);
			while(key_enter){wait(1);}
		}
		
	}
	
}

// skill2: key 0
action door()
{
	while (!player) {wait (1);} // wait until the player is loaded
	vec_set (my.skill61, my.x); // store the xyz initial position of the door inside skill61... 63
	my.skill64 = my.pan; // store the initial pan angle

	while (1)
	
	{
		c_scan(my.x, my.pan, vector(360, 180, door_range), IGNORE_ME | SCAN_ENTS); // each door scans around it, trying to detect the player
		if (you) // detected an entity?
		
		{
			if (my.skill2 > 0) // this door needs a key?
			{
				if (player.skill70 == my.skill2) // the player has got the proper key? then let's open the door!
				{
					open_doors(); // this function opens the doors
					return; // the action stops afterwards
				}
			}	
			else // this door doesn't need a key
			{
				open_doors(); // this function opens the doors
				return; // the action stops afterwards
			}
		}
		
		wait (1);
	}
}