diff --git a/src/lua_hook.h b/src/lua_hook.h
index da2dcdc380461cefd958b9f42bfbe738a98d724b..f3af7f30497c673315898f014798eabcc0d41a30 100644
--- a/src/lua_hook.h
+++ b/src/lua_hook.h
@@ -42,6 +42,7 @@ enum hook {
 	hook_LinedefExecute,
 	hook_PlayerMsg,
 	hook_HurtMsg,
+	hook_PlayerSpawn,
 
 	hook_MAX // last hook
 };
@@ -75,5 +76,6 @@ boolean LUAh_BotAI(mobj_t *sonic, mobj_t *tails, ticcmd_t *cmd); // Hook for B_B
 boolean LUAh_LinedefExecute(line_t *line, mobj_t *mo, sector_t *sector); // Hook for linedef executors
 boolean LUAh_PlayerMsg(int source, int target, int flags, char *msg); // Hook for chat messages
 boolean LUAh_HurtMsg(player_t *player, mobj_t *inflictor, mobj_t *source); // Hook for hurt messages
+#define LUAh_PlayerSpawn(player) LUAh_PlayerHook(player, hook_PlayerSpawn) // Hook for P_SpawnPlayer 
 
 #endif
diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c
index 0415d23e61acfe98705ec8855846b06297fcdf02..dfd6d703cc8380793856656d94d884522af19522 100644
--- a/src/lua_hooklib.c
+++ b/src/lua_hooklib.c
@@ -53,6 +53,7 @@ const char *const hookNames[hook_MAX+1] = {
 	"LinedefExecute",
 	"PlayerMsg",
 	"HurtMsg",
+	"PlayerSpawn",
 	NULL
 };
 
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 25ae8815a17392564337926ef0e5630d908ebd92..4916dbfdff0995e713b9347b2e208e778d92f0a9 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -8294,6 +8294,12 @@ void P_SpawnPlayer(INT32 playernum)
 
 	// Spawn with a pity shield if necessary.
 	P_DoPityCheck(p);
+	
+#ifdef HAVE_BLUA 
+	if (LUAh_PlayerSpawn(p)) // Lua hook for player spawning :)
+		;
+#endif
+
 }
 
 void P_AfterPlayerSpawn(INT32 playernum)