Merge branch 'mi-lua-fixes' into 'next'

Lua fixes

See merge request STJr/SRB2!2085
This commit is contained in:
Sal 2023-08-02 00:20:32 +00:00
commit cdf5890c5d
2 changed files with 25 additions and 1 deletions

View file

@ -2456,7 +2456,7 @@ static int lib_pFadeLight(lua_State *L)
static int lib_pIsFlagAtBase(lua_State *L) static int lib_pIsFlagAtBase(lua_State *L)
{ {
mobjtype_t flag = luaL_checkinteger(L, 1); mobjtype_t flag = luaL_checkinteger(L, 1);
NOHUD //HUDSAFE
INLEVEL INLEVEL
if (flag >= NUMMOBJTYPES) if (flag >= NUMMOBJTYPES)
return luaL_error(L, "mobj type %d out of range (0 - %d)", flag, NUMMOBJTYPES-1); return luaL_error(L, "mobj type %d out of range (0 - %d)", flag, NUMMOBJTYPES-1);

View file

@ -225,6 +225,18 @@ int LUA_PushGlobals(lua_State *L, const char *word)
} else if (fastcmp(word,"pointlimit")) { } else if (fastcmp(word,"pointlimit")) {
lua_pushinteger(L, cv_pointlimit.value); lua_pushinteger(L, cv_pointlimit.value);
return 1; return 1;
} else if (fastcmp(word, "redflag")) {
LUA_PushUserdata(L, redflag, META_MOBJ);
return 1;
} else if (fastcmp(word, "blueflag")) {
LUA_PushUserdata(L, blueflag, META_MOBJ);
return 1;
} else if (fastcmp(word, "rflagpoint")) {
LUA_PushUserdata(L, rflagpoint, META_MAPTHING);
return 1;
} else if (fastcmp(word, "bflagpoint")) {
LUA_PushUserdata(L, bflagpoint, META_MAPTHING);
return 1;
// begin map vars // begin map vars
} else if (fastcmp(word,"spstage_start")) { } else if (fastcmp(word,"spstage_start")) {
lua_pushinteger(L, spstage_start); lua_pushinteger(L, spstage_start);
@ -977,6 +989,7 @@ enum
ARCH_MAPHEADER, ARCH_MAPHEADER,
ARCH_SKINCOLOR, ARCH_SKINCOLOR,
ARCH_MOUSE, ARCH_MOUSE,
ARCH_SKIN,
ARCH_TEND=0xFF, ARCH_TEND=0xFF,
}; };
@ -1005,6 +1018,7 @@ static const struct {
{META_MAPHEADER, ARCH_MAPHEADER}, {META_MAPHEADER, ARCH_MAPHEADER},
{META_SKINCOLOR, ARCH_SKINCOLOR}, {META_SKINCOLOR, ARCH_SKINCOLOR},
{META_MOUSE, ARCH_MOUSE}, {META_MOUSE, ARCH_MOUSE},
{META_SKIN, ARCH_SKIN},
{NULL, ARCH_NULL} {NULL, ARCH_NULL}
}; };
@ -1326,6 +1340,13 @@ static UINT8 ArchiveValue(int TABLESINDEX, int myindex)
WRITEUINT8(save_p, m == &mouse ? 1 : 2); WRITEUINT8(save_p, m == &mouse ? 1 : 2);
break; break;
} }
case ARCH_SKIN:
{
skin_t *skin = *((skin_t **)lua_touserdata(gL, myindex));
WRITEUINT8(save_p, ARCH_SKIN);
WRITEUINT8(save_p, skin - skins); // UINT8 because MAXSKINS is only 32
break;
}
default: default:
WRITEUINT8(save_p, ARCH_NULL); WRITEUINT8(save_p, ARCH_NULL);
return 2; return 2;
@ -1572,6 +1593,9 @@ static UINT8 UnArchiveValue(int TABLESINDEX)
case ARCH_MOUSE: case ARCH_MOUSE:
LUA_PushUserdata(gL, READUINT16(save_p) == 1 ? &mouse : &mouse2, META_MOUSE); LUA_PushUserdata(gL, READUINT16(save_p) == 1 ? &mouse : &mouse2, META_MOUSE);
break; break;
case ARCH_SKIN:
LUA_PushUserdata(gL, &skins[READUINT8(save_p)], META_SKIN);
break;
case ARCH_TEND: case ARCH_TEND:
return 1; return 1;
} }