diff --git a/src/misn_lua.c b/src/misn_lua.c
index 162fe98..2796a57 100644
--- a/src/misn_lua.c
+++ b/src/misn_lua.c
@@ -118,6 +118,13 @@ static const luaL_reg player_methods[] = {
   { 0, 0 }
 };
 
+static const luaL_reg player_cond_methods[] = {
+  { "name", player_getname          },
+  { "ship", player_shipname         },
+  { "getFaction", player_getFaction },
+  { 0, 0 }
+};
+
 /* Hooks. */
 static int hook_land(lua_State* L);
 static int hook_takeoff(lua_State* L);
@@ -149,7 +156,7 @@ int misn_loadLibs(lua_State* L) {
   lua_loadVar(L, 0);
   lua_loadSpace(L, 0);
   lua_loadTime(L, 0);
-  lua_loadPlayer(L);
+  lua_loadPlayer(L, 0);
   lua_loadRnd(L);
   lua_loadTk(L);
   lua_loadHook(L);
@@ -160,6 +167,7 @@ int misn_loadLibs(lua_State* L) {
 int misn_loadCondLibs(lua_State* L) {
   lua_loadTime(L, 1);
   lua_loadVar(L, 1);
+  lua_loadPlayer(L, 1);
   return 0;
 }
 
@@ -177,8 +185,11 @@ int lua_loadVar(lua_State* L, int readonly) {
   return 0;
 }
 
-int lua_loadPlayer(lua_State* L) {
-  luaL_register(L, "player",    player_methods);
+int lua_loadPlayer(lua_State* L, int readonly) {
+  if(readonly == 0)
+    luaL_register(L, "player", player_methods);
+  else
+    luaL_register(L, "player", player_cond_methods);
   return 0;
 }
 
diff --git a/src/misn_lua.h b/src/misn_lua.h
index 199dee7..ee6ab64 100644
--- a/src/misn_lua.h
+++ b/src/misn_lua.h
@@ -13,7 +13,7 @@ int misn_loadCondLibs(lua_State* L); /* Safe read only stuff. */
 /* Individual library stuff. */
 int lua_loadMisn(lua_State* L);
 int lua_loadVar(lua_State* L, int readonly);
-int lua_loadPlayer(lua_State* L);
+int lua_loadPlayer(lua_State* L, int readonly);
 int lua_loadHook(lua_State* L);
 int lua_loadPilot(lua_State* L);