From e2f800b5bc3f6a21f4b4103a9910d6ea1441dd62 Mon Sep 17 00:00:00 2001
From: Jisk <danielthesmartypants2017+jisk@gmail.com>
Date: Mon, 19 May 2025 19:21:47 +0000
Subject: [PATCH] Port mobjinfo.string from ring racers. (as mobjinfo.name)

---
 src/lua_infolib.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/lua_infolib.c b/src/lua_infolib.c
index a65ee23ebc..f277f2651d 100644
--- a/src/lua_infolib.c
+++ b/src/lua_infolib.c
@@ -1158,6 +1158,7 @@ enum mobjinfo_e
 	mobjinfo_activesound,
 	mobjinfo_flags,
 	mobjinfo_raisestate,
+	mobjinfo_name,
 };
 
 const char *const mobjinfo_opt[] = {
@@ -1185,6 +1186,7 @@ const char *const mobjinfo_opt[] = {
 	"activesound",
 	"flags",
 	"raisestate",
+	"name",
 	NULL,
 };
 
@@ -1199,6 +1201,8 @@ static int mobjinfo_get(lua_State *L)
 	I_Assert(info != NULL);
 	I_Assert(info >= mobjinfo);
 
+	mobjtype_t id = info-mobjinfo;
+
 	switch (field)
 	{
 	case mobjinfo_doomednum:
@@ -1273,6 +1277,21 @@ static int mobjinfo_get(lua_State *L)
 	case mobjinfo_raisestate:
 		lua_pushinteger(L, info->raisestate);
 		break;
+	case mobjinfo_name:
+		if (id < MT_FIRSTFREESLOT)
+		{
+			lua_pushstring(L, MOBJTYPE_LIST[id]+3);
+			return 1;
+		}
+
+		id -= MT_FIRSTFREESLOT;
+		if (id < NUMMOBJFREESLOTS && FREE_MOBJS[id])
+		{
+			lua_pushstring(L, FREE_MOBJS[id]);
+			return 1;
+		}
+
+		return 0;
 	default:
 		lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS);
 		I_Assert(lua_istable(L, -1));
-- 
GitLab