diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c
index 1dd4c45b5bedc826e6c7761f592d7ed0b3827a8d..9ce1fed9b9ebf1bc90b14ec70658c30db47e3e39 100644
--- a/src/lua_playerlib.c
+++ b/src/lua_playerlib.c
@@ -97,6 +97,10 @@ static int player_get(lua_State *L)
 		lua_pushboolean(L, true);
 	else if (fastcmp(field,"name"))
 		lua_pushstring(L, player_names[plr-players]);
+	else if (fastcmp(field,"realmo"))
+		LUA_PushUserdata(L, plr->mo, META_MOBJ);
+	// Kept for backward-compatibility
+	// Should be fixed to work like "realmo" later
 	else if (fastcmp(field,"mo"))
 	{
 		if (plr->spectator)
@@ -396,7 +400,7 @@ static int player_set(lua_State *L)
 	if (hud_running)
 		return luaL_error(L, "Do not alter player_t in HUD rendering code!");
 
-	if (fastcmp(field,"mo")) {
+	if (fastcmp(field,"mo") || fastcmp(field,"realmo")) {
 		mobj_t *newmo = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ));
 		plr->mo->player = NULL; // remove player pointer from old mobj
 		(newmo->player = plr)->mo = newmo; // set player pointer for new mobj, and set new mobj as the player's mobj