From e8760fe5dd6ec67c21fc1659458bc0078819d730 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Wed, 22 Jan 2020 23:08:57 +0100 Subject: [PATCH 01/41] Update Lua I/O support to 2.2 --- src/CMakeLists.txt | 1 + src/blua/Makefile.cfg | 1 + src/blua/linit.c | 1 + src/blua/liolib.c | 720 ++++++++++++++++++++++++++++++++++++++++++ src/blua/lualib.h | 3 + src/d_clisrv.c | 26 ++ src/d_clisrv.h | 6 + src/d_main.c | 3 + src/d_net.c | 8 + src/d_netcmd.c | 4 +- src/d_netcmd.h | 1 + src/d_netfil.c | 252 ++++++++++++++- src/d_netfil.h | 40 +++ 13 files changed, 1058 insertions(+), 8 deletions(-) create mode 100644 src/blua/liolib.c diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e8c9c3182..4971736ca 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -279,6 +279,7 @@ if(${SRB2_CONFIG_HAVE_BLUA}) blua/lfunc.c blua/lgc.c blua/linit.c + blua/liolib.c blua/llex.c blua/lmem.c blua/lobject.c diff --git a/src/blua/Makefile.cfg b/src/blua/Makefile.cfg index 8d2e73714..659faf3c8 100644 --- a/src/blua/Makefile.cfg +++ b/src/blua/Makefile.cfg @@ -18,6 +18,7 @@ OBJS:=$(OBJS) \ $(OBJDIR)/ldo.o \ $(OBJDIR)/lfunc.o \ $(OBJDIR)/linit.o \ + $(OBJDIR)/liolib.o \ $(OBJDIR)/llex.o \ $(OBJDIR)/lmem.o \ $(OBJDIR)/lobject.o \ diff --git a/src/blua/linit.c b/src/blua/linit.c index 52b02dbe7..d17390b20 100644 --- a/src/blua/linit.c +++ b/src/blua/linit.c @@ -17,6 +17,7 @@ static const luaL_Reg lualibs[] = { {"", luaopen_base}, {LUA_TABLIBNAME, luaopen_table}, + {LUA_IOLIBNAME, luaopen_io}, {LUA_STRLIBNAME, luaopen_string}, {NULL, NULL} }; diff --git a/src/blua/liolib.c b/src/blua/liolib.c new file mode 100644 index 000000000..6ebde08a3 --- /dev/null +++ b/src/blua/liolib.c @@ -0,0 +1,720 @@ +/* +** $Id: liolib.c,v 2.73.1.3 2008/01/18 17:47:43 roberto Exp $ +** Standard I/O (and system) library +** See Copyright Notice in lua.h +*/ + + +#include +#include +#include +#include + +#define liolib_c +#define LUA_LIB + +#include "lua.h" + +#include "lauxlib.h" +#include "lualib.h" +#include "../i_system.h" +#include "../g_game.h" +#include "../d_netfil.h" +#include "../lua_libs.h" +#include "../byteptr.h" +#include "../lua_script.h" +#include "../m_misc.h" + + +#define IO_INPUT 1 +#define IO_OUTPUT 2 + +#define FILELIMIT (1024 * 1024) // Size limit for reading/writing files + +#define FMT_FILECALLBACKID "file_callback_%d" + + +static const char *const fnames[] = {"input", "output"}; +static const char *whitelist[] = { // Allow scripters to write files of these types to SRB2's folder + ".txt", + ".sav2", + ".cfg", + ".png", + ".bmp" +}; + + +static int pushresult (lua_State *L, int i, const char *filename) { + int en = errno; /* calls to Lua API may change this value */ + if (i) { + lua_pushboolean(L, 1); + return 1; + } + else { + lua_pushnil(L); + if (filename) + lua_pushfstring(L, "%s: %s", filename, strerror(en)); + else + lua_pushfstring(L, "%s", strerror(en)); + lua_pushinteger(L, en); + return 3; + } +} + + +static void fileerror (lua_State *L, int arg, const char *filename) { + lua_pushfstring(L, "%s: %s", filename, strerror(errno)); + luaL_argerror(L, arg, lua_tostring(L, -1)); +} + + +#define tofilep(L) ((FILE **)luaL_checkudata(L, 1, LUA_FILEHANDLE)) + + +static int io_type (lua_State *L) { + void *ud; + luaL_checkany(L, 1); + ud = lua_touserdata(L, 1); + lua_getfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE); + if (ud == NULL || !lua_getmetatable(L, 1) || !lua_rawequal(L, -2, -1)) + lua_pushnil(L); /* not a file */ + else if (*((FILE **)ud) == NULL) + lua_pushliteral(L, "closed file"); + else + lua_pushliteral(L, "file"); + return 1; +} + + +static FILE *tofile (lua_State *L) { + FILE **f = tofilep(L); + if (*f == NULL) + luaL_error(L, "attempt to use a closed file"); + return *f; +} + + + +/* +** When creating file handles, always creates a `closed' file handle +** before opening the actual file; so, if there is a memory error, the +** file is not left opened. +*/ +static FILE **newfile (lua_State *L) { + FILE **pf = (FILE **)lua_newuserdata(L, sizeof(FILE *)); + *pf = NULL; /* file handle is currently `closed' */ + luaL_getmetatable(L, LUA_FILEHANDLE); + lua_setmetatable(L, -2); + return pf; +} + + +/* +** function to (not) close the standard files stdin, stdout, and stderr +*/ +static int io_noclose (lua_State *L) { + lua_pushnil(L); + lua_pushliteral(L, "cannot close standard file"); + return 2; +} + + +/* +** function to close regular files +*/ +static int io_fclose (lua_State *L) { + FILE **p = tofilep(L); + int ok = (fclose(*p) == 0); + *p = NULL; + return pushresult(L, ok, NULL); +} + + +static int aux_close (lua_State *L) { + lua_getfenv(L, 1); + lua_getfield(L, -1, "__close"); + return (lua_tocfunction(L, -1))(L); +} + + +static int io_gc (lua_State *L) { + FILE *f = *tofilep(L); + /* ignore closed files */ + if (f != NULL) + aux_close(L); + return 0; +} + + +static int io_tostring (lua_State *L) { + FILE *f = *tofilep(L); + if (f == NULL) + lua_pushliteral(L, "file (closed)"); + else + lua_pushfstring(L, "file (%p)", f); + return 1; +} + + +// Create directories in the path +void MakePathDirs(char *path) +{ + char *c; + + for (c = path; *c; c++) + if (*c == '/' || *c == '\\') + { + char sep = *c; + *c = '\0'; + I_mkdir(path, 0755); + *c = sep; + } +} + + +static int io_open (lua_State *L) { + FILE **pf; + const char *filename = luaL_checkstring(L, 1); + boolean pass = false; + size_t i; + int length = strlen(filename); + const char *mode = luaL_optstring(L, 2, "r"); + luafiletransfer_t *filetransfer; + + if (strchr(filename, '\\')) + { + luaL_error(L, "access denied to %s: \\ is not allowed, use / instead", filename); + return pushresult(L,0,filename); + } + + for (i = 0; i < (sizeof (whitelist) / sizeof(const char *)); i++) + if (!stricmp(&filename[length - strlen(whitelist[i])], whitelist[i])) + { + pass = true; + break; + } + if (strstr(filename, "./") + || strstr(filename, "..") || strchr(filename, ':') + || filename[0] == '/' + || !pass) + { + luaL_error(L, "access denied to %s", filename); + return pushresult(L,0,filename); + } + + luaL_checktype(L, 4, LUA_TFUNCTION); + + if (lua_isnil(L, 3) && (strchr(mode, 'r') || strchr(mode, '+'))) // Synched reading + { + AddLuaFileTransfer(filename, mode); + + /*pf = newfile(L); + *pf = fopen(realfilename, mode); + return (*pf == NULL) ? pushresult(L, 0, filename) : 1;*/ + } + else // Local I/O + { + char *realfilename = va("%s" PATHSEP "%s", luafiledir, filename); + player_t *player = *((player_t **)luaL_checkudata(L, 3, META_PLAYER)); + + if (!player) + return LUA_ErrInvalid(L, "player_t"); + + if (player != &players[consoleplayer]) + return 0; + + if (client && strnicmp(filename, "shared/", strlen("shared/"))) + I_Error("Access denied to %s\n" + "Clients can only access files stored in luafiles/shared/\n", + filename); + + // Prevent access if the file is being downloaded + for (filetransfer = luafiletransfers; filetransfer; filetransfer = filetransfer->next) + if (!stricmp(filetransfer->filename, filename)) + I_Error("Access denied to %s\n" + "Files can't be opened while being downloaded\n", + filename); + + MakePathDirs(realfilename); + + // The callback is the last argument, no need to push it again + + // Push the first argument (file handle) on the stack + pf = newfile(gL); // Create and push the file handle + *pf = fopen(realfilename, mode); // Open the file + if (!*pf) + { + lua_pop(gL, 1); + lua_pushnil(gL); + } + + // Push the second argument (file name) on the stack + lua_pushstring(gL, filename); + + // Call the callback + LUA_Call(gL, 2); + + // Close the file + if (*pf) + { + fclose(*pf); + *pf = NULL; + } + } + + return 0; // !!! Todo: error handling? +} + + +void Got_LuaFile(UINT8 **cp, INT32 playernum) +{ + FILE **pf; + boolean success = READUINT8(*cp); // The first (and only) byte indicates whether the file could be opened + + if (playernum != serverplayer) + { + CONS_Alert(CONS_WARNING, M_GetText("Illegal luafile command received from %s\n"), player_names[playernum]); + if (server) + SendKick(playernum, KICK_MSG_CON_FAIL); + return; + } + + if (!luafiletransfers) + I_Error("No Lua file transfer\n"); + + // Retrieve the callback and push it on the stack + lua_pushfstring(gL, FMT_FILECALLBACKID, luafiletransfers->id); + lua_gettable(gL, LUA_REGISTRYINDEX); + + // Push the first argument (file handle or nil) on the stack + if (success) + { + pf = newfile(gL); // Create and push the file handle + *pf = fopen(luafiletransfers->realfilename, luafiletransfers->mode); // Open the file + if (!*pf) + I_Error("Can't open file \"%s\"\n", luafiletransfers->realfilename); // The file SHOULD exist + } + else + lua_pushnil(gL); + + // Push the second argument (file name) on the stack + lua_pushstring(gL, luafiletransfers->filename); + + // Call the callback + LUA_Call(gL, 2); + + if (success) + { + // Close the file + if (*pf) + { + fclose(*pf); + *pf = NULL; + } + + if (client) + remove(luafiletransfers->realfilename); + } + + RemoveLuaFileTransfer(); + + if (server && luafiletransfers) + { + if (FIL_FileOK(luafiletransfers->realfilename)) + SV_PrepareSendLuaFileToNextNode(); + else + { + // Send a net command with 0 as its first byte to indicate the file couldn't be opened + UINT8 success = 0; + SendNetXCmd(XD_LUAFILE, &success, 1); + } + } +} + + +void StoreLuaFileCallback(INT32 id) +{ + lua_pushfstring(gL, FMT_FILECALLBACKID, id); + lua_pushvalue(gL, 4); // Parameter 4 is the callback + lua_settable(gL, LUA_REGISTRYINDEX); // registry[callbackid] = callback +} + + +void RemoveLuaFileCallback(INT32 id) +{ + lua_pushfstring(gL, FMT_FILECALLBACKID, id); + lua_pushnil(gL); + lua_settable(gL, LUA_REGISTRYINDEX); // registry[callbackid] = nil +} + +static int io_tmpfile (lua_State *L) { + FILE **pf = newfile(L); + *pf = tmpfile(); + return (*pf == NULL) ? pushresult(L, 0, NULL) : 1; +} + + +static FILE *getiofile (lua_State *L, int findex) { + FILE *f; + lua_rawgeti(L, LUA_ENVIRONINDEX, findex); + f = *(FILE **)lua_touserdata(L, -1); + if (f == NULL) + luaL_error(L, "standard %s file is closed", fnames[findex - 1]); + return f; +} + + +static int g_iofile (lua_State *L, int f, const char *mode) { + if (!lua_isnoneornil(L, 1)) { + const char *filename = lua_tostring(L, 1); + if (filename) { + FILE **pf = newfile(L); + *pf = fopen(filename, mode); + if (*pf == NULL) + fileerror(L, 1, filename); + } + else { + tofile(L); /* check that it's a valid file handle */ + lua_pushvalue(L, 1); + } + lua_rawseti(L, LUA_ENVIRONINDEX, f); + } + /* return current value */ + lua_rawgeti(L, LUA_ENVIRONINDEX, f); + return 1; +} + + +static int io_input (lua_State *L) { + return g_iofile(L, IO_INPUT, "r"); +} + + +static int io_output (lua_State *L) { + return g_iofile(L, IO_OUTPUT, "w"); +} + + +static int io_readline (lua_State *L); + + +static void aux_lines (lua_State *L, int idx, int toclose) { + lua_pushvalue(L, idx); + lua_pushboolean(L, toclose); /* close/not close file when finished */ + lua_pushcclosure(L, io_readline, 2); +} + + +static int f_lines (lua_State *L) { + tofile(L); /* check that it's a valid file handle */ + aux_lines(L, 1, 0); + return 1; +} + + +static int io_lines (lua_State *L) { + if (lua_isnoneornil(L, 1)) { /* no arguments? */ + /* will iterate over default input */ + lua_rawgeti(L, LUA_ENVIRONINDEX, IO_INPUT); + return f_lines(L); + } + else { + const char *filename = luaL_checkstring(L, 1); + FILE **pf = newfile(L); + *pf = fopen(filename, "r"); + if (*pf == NULL) + fileerror(L, 1, filename); + aux_lines(L, lua_gettop(L), 1); + return 1; + } +} + + +/* +** {====================================================== +** READ +** ======================================================= +*/ + + +static int read_number (lua_State *L, FILE *f) { + lua_Number d; + if (fscanf(f, LUA_NUMBER_SCAN, &d) == 1) { + lua_pushnumber(L, d); + return 1; + } + else return 0; /* read fails */ +} + + +static int test_eof (lua_State *L, FILE *f) { + int c = getc(f); + ungetc(c, f); + lua_pushlstring(L, NULL, 0); + return (c != EOF); +} + + +static int read_line (lua_State *L, FILE *f) { + luaL_Buffer b; + luaL_buffinit(L, &b); + for (;;) { + size_t l; + char *p = luaL_prepbuffer(&b); + if (fgets(p, LUAL_BUFFERSIZE, f) == NULL) { /* eof? */ + luaL_pushresult(&b); /* close buffer */ + return (lua_objlen(L, -1) > 0); /* check whether read something */ + } + l = strlen(p); + if (l == 0 || p[l-1] != '\n') + luaL_addsize(&b, l); + else { + luaL_addsize(&b, l - 1); /* do not include `eol' */ + luaL_pushresult(&b); /* close buffer */ + return 1; /* read at least an `eol' */ + } + } +} + + +static int read_chars (lua_State *L, FILE *f, size_t n) { + size_t rlen; /* how much to read */ + size_t nr; /* number of chars actually read */ + luaL_Buffer b; + luaL_buffinit(L, &b); + rlen = LUAL_BUFFERSIZE; /* try to read that much each time */ + do { + char *p = luaL_prepbuffer(&b); + if (rlen > n) rlen = n; /* cannot read more than asked */ + nr = fread(p, sizeof(char), rlen, f); + luaL_addsize(&b, nr); + n -= nr; /* still have to read `n' chars */ + } while (n > 0 && nr == rlen); /* until end of count or eof */ + luaL_pushresult(&b); /* close buffer */ + return (n == 0 || lua_objlen(L, -1) > 0); +} + + +static int g_read (lua_State *L, FILE *f, int first) { + int nargs = lua_gettop(L) - 1; + int success; + int n; + clearerr(f); + if (nargs == 0) { /* no arguments? */ + success = read_line(L, f); + n = first+1; /* to return 1 result */ + } + else { /* ensure stack space for all results and for auxlib's buffer */ + luaL_checkstack(L, nargs+LUA_MINSTACK, "too many arguments"); + success = 1; + for (n = first; nargs-- && success; n++) { + if (lua_type(L, n) == LUA_TNUMBER) { + size_t l = (size_t)lua_tointeger(L, n); + success = (l == 0) ? test_eof(L, f) : read_chars(L, f, l); + } + else { + const char *p = lua_tostring(L, n); + luaL_argcheck(L, p && p[0] == '*', n, "invalid option"); + switch (p[1]) { + case 'n': /* number */ + success = read_number(L, f); + break; + case 'l': /* line */ + success = read_line(L, f); + break; + case 'a': /* file */ + read_chars(L, f, ~((size_t)0)); /* read MAX_SIZE_T chars */ + success = 1; /* always success */ + break; + default: + return luaL_argerror(L, n, "invalid format"); + } + } + } + } + if (ferror(f)) + return pushresult(L, 0, NULL); + if (!success) { + lua_pop(L, 1); /* remove last result */ + lua_pushnil(L); /* push nil instead */ + } + return n - first; +} + + +static int io_read (lua_State *L) { + return g_read(L, getiofile(L, IO_INPUT), 1); +} + + +static int f_read (lua_State *L) { + return g_read(L, tofile(L), 2); +} + + +static int io_readline (lua_State *L) { + FILE *f = *(FILE **)lua_touserdata(L, lua_upvalueindex(1)); + int sucess; + if (f == NULL) /* file is already closed? */ + luaL_error(L, "file is already closed"); + sucess = read_line(L, f); + if (ferror(f)) + return luaL_error(L, "%s", strerror(errno)); + if (sucess) return 1; + else { /* EOF */ + if (lua_toboolean(L, lua_upvalueindex(2))) { /* generator created file? */ + lua_settop(L, 0); + lua_pushvalue(L, lua_upvalueindex(1)); + aux_close(L); /* close it */ + } + return 0; + } +} + +/* }====================================================== */ + + +static int g_write (lua_State *L, FILE *f, int arg) { + int nargs = lua_gettop(L) - 1; + int status = 1; + size_t count; + for (; nargs--; arg++) { + if (lua_type(L, arg) == LUA_TNUMBER) { + /* optimization: could be done exactly as for strings */ + status = status && + fprintf(f, LUA_NUMBER_FMT, lua_tonumber(L, arg)) > 0; + } + else { + size_t l; + const char *s = luaL_checklstring(L, arg, &l); + count += l; + if (ftell(f) + l > FILELIMIT) + { + luaL_error(L,"write limit bypassed in file. Changes have been discarded."); + break; + } + status = status && (fwrite(s, sizeof(char), l, f) == l); + } + } + return pushresult(L, status, NULL); +} + + +static int io_write (lua_State *L) { + return g_write(L, getiofile(L, IO_OUTPUT), 1); +} + + +static int f_write (lua_State *L) { + return g_write(L, tofile(L), 2); +} + + +static int f_seek (lua_State *L) { + static const int mode[] = {SEEK_SET, SEEK_CUR, SEEK_END}; + static const char *const modenames[] = {"set", "cur", "end", NULL}; + FILE *f = tofile(L); + int op = luaL_checkoption(L, 2, "cur", modenames); + long offset = luaL_optlong(L, 3, 0); + op = fseek(f, offset, mode[op]); + if (op) + return pushresult(L, 0, NULL); /* error */ + else { + lua_pushinteger(L, ftell(f)); + return 1; + } +} + + +static int f_setvbuf (lua_State *L) { + static const int mode[] = {_IONBF, _IOFBF, _IOLBF}; + static const char *const modenames[] = {"no", "full", "line", NULL}; + FILE *f = tofile(L); + int op = luaL_checkoption(L, 2, NULL, modenames); + lua_Integer sz = luaL_optinteger(L, 3, LUAL_BUFFERSIZE); + int res = setvbuf(f, NULL, mode[op], sz); + return pushresult(L, res == 0, NULL); +} + + + +static int io_flush (lua_State *L) { + return pushresult(L, fflush(getiofile(L, IO_OUTPUT)) == 0, NULL); +} + + +static int f_flush (lua_State *L) { + return pushresult(L, fflush(tofile(L)) == 0, NULL); +} + + +static const luaL_Reg iolib[] = { + {"flush", io_flush}, + {"input", io_input}, + {"lines", io_lines}, + {"open", io_open}, + {"output", io_output}, + {"read", io_read}, + {"tmpfile", io_tmpfile}, + {"type", io_type}, + {"write", io_write}, + {NULL, NULL} +}; + + +static const luaL_Reg flib[] = { + {"flush", f_flush}, + {"lines", f_lines}, + {"read", f_read}, + {"seek", f_seek}, + {"setvbuf", f_setvbuf}, + {"write", f_write}, + {"__gc", io_gc}, + {"__tostring", io_tostring}, + {NULL, NULL} +}; + + +static void createmeta (lua_State *L) { + luaL_newmetatable(L, LUA_FILEHANDLE); /* create metatable for file handles */ + lua_pushvalue(L, -1); /* push metatable */ + lua_setfield(L, -2, "__index"); /* metatable.__index = metatable */ + luaL_register(L, NULL, flib); /* file methods */ +} + + +static void createstdfile (lua_State *L, FILE *f, int k, const char *fname) { + *newfile(L) = f; + if (k > 0) { + lua_pushvalue(L, -1); + lua_rawseti(L, LUA_ENVIRONINDEX, k); + } + lua_pushvalue(L, -2); /* copy environment */ + lua_setfenv(L, -2); /* set it */ + lua_setfield(L, -3, fname); +} + + +static void newfenv (lua_State *L, lua_CFunction cls) { + lua_createtable(L, 0, 1); + lua_pushcfunction(L, cls); + lua_setfield(L, -2, "__close"); +} + + +LUALIB_API int luaopen_io (lua_State *L) { + createmeta(L); + /* create (private) environment (with fields IO_INPUT, IO_OUTPUT, __close) */ + newfenv(L, io_fclose); + lua_replace(L, LUA_ENVIRONINDEX); + /* open library */ + luaL_register(L, LUA_IOLIBNAME, iolib); + /* create (and set) default files */ + newfenv(L, io_noclose); /* close function for default files */ + createstdfile(L, stdin, IO_INPUT, "stdin"); + createstdfile(L, stdout, IO_OUTPUT, "stdout"); + createstdfile(L, stderr, 0, "stderr"); + lua_pop(L, 1); /* pop environment for default files */ + return 1; +} + diff --git a/src/blua/lualib.h b/src/blua/lualib.h index 6ebe27287..4ea97edf3 100644 --- a/src/blua/lualib.h +++ b/src/blua/lualib.h @@ -21,6 +21,9 @@ LUALIB_API int (luaopen_base) (lua_State *L); #define LUA_TABLIBNAME "table" LUALIB_API int (luaopen_table) (lua_State *L); +#define LUA_IOLIBNAME "io" +LUALIB_API int (luaopen_io) (lua_State *L); + #define LUA_STRLIBNAME "string" LUALIB_API int (luaopen_string) (lua_State *L); diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 8b87672bf..6b0f49544 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -3164,6 +3164,8 @@ void D_QuitNetGame(void) // abort send/receive of files CloseNetFile(); + RemoveLuaFileTransfers(); + waitingforluafiletransfer = false; if (server) { @@ -3534,6 +3536,10 @@ static void HandleConnect(SINT8 node) SV_SendRefuse(node, M_GetText("Too many players from\nthis node.")); else if (netgame && !netbuffer->u.clientcfg.localplayers) // Stealth join? SV_SendRefuse(node, M_GetText("No players from\nthis node.")); +#ifdef HAVE_BLUA + else if (luafiletransfers) + SV_SendRefuse(node, M_GetText("The server is broadcasting a file\nrequested by a Lua script.\nPlease wait a bit and then\ntry rejoining.")); +#endif else { #ifndef NONET @@ -4117,6 +4123,20 @@ static void HandlePacketFromPlayer(SINT8 node) Net_CloseConnection(node); nodeingame[node] = false; break; +#ifdef HAVE_BLUA + case PT_ASKLUAFILE: + if (server && luafiletransfers && luafiletransfers->nodestatus[node] == LFTNS_ASKED) + { + char *name = va("%s" PATHSEP "%s", luafiledir, luafiletransfers->filename); + boolean textmode = !strchr(luafiletransfers->mode, 'b'); + SV_SendLuaFile(node, name, textmode); + } + break; + case PT_HASLUAFILE: + if (server && luafiletransfers && luafiletransfers->nodestatus[node] == LFTNS_SENDING) + SV_HandleLuaFileSent(node); + break; +#endif // -------------------------------------------- CLIENT RECEIVE ---------- case PT_RESYNCHEND: // Only accept PT_RESYNCHEND from the server. @@ -4244,6 +4264,12 @@ static void HandlePacketFromPlayer(SINT8 node) if (client) Got_Filetxpak(); break; +#ifdef HAVE_BLUA + case PT_SENDINGLUAFILE: + if (client) + CL_PrepareDownloadLuaFile(); + break; +#endif default: DEBFILE(va("UNKNOWN PACKET TYPE RECEIVED %d from host %d\n", netbuffer->packettype, node)); diff --git a/src/d_clisrv.h b/src/d_clisrv.h index 408d0f8dd..4aaa9be6b 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -67,6 +67,12 @@ typedef enum PT_RESYNCHEND, // Player is now resynched and is being requested to remake the gametic PT_RESYNCHGET, // Player got resynch packet +#ifdef HAVE_BLUA + PT_SENDINGLUAFILE, // Server telling a client Lua needs to open a file + PT_ASKLUAFILE, // Client telling the server they don't have the file + PT_HASLUAFILE, // Client telling the server they have the file +#endif + // Add non-PT_CANFAIL packet types here to avoid breaking MS compatibility. PT_CANFAIL, // This is kind of a priority. Anything bigger than CANFAIL diff --git a/src/d_main.c b/src/d_main.c index 15d3c8041..b4eebb275 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1113,6 +1113,7 @@ void D_SRB2Main(void) // can't use sprintf since there is %u in savegamename strcatbf(savegamename, srb2home, PATHSEP); + snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", srb2home); #else snprintf(srb2home, sizeof srb2home, "%s", userhome); snprintf(downloaddir, sizeof downloaddir, "%s", userhome); @@ -1123,6 +1124,8 @@ void D_SRB2Main(void) // can't use sprintf since there is %u in savegamename strcatbf(savegamename, userhome, PATHSEP); + + snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", userhome); #endif } diff --git a/src/d_net.c b/src/d_net.c index 573c9cfe9..ddb991235 100644 --- a/src/d_net.c +++ b/src/d_net.c @@ -715,6 +715,10 @@ void Net_CloseConnection(INT32 node) InitNode(&nodes[node]); SV_AbortSendFiles(node); +#ifdef HAVE_BLUA + if (server) + SV_AbortLuaFileTransfer(node); +#endif I_NetFreeNodenum(node); #endif } @@ -799,6 +803,10 @@ static const char *packettypename[NUMPACKETTYPE] = "RESYNCHEND", "RESYNCHGET", + "SENDINGLUAFILE", + "ASKLUAFILE", + "HASLUAFILE", + "FILEFRAGMENT", "TEXTCMD", "TEXTCMD2", diff --git a/src/d_netcmd.c b/src/d_netcmd.c index a597bad83..42b560a85 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -417,7 +417,8 @@ const char *netxcmdnames[MAXNETXCMD - 1] = "SUICIDE", #ifdef HAVE_BLUA "LUACMD", - "LUAVAR" + "LUAVAR", + "LUAFILE" #endif }; @@ -453,6 +454,7 @@ void D_RegisterServerCommands(void) RegisterNetXCmd(XD_RUNSOC, Got_RunSOCcmd); #ifdef HAVE_BLUA RegisterNetXCmd(XD_LUACMD, Got_Luacmd); + RegisterNetXCmd(XD_LUAFILE, Got_LuaFile); #endif // Remote Administration diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 8f857c6db..5f3967a67 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -145,6 +145,7 @@ typedef enum #ifdef HAVE_BLUA XD_LUACMD, // 22 XD_LUAVAR, // 23 + XD_LUAFILE, // 24 #endif MAXNETXCMD } netxcmd_t; diff --git a/src/d_netfil.c b/src/d_netfil.c index 93b4b1990..5ceec2aaa 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -69,6 +69,7 @@ typedef struct filetx_s UINT32 size; // Size of the file UINT8 fileid; INT32 node; // Destination + boolean textmode; // For files requested by Lua without the "b" option struct filetx_s *next; // Next file in the list } filetx_t; @@ -94,6 +95,13 @@ char downloaddir[512] = "DOWNLOAD"; INT32 lastfilenum = -1; #endif +#ifdef HAVE_BLUA +luafiletransfer_t *luafiletransfers = NULL; +boolean waitingforluafiletransfer = false; +char luafiledir[256] = "luafiles"; +#endif + + /** Fills a serverinfo packet with information about wad files loaded. * * \todo Give this function a better name since it is in global scope. @@ -159,6 +167,7 @@ void D_ParseFileneeded(INT32 fileneedednum_parm, UINT8 *fileneededstr) fileneeded[i].file = NULL; // The file isn't open yet READSTRINGN(p, fileneeded[i].filename, MAX_WADPATH); // The next bytes are the file name READMEM(p, fileneeded[i].md5sum, 16); // The last 16 bytes are the file checksum + fileneeded[i].textmode = false; } } @@ -170,6 +179,7 @@ void CL_PrepareDownloadSaveGame(const char *tmpsave) fileneeded[0].file = NULL; memset(fileneeded[0].md5sum, 0, 16); strcpy(fileneeded[0].filename, tmpsave); + fileneeded[0].textmode = false; } /** Checks the server to see if we CAN download all the files, @@ -448,6 +458,164 @@ void CL_LoadServerFiles(void) } } +#ifdef HAVE_BLUA +void AddLuaFileTransfer(const char *filename, const char *mode) +{ + luafiletransfer_t **prevnext; // A pointer to the "next" field of the last transfer in the list + luafiletransfer_t *filetransfer; + static INT32 id; + + //CONS_Printf("AddLuaFileTransfer \"%s\"\n", filename); + + // Find the last transfer in the list and set a pointer to its "next" field + prevnext = &luafiletransfers; + while (*prevnext) + prevnext = &((*prevnext)->next); + + // Allocate file transfer information and append it to the transfer list + filetransfer = malloc(sizeof(luafiletransfer_t)); + if (!filetransfer) + I_Error("AddLuaFileTransfer: Out of memory\n"); + *prevnext = filetransfer; + filetransfer->next = NULL; + + // Allocate the file name + filetransfer->filename = strdup(filename); + if (!filetransfer->filename) + I_Error("AddLuaFileTransfer: Out of memory\n"); + + // Create and allocate the real file name + if (server) + filetransfer->realfilename = strdup(va("%s" PATHSEP "%s", + luafiledir, filename)); + else + filetransfer->realfilename = strdup(va("%s" PATHSEP "shared" PATHSEP "$$$%d%d.tmp", + luafiledir, rand(), rand())); + if (!filetransfer->realfilename) + I_Error("AddLuaFileTransfer: Out of memory\n"); + + strlcpy(filetransfer->mode, mode, sizeof(filetransfer->mode)); + + if (server) + { + INT32 i; + + // Set status to "waiting" for everyone + for (i = 0; i < MAXNETNODES; i++) + filetransfer->nodestatus[i] = LFTNS_WAITING; + + if (!luafiletransfers->next) // Only if there is no transfer already going on + { + if (FIL_FileOK(filetransfer->realfilename)) + SV_PrepareSendLuaFileToNextNode(); + else + { + // Send a net command with 0 as its first byte to indicate the file couldn't be opened + UINT8 success = 0; + SendNetXCmd(XD_LUAFILE, &success, 1); + } + } + } + + // Store the callback so it can be called once everyone has the file + filetransfer->id = id; + StoreLuaFileCallback(id); + id++; + + if (waitingforluafiletransfer) + { + waitingforluafiletransfer = false; + CL_PrepareDownloadLuaFile(); + } +} + +void SV_PrepareSendLuaFileToNextNode(void) +{ + INT32 i; + UINT8 success = 1; + + // Find a client to send the file to + for (i = 1; i < MAXNETNODES; i++) + if (nodeingame[i] && luafiletransfers->nodestatus[i] == LFTNS_WAITING) // Node waiting + { + // Tell the client we're about to send them the file + netbuffer->packettype = PT_SENDINGLUAFILE; + if (!HSendPacket(i, true, 0, 0)) + I_Error("Failed to send a PT_SENDINGLUAFILE packet\n"); // !!! Todo: Handle failure a bit better lol + + luafiletransfers->nodestatus[i] = LFTNS_ASKED; + + return; + } + + // No client found, everyone has the file + // Send a net command with 1 as its first byte to indicate the file could be opened + SendNetXCmd(XD_LUAFILE, &success, 1); +} + +void SV_HandleLuaFileSent(UINT8 node) +{ + luafiletransfers->nodestatus[node] = LFTNS_SENT; + SV_PrepareSendLuaFileToNextNode(); +} + +void RemoveLuaFileTransfer(void) +{ + luafiletransfer_t *filetransfer = luafiletransfers; + + RemoveLuaFileCallback(filetransfer->id); + + luafiletransfers = filetransfer->next; + + free(filetransfer->filename); + free(filetransfer->realfilename); + free(filetransfer); +} + +void RemoveLuaFileTransfers(void) +{ + while (luafiletransfers) + RemoveLuaFileTransfer(); +} + +void SV_AbortLuaFileTransfer(INT32 node) +{ + if (luafiletransfers + && (luafiletransfers->nodestatus[node] == LFTNS_ASKED + || luafiletransfers->nodestatus[node] == LFTNS_SENDING)) + { + luafiletransfers->nodestatus[node] = LFTNS_WAITING; + SV_PrepareSendLuaFileToNextNode(); + } +} + +void CL_PrepareDownloadLuaFile(void) +{ + // If there is no transfer in the list, this normally means the server + // called io.open before us, so we have to wait until we call it too + if (!luafiletransfers) + { + waitingforluafiletransfer = true; + return; + } + + // Tell the server we are ready to receive the file + netbuffer->packettype = PT_ASKLUAFILE; + HSendPacket(servernode, true, 0, 0); + + fileneedednum = 1; + fileneeded[0].status = FS_REQUESTED; + fileneeded[0].totalsize = UINT32_MAX; + fileneeded[0].file = NULL; + memset(fileneeded[0].md5sum, 0, 16); + strcpy(fileneeded[0].filename, luafiletransfers->realfilename); + fileneeded[0].textmode = !strchr(luafiletransfers->mode, 'b'); + + // Make sure all directories in the file path exist + MakePathDirs(fileneeded[0].filename); +} +#endif + // Number of files to send // Little optimization to quickly test if there is a file in the queue static INT32 filestosend = 0; @@ -458,6 +626,7 @@ static INT32 filestosend = 0; * \param filename The file to send * \param fileid ??? * \sa SV_SendRam + * \sa SV_SendLuaFile * */ static boolean SV_SendFile(INT32 node, const char *filename, UINT8 fileid) @@ -548,6 +717,7 @@ static boolean SV_SendFile(INT32 node, const char *filename, UINT8 fileid) * \param freemethod How to free the block after it has been sent * \param fileid ??? * \sa SV_SendFile + * \sa SV_SendLuaFile * */ void SV_SendRam(INT32 node, void *data, size_t size, freemethod_t freemethod, UINT8 fileid) @@ -579,6 +749,57 @@ void SV_SendRam(INT32 node, void *data, size_t size, freemethod_t freemethod, UI filestosend++; } +#ifdef HAVE_BLUA +/** Adds a file requested by Lua to the file list for a node + * + * \param node The node to send the file to + * \param filename The file to send + * \sa SV_SendFile + * \sa SV_SendRam + * + */ +boolean SV_SendLuaFile(INT32 node, const char *filename, boolean textmode) +{ + filetx_t **q; // A pointer to the "next" field of the last file in the list + filetx_t *p; // The new file request + //INT32 i; + //char wadfilename[MAX_WADPATH]; + + luafiletransfers->nodestatus[node] = LFTNS_SENDING; + + // Find the last file in the list and set a pointer to its "next" field + q = &transfer[node].txlist; + while (*q) + q = &((*q)->next); + + // Allocate a file request and append it to the file list + p = *q = (filetx_t *)malloc(sizeof (filetx_t)); + if (!p) + I_Error("SV_SendLuaFile: No more memory\n"); + + // Initialise with zeros + memset(p, 0, sizeof (filetx_t)); + + // Allocate the file name + p->id.filename = (char *)malloc(MAX_WADPATH); // !!! + if (!p->id.filename) + I_Error("SV_SendLuaFile: No more memory\n"); + + // Set the file name and get rid of the path + strlcpy(p->id.filename, filename, MAX_WADPATH); // !!! + //nameonly(p->id.filename); + + // Open in text mode if required by the Lua script + p->textmode = textmode; + + DEBFILE(va("Sending Lua file %s to %d\n", filename, node)); + p->ram = SF_FILE; // It's a file, we need to close it and free its name once we're done sending it + p->next = NULL; // End of list + filestosend++; + return true; +} +#endif + /** Stops sending a file for a node, and removes the file request from the list, * either because the file has been fully sent or because the node was disconnected * @@ -684,7 +905,7 @@ void SV_FileSendTicker(void) long filesize; transfer[i].currentfile = - fopen(f->id.filename, "rb"); + fopen(f->id.filename, f->textmode ? "r" : "rb"); if (!transfer[i].currentfile) I_Error("File %s does not exist", @@ -715,11 +936,20 @@ void SV_FileSendTicker(void) size = f->size-transfer[i].position; if (ram) M_Memcpy(p->data, &f->id.ram[transfer[i].position], size); - else if (fread(p->data, 1, size, transfer[i].currentfile) != size) - I_Error("SV_FileSendTicker: can't read %s byte on %s at %d because %s", sizeu1(size), f->id.filename, transfer[i].position, M_FileError(transfer[i].currentfile)); + else + { + size_t n = fread(p->data, 1, size, transfer[i].currentfile); + if (n != size) // Either an error or Windows turning CR-LF into LF + { + if (f->textmode && feof(transfer[i].currentfile)) + size = n; + else if (fread(p->data, 1, size, transfer[i].currentfile) != size) + I_Error("SV_FileSendTicker: can't read %s byte on %s at %d because %s", sizeu1(size), f->id.filename, transfer[i].position, M_FileError(transfer[i].currentfile)); + } + } p->position = LONG(transfer[i].position); // Put flag so receiver knows the total size - if (transfer[i].position + size == f->size) + if (transfer[i].position + size == f->size || (f->textmode && feof(transfer[i].currentfile))) p->position |= LONG(0x80000000); p->fileid = f->fileid; p->size = SHORT((UINT16)size); @@ -728,7 +958,7 @@ void SV_FileSendTicker(void) if (HSendPacket(i, true, 0, FILETXHEADER + size)) // Reliable SEND { // Success transfer[i].position = (UINT32)(transfer[i].position + size); - if (transfer[i].position == f->size) // Finish? + if (transfer[i].position == f->size || (f->textmode && feof(transfer[i].currentfile))) // Finish? SV_EndFileSend(i); } else @@ -772,7 +1002,7 @@ void Got_Filetxpak(void) { if (file->file) I_Error("Got_Filetxpak: already open file\n"); - file->file = fopen(filename, "wb"); + file->file = fopen(filename, file->textmode ? "w" : "wb"); if (!file->file) I_Error("Can't create file %s: %s", filename, strerror(errno)); CONS_Printf("\r%s...\n",filename); @@ -793,7 +1023,7 @@ void Got_Filetxpak(void) } // We can receive packet in the wrong order, anyway all os support gaped file fseek(file->file, pos, SEEK_SET); - if (fwrite(netbuffer->u.filetxpak.data,size,1,file->file) != 1) + if (size && fwrite(netbuffer->u.filetxpak.data,size,1,file->file) != 1) I_Error("Can't write to %s: %s\n",filename, M_FileError(file->file)); file->currentsize += size; @@ -805,6 +1035,14 @@ void Got_Filetxpak(void) file->status = FS_FOUND; CONS_Printf(M_GetText("Downloading %s...(done)\n"), filename); +#ifdef HAVE_BLUA + if (luafiletransfers) + { + // Tell the server we have received the file + netbuffer->packettype = PT_HASLUAFILE; + HSendPacket(servernode, true, 0, 0); + } +#endif } } else diff --git a/src/d_netfil.h b/src/d_netfil.h index 17aeb8b7e..0d0b16975 100644 --- a/src/d_netfil.h +++ b/src/d_netfil.h @@ -13,6 +13,7 @@ #ifndef __D_NETFIL__ #define __D_NETFIL__ +#include "d_net.h" #include "w_wad.h" typedef enum @@ -43,6 +44,7 @@ typedef struct UINT32 currentsize; UINT32 totalsize; filestatus_t status; // The value returned by recsearch + boolean textmode; // For files requested by Lua without the "b" option } fileneeded_t; extern INT32 fileneedednum; @@ -70,6 +72,44 @@ boolean CL_CheckDownloadable(void); boolean CL_SendRequestFile(void); boolean Got_RequestFilePak(INT32 node); +#ifdef HAVE_BLUA +typedef enum +{ + LFTNS_WAITING, // This node is waiting for the server to send the file + LFTNS_ASKED, // The server has told the node they're ready to send the file + LFTNS_SENDING, // The server is sending the file to this node + LFTNS_SENT // The node already has the file +} luafiletransfernodestatus_t; + +typedef struct luafiletransfer_s +{ + char *filename; + char *realfilename; + char mode[4]; // rb+/wb+/ab+ + null character + INT32 id; // Callback ID + luafiletransfernodestatus_t nodestatus[MAXNETNODES]; + struct luafiletransfer_s *next; +} luafiletransfer_t; + +extern luafiletransfer_t *luafiletransfers; +extern boolean waitingforluafiletransfer; +extern char luafiledir[256]; + +void AddLuaFileTransfer(const char *filename, const char *mode); +void SV_PrepareSendLuaFileToNextNode(void); +boolean SV_SendLuaFile(INT32 node, const char *filename, boolean textmode); +void SV_PrepareSendLuaFile(const char *filename); +void SV_HandleLuaFileSent(UINT8 node); +void RemoveLuaFileTransfer(void); +void RemoveLuaFileTransfers(void); +void SV_AbortLuaFileTransfer(INT32 node); +void CL_PrepareDownloadLuaFile(void); +void Got_LuaFile(UINT8 **cp, INT32 playernum); +void StoreLuaFileCallback(INT32 id); +void RemoveLuaFileCallback(INT32 id); +void MakePathDirs(char *path); +#endif + void SV_AbortSendFiles(INT32 node); void CloseNetFile(void); From 3b22a84296a239859adba85f6b27f4947631cff4 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Fri, 24 Jan 2020 02:47:51 +0100 Subject: [PATCH 02/41] Split open() into open() and openlocal() open() for normal, consistency-friendly reading, openlocal() for writing and local reading. --- src/blua/liolib.c | 122 +++++++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index 6ebde08a3..dc425f3c0 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -137,6 +137,14 @@ static int aux_close (lua_State *L) { } +static int io_close (lua_State *L) { + if (lua_isnone(L, 1)) + lua_rawgeti(L, LUA_ENVIRONINDEX, IO_OUTPUT); + tofile(L); /* make sure argument is a file */ + return aux_close(L); +} + + static int io_gc (lua_State *L) { FILE *f = *tofilep(L); /* ignore closed files */ @@ -172,14 +180,11 @@ void MakePathDirs(char *path) } -static int io_open (lua_State *L) { - FILE **pf; - const char *filename = luaL_checkstring(L, 1); +static int CheckFileName(lua_State *L, const char *filename) +{ + int length = strlen(filename); boolean pass = false; size_t i; - int length = strlen(filename); - const char *mode = luaL_optstring(L, 2, "r"); - luafiletransfer_t *filetransfer; if (strchr(filename, '\\')) { @@ -202,67 +207,60 @@ static int io_open (lua_State *L) { return pushresult(L,0,filename); } - luaL_checktype(L, 4, LUA_TFUNCTION); + return 0; +} - if (lua_isnil(L, 3) && (strchr(mode, 'r') || strchr(mode, '+'))) // Synched reading - { - AddLuaFileTransfer(filename, mode); +static int io_open (lua_State *L) { + const char *filename = luaL_checkstring(L, 1); + const char *mode = luaL_optstring(L, 2, "r"); + int checkresult; - /*pf = newfile(L); - *pf = fopen(realfilename, mode); - return (*pf == NULL) ? pushresult(L, 0, filename) : 1;*/ - } - else // Local I/O - { - char *realfilename = va("%s" PATHSEP "%s", luafiledir, filename); - player_t *player = *((player_t **)luaL_checkudata(L, 3, META_PLAYER)); + checkresult = CheckFileName(L, filename); + if (checkresult) + return checkresult; - if (!player) - return LUA_ErrInvalid(L, "player_t"); + luaL_checktype(L, 3, LUA_TFUNCTION); - if (player != &players[consoleplayer]) - return 0; + if (!(strchr(mode, 'r') || strchr(mode, '+'))) + luaL_error(L, "open() is only for reading, use openlocal() for writing"); - if (client && strnicmp(filename, "shared/", strlen("shared/"))) + AddLuaFileTransfer(filename, mode); + + return 0; +} + + +static int io_openlocal (lua_State *L) { + FILE **pf; + const char *filename = luaL_checkstring(L, 1); + const char *mode = luaL_optstring(L, 2, "r"); + luafiletransfer_t *filetransfer; + int checkresult; + + checkresult = CheckFileName(L, filename); + if (checkresult) + return checkresult; + + char *realfilename = va("%s" PATHSEP "%s", luafiledir, filename); + + if (client && strnicmp(filename, "shared/", strlen("shared/"))) + I_Error("Access denied to %s\n" + "Clients can only access files stored in luafiles/shared/\n", + filename); + + // Prevent access if the file is being downloaded + for (filetransfer = luafiletransfers; filetransfer; filetransfer = filetransfer->next) + if (!stricmp(filetransfer->filename, filename)) I_Error("Access denied to %s\n" - "Clients can only access files stored in luafiles/shared/\n", - filename); + "Files can't be opened while being downloaded\n", + filename); - // Prevent access if the file is being downloaded - for (filetransfer = luafiletransfers; filetransfer; filetransfer = filetransfer->next) - if (!stricmp(filetransfer->filename, filename)) - I_Error("Access denied to %s\n" - "Files can't be opened while being downloaded\n", - filename); + MakePathDirs(realfilename); - MakePathDirs(realfilename); - - // The callback is the last argument, no need to push it again - - // Push the first argument (file handle) on the stack - pf = newfile(gL); // Create and push the file handle - *pf = fopen(realfilename, mode); // Open the file - if (!*pf) - { - lua_pop(gL, 1); - lua_pushnil(gL); - } - - // Push the second argument (file name) on the stack - lua_pushstring(gL, filename); - - // Call the callback - LUA_Call(gL, 2); - - // Close the file - if (*pf) - { - fclose(*pf); - *pf = NULL; - } - } - - return 0; // !!! Todo: error handling? + // Open and return the file + pf = newfile(L); + *pf = fopen(realfilename, mode); + return (*pf == NULL) ? pushresult(L, 0, filename) : 1; } @@ -335,7 +333,7 @@ void Got_LuaFile(UINT8 **cp, INT32 playernum) void StoreLuaFileCallback(INT32 id) { lua_pushfstring(gL, FMT_FILECALLBACKID, id); - lua_pushvalue(gL, 4); // Parameter 4 is the callback + lua_pushvalue(gL, 3); // Parameter 3 is the callback lua_settable(gL, LUA_REGISTRYINDEX); // registry[callbackid] = callback } @@ -347,6 +345,7 @@ void RemoveLuaFileCallback(INT32 id) lua_settable(gL, LUA_REGISTRYINDEX); // registry[callbackid] = nil } + static int io_tmpfile (lua_State *L) { FILE **pf = newfile(L); *pf = tmpfile(); @@ -649,10 +648,12 @@ static int f_flush (lua_State *L) { static const luaL_Reg iolib[] = { + {"close", io_close}, {"flush", io_flush}, {"input", io_input}, {"lines", io_lines}, {"open", io_open}, + {"openlocal", io_openlocal}, {"output", io_output}, {"read", io_read}, {"tmpfile", io_tmpfile}, @@ -663,6 +664,7 @@ static const luaL_Reg iolib[] = { static const luaL_Reg flib[] = { + {"close", io_close}, {"flush", f_flush}, {"lines", f_lines}, {"read", f_read}, From e0f0984fcc8e5d1f4e6881b1826662f24ff1b4e9 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Fri, 24 Jan 2020 17:11:00 +0100 Subject: [PATCH 03/41] Rename "luafiles/shared/" to "luafiles/client/" --- src/blua/liolib.c | 4 ++-- src/d_netfil.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index dc425f3c0..244c13d15 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -243,9 +243,9 @@ static int io_openlocal (lua_State *L) { char *realfilename = va("%s" PATHSEP "%s", luafiledir, filename); - if (client && strnicmp(filename, "shared/", strlen("shared/"))) + if (client && strnicmp(filename, "client/", strlen("client/"))) I_Error("Access denied to %s\n" - "Clients can only access files stored in luafiles/shared/\n", + "Clients can only access files stored in luafiles/client/\n", filename); // Prevent access if the file is being downloaded diff --git a/src/d_netfil.c b/src/d_netfil.c index 5ceec2aaa..71449caca 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -489,7 +489,7 @@ void AddLuaFileTransfer(const char *filename, const char *mode) filetransfer->realfilename = strdup(va("%s" PATHSEP "%s", luafiledir, filename)); else - filetransfer->realfilename = strdup(va("%s" PATHSEP "shared" PATHSEP "$$$%d%d.tmp", + filetransfer->realfilename = strdup(va("%s" PATHSEP "client" PATHSEP "$$$%d%d.tmp", luafiledir, rand(), rand())); if (!filetransfer->realfilename) I_Error("AddLuaFileTransfer: Out of memory\n"); From 9658ef2c5bf4becdb8ab9473686d1726683510a1 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Fri, 24 Jan 2020 17:51:20 +0100 Subject: [PATCH 04/41] Add .dat and .csv to whitelisted file extensions --- src/blua/liolib.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index 244c13d15..4ef3b4274 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -36,11 +36,13 @@ static const char *const fnames[] = {"input", "output"}; static const char *whitelist[] = { // Allow scripters to write files of these types to SRB2's folder - ".txt", - ".sav2", + ".bmp", ".cfg", + ".csv", + ".dat", ".png", - ".bmp" + ".sav2", + ".txt", }; From 51947319ee7ab0bed90128c41acf03e056468dd2 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Fri, 24 Jan 2020 23:24:54 +0100 Subject: [PATCH 05/41] Fix two compiler warnings --- src/blua/liolib.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index 4ef3b4274..489a4ae16 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -268,8 +268,8 @@ static int io_openlocal (lua_State *L) { void Got_LuaFile(UINT8 **cp, INT32 playernum) { - FILE **pf; - boolean success = READUINT8(*cp); // The first (and only) byte indicates whether the file could be opened + FILE **pf = NULL; + UINT8 success = READUINT8(*cp); // The first (and only) byte indicates whether the file could be opened if (playernum != serverplayer) { From 16c7981bb8dc4af071e4dbbf8ad0bc4867ce31bf Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Fri, 24 Jan 2020 23:34:39 +0100 Subject: [PATCH 06/41] Fix the compiler warning fix --- src/blua/liolib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index 489a4ae16..74bedc060 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -325,7 +325,7 @@ void Got_LuaFile(UINT8 **cp, INT32 playernum) else { // Send a net command with 0 as its first byte to indicate the file couldn't be opened - UINT8 success = 0; + success = 0; SendNetXCmd(XD_LUAFILE, &success, 1); } } From 2d142f734faadd67b07e9527dfabcdf80e7a85f3 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Sat, 25 Jan 2020 01:37:50 +0100 Subject: [PATCH 07/41] Remove all potentially dangerous functions Basically any function that calls fopen() is gone, except the ones created by me. And no access to stdin/stdout/stderr through io.read()/io.write(). Not really harmful but why would you want that in SRB2. --- src/blua/liolib.c | 87 ----------------------------------------------- 1 file changed, 87 deletions(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index 74bedc060..e1a64c8d8 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -64,12 +64,6 @@ static int pushresult (lua_State *L, int i, const char *filename) { } -static void fileerror (lua_State *L, int arg, const char *filename) { - lua_pushfstring(L, "%s: %s", filename, strerror(errno)); - luaL_argerror(L, arg, lua_tostring(L, -1)); -} - - #define tofilep(L) ((FILE **)luaL_checkudata(L, 1, LUA_FILEHANDLE)) @@ -355,47 +349,6 @@ static int io_tmpfile (lua_State *L) { } -static FILE *getiofile (lua_State *L, int findex) { - FILE *f; - lua_rawgeti(L, LUA_ENVIRONINDEX, findex); - f = *(FILE **)lua_touserdata(L, -1); - if (f == NULL) - luaL_error(L, "standard %s file is closed", fnames[findex - 1]); - return f; -} - - -static int g_iofile (lua_State *L, int f, const char *mode) { - if (!lua_isnoneornil(L, 1)) { - const char *filename = lua_tostring(L, 1); - if (filename) { - FILE **pf = newfile(L); - *pf = fopen(filename, mode); - if (*pf == NULL) - fileerror(L, 1, filename); - } - else { - tofile(L); /* check that it's a valid file handle */ - lua_pushvalue(L, 1); - } - lua_rawseti(L, LUA_ENVIRONINDEX, f); - } - /* return current value */ - lua_rawgeti(L, LUA_ENVIRONINDEX, f); - return 1; -} - - -static int io_input (lua_State *L) { - return g_iofile(L, IO_INPUT, "r"); -} - - -static int io_output (lua_State *L) { - return g_iofile(L, IO_OUTPUT, "w"); -} - - static int io_readline (lua_State *L); @@ -413,24 +366,6 @@ static int f_lines (lua_State *L) { } -static int io_lines (lua_State *L) { - if (lua_isnoneornil(L, 1)) { /* no arguments? */ - /* will iterate over default input */ - lua_rawgeti(L, LUA_ENVIRONINDEX, IO_INPUT); - return f_lines(L); - } - else { - const char *filename = luaL_checkstring(L, 1); - FILE **pf = newfile(L); - *pf = fopen(filename, "r"); - if (*pf == NULL) - fileerror(L, 1, filename); - aux_lines(L, lua_gettop(L), 1); - return 1; - } -} - - /* ** {====================================================== ** READ @@ -543,11 +478,6 @@ static int g_read (lua_State *L, FILE *f, int first) { } -static int io_read (lua_State *L) { - return g_read(L, getiofile(L, IO_INPUT), 1); -} - - static int f_read (lua_State *L) { return g_read(L, tofile(L), 2); } @@ -601,11 +531,6 @@ static int g_write (lua_State *L, FILE *f, int arg) { } -static int io_write (lua_State *L) { - return g_write(L, getiofile(L, IO_OUTPUT), 1); -} - - static int f_write (lua_State *L) { return g_write(L, tofile(L), 2); } @@ -638,12 +563,6 @@ static int f_setvbuf (lua_State *L) { } - -static int io_flush (lua_State *L) { - return pushresult(L, fflush(getiofile(L, IO_OUTPUT)) == 0, NULL); -} - - static int f_flush (lua_State *L) { return pushresult(L, fflush(tofile(L)) == 0, NULL); } @@ -651,16 +570,10 @@ static int f_flush (lua_State *L) { static const luaL_Reg iolib[] = { {"close", io_close}, - {"flush", io_flush}, - {"input", io_input}, - {"lines", io_lines}, {"open", io_open}, {"openlocal", io_openlocal}, - {"output", io_output}, - {"read", io_read}, {"tmpfile", io_tmpfile}, {"type", io_type}, - {"write", io_write}, {NULL, NULL} }; From 2eaf02d234ab0287af9fbd41b50ca2015121cca7 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Mon, 3 Feb 2020 19:42:37 +0100 Subject: [PATCH 08/41] Let Lua access spectators mobjs --- src/lua_playerlib.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 1dd4c45b5..9ce1fed9b 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 From ebc1809da987b47746a537ee5bdaa8824b6c7b3f Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Wed, 19 Feb 2020 22:01:33 +0100 Subject: [PATCH 09/41] Fix bad tabulation --- src/d_netfil.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/d_netfil.c b/src/d_netfil.c index 71449caca..413eef1ef 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -477,21 +477,21 @@ void AddLuaFileTransfer(const char *filename, const char *mode) if (!filetransfer) I_Error("AddLuaFileTransfer: Out of memory\n"); *prevnext = filetransfer; - filetransfer->next = NULL; + filetransfer->next = NULL; - // Allocate the file name - filetransfer->filename = strdup(filename); - if (!filetransfer->filename) + // Allocate the file name + filetransfer->filename = strdup(filename); + if (!filetransfer->filename) I_Error("AddLuaFileTransfer: Out of memory\n"); - // Create and allocate the real file name + // Create and allocate the real file name if (server) filetransfer->realfilename = strdup(va("%s" PATHSEP "%s", luafiledir, filename)); else filetransfer->realfilename = strdup(va("%s" PATHSEP "client" PATHSEP "$$$%d%d.tmp", luafiledir, rand(), rand())); - if (!filetransfer->realfilename) + if (!filetransfer->realfilename) I_Error("AddLuaFileTransfer: Out of memory\n"); strlcpy(filetransfer->mode, mode, sizeof(filetransfer->mode)); @@ -556,7 +556,7 @@ void SV_PrepareSendLuaFileToNextNode(void) void SV_HandleLuaFileSent(UINT8 node) { luafiletransfers->nodestatus[node] = LFTNS_SENT; - SV_PrepareSendLuaFileToNextNode(); + SV_PrepareSendLuaFileToNextNode(); } void RemoveLuaFileTransfer(void) @@ -1036,7 +1036,7 @@ void Got_Filetxpak(void) CONS_Printf(M_GetText("Downloading %s...(done)\n"), filename); #ifdef HAVE_BLUA - if (luafiletransfers) + if (luafiletransfers) { // Tell the server we have received the file netbuffer->packettype = PT_HASLUAFILE; From 20d054a679acdf70971ad0e90d992dc942fe3679 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Wed, 19 Feb 2020 22:37:30 +0100 Subject: [PATCH 10/41] Minor code cleanup --- src/d_clisrv.c | 2 +- src/d_netfil.c | 4 ++-- src/d_netfil.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 6b0f49544..9f0d2439e 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -3164,7 +3164,7 @@ void D_QuitNetGame(void) // abort send/receive of files CloseNetFile(); - RemoveLuaFileTransfers(); + RemoveAllLuaFileTransfers(); waitingforluafiletransfer = false; if (server) diff --git a/src/d_netfil.c b/src/d_netfil.c index 413eef1ef..1d1e7d203 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -506,7 +506,7 @@ void AddLuaFileTransfer(const char *filename, const char *mode) if (!luafiletransfers->next) // Only if there is no transfer already going on { - if (FIL_FileOK(filetransfer->realfilename)) + if (FIL_ReadFileOK(filetransfer->realfilename)) SV_PrepareSendLuaFileToNextNode(); else { @@ -572,7 +572,7 @@ void RemoveLuaFileTransfer(void) free(filetransfer); } -void RemoveLuaFileTransfers(void) +void RemoveAllLuaFileTransfers(void) { while (luafiletransfers) RemoveLuaFileTransfer(); diff --git a/src/d_netfil.h b/src/d_netfil.h index 0d0b16975..0473b5f44 100644 --- a/src/d_netfil.h +++ b/src/d_netfil.h @@ -101,7 +101,7 @@ boolean SV_SendLuaFile(INT32 node, const char *filename, boolean textmode); void SV_PrepareSendLuaFile(const char *filename); void SV_HandleLuaFileSent(UINT8 node); void RemoveLuaFileTransfer(void); -void RemoveLuaFileTransfers(void); +void RemoveAllLuaFileTransfers(void); void SV_AbortLuaFileTransfer(INT32 node); void CL_PrepareDownloadLuaFile(void); void Got_LuaFile(UINT8 **cp, INT32 playernum); From 3502278f8a5a5232adadbeddd524a7bf3687798a Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Thu, 20 Feb 2020 01:15:54 +0100 Subject: [PATCH 11/41] SpaceSpaceSpaceSpace --- src/d_netfil.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/d_netfil.c b/src/d_netfil.c index 1d1e7d203..ed81a51b1 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -1038,9 +1038,9 @@ void Got_Filetxpak(void) #ifdef HAVE_BLUA if (luafiletransfers) { - // Tell the server we have received the file - netbuffer->packettype = PT_HASLUAFILE; - HSendPacket(servernode, true, 0, 0); + // Tell the server we have received the file + netbuffer->packettype = PT_HASLUAFILE; + HSendPacket(servernode, true, 0, 0); } #endif } From 400366802c2d77a31b40da5ff57f366ca197383b Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Thu, 20 Feb 2020 16:40:39 -0500 Subject: [PATCH 12/41] Make hook_FollowMobj a mobj hook instead of a player hook Makes more logical sense, as if you have a custom follow item for a custom skin, you probably want your new thinker to only run for your new MT_ and not the vanilla ones. --- src/lua_hooklib.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index f9dad6cb7..99f41aef1 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -142,6 +142,7 @@ static int lib_addHook(lua_State *L) case hook_HurtMsg: case hook_MobjMoveBlocked: case hook_MapThingSpawn: + case hook_FollowMobj: hook.s.mt = MT_NULL; if (lua_isnumber(L, 2)) hook.s.mt = lua_tonumber(L, 2); @@ -203,6 +204,7 @@ static int lib_addHook(lua_State *L) case hook_MobjRemoved: case hook_MobjMoveBlocked: case hook_MapThingSpawn: + case hook_FollowMobj: lastp = &mobjhooks[hook.s.mt]; break; case hook_JumpSpecial: @@ -210,7 +212,6 @@ static int lib_addHook(lua_State *L) case hook_SpinSpecial: case hook_JumpSpinSpecial: case hook_PlayerSpawn: - case hook_FollowMobj: case hook_PlayerCanDamage: case hook_TeamSwitch: case hook_ViewpointSwitch: @@ -1364,7 +1365,34 @@ boolean LUAh_FollowMobj(player_t *player, mobj_t *mobj) lua_settop(gL, 0); - for (hookp = playerhooks; hookp; hookp = hookp->next) + // Look for all generic mobj follow item hooks + for (hookp = mobjhooks[MT_NULL]; hookp; hookp = hookp->next) + { + if (hookp->type != hook_FollowMobj) + continue; + + if (lua_gettop(gL) == 0) + { + LUA_PushUserdata(gL, player, META_PLAYER); + LUA_PushUserdata(gL, mobj, META_MOBJ); + } + lua_pushfstring(gL, FMT_HOOKID, hookp->id); + lua_gettable(gL, LUA_REGISTRYINDEX); + lua_pushvalue(gL, -3); + lua_pushvalue(gL, -3); + if (lua_pcall(gL, 2, 1, 0)) { + if (!hookp->error || cv_debug & DBG_LUA) + CONS_Alert(CONS_WARNING,"%s\n",lua_tostring(gL, -1)); + lua_pop(gL, 1); + hookp->error = true; + continue; + } + if (lua_toboolean(gL, -1)) + hooked = true; + lua_pop(gL, 1); + } + + for (hookp = mobjhooks[mobj->type]; hookp; hookp = hookp->next) { if (hookp->type != hook_FollowMobj) continue; From cce53081085b256165940e8ff38cc8d97880ae62 Mon Sep 17 00:00:00 2001 From: James R Date: Thu, 20 Feb 2020 17:18:26 -0800 Subject: [PATCH 13/41] Fix compiler warnings --- src/blua/liolib.c | 4 ++-- src/d_netfil.c | 2 +- src/d_netfil.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index e1a64c8d8..378b8c86d 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -34,7 +34,6 @@ #define FMT_FILECALLBACKID "file_callback_%d" -static const char *const fnames[] = {"input", "output"}; static const char *whitelist[] = { // Allow scripters to write files of these types to SRB2's folder ".bmp", ".cfg", @@ -230,6 +229,7 @@ static int io_openlocal (lua_State *L) { FILE **pf; const char *filename = luaL_checkstring(L, 1); const char *mode = luaL_optstring(L, 2, "r"); + char *realfilename; luafiletransfer_t *filetransfer; int checkresult; @@ -237,7 +237,7 @@ static int io_openlocal (lua_State *L) { if (checkresult) return checkresult; - char *realfilename = va("%s" PATHSEP "%s", luafiledir, filename); + realfilename = va("%s" PATHSEP "%s", luafiledir, filename); if (client && strnicmp(filename, "client/", strlen("client/"))) I_Error("Access denied to %s\n" diff --git a/src/d_netfil.c b/src/d_netfil.c index ed81a51b1..a5d4b71e2 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -98,7 +98,7 @@ INT32 lastfilenum = -1; #ifdef HAVE_BLUA luafiletransfer_t *luafiletransfers = NULL; boolean waitingforluafiletransfer = false; -char luafiledir[256] = "luafiles"; +char luafiledir[MAX_WADPATH] = "luafiles"; #endif diff --git a/src/d_netfil.h b/src/d_netfil.h index 0473b5f44..13087dfb2 100644 --- a/src/d_netfil.h +++ b/src/d_netfil.h @@ -93,7 +93,7 @@ typedef struct luafiletransfer_s extern luafiletransfer_t *luafiletransfers; extern boolean waitingforluafiletransfer; -extern char luafiledir[256]; +extern char luafiledir[MAX_WADPATH]; void AddLuaFileTransfer(const char *filename, const char *mode); void SV_PrepareSendLuaFileToNextNode(void); From 2df4717f18475835c5924c84624d44d2674c6aa7 Mon Sep 17 00:00:00 2001 From: James R Date: Thu, 20 Feb 2020 17:20:50 -0800 Subject: [PATCH 14/41] Fix NO_LUA compiling --- src/d_clisrv.c | 2 ++ src/d_main.c | 6 +++++- src/d_net.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index f31c2bcd4..3ad8db3c7 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -3197,8 +3197,10 @@ void D_QuitNetGame(void) // abort send/receive of files CloseNetFile(); +#ifdef HAVE_BLUA RemoveAllLuaFileTransfers(); waitingforluafiletransfer = false; +#endif if (server) { diff --git a/src/d_main.c b/src/d_main.c index 715c90aa9..a54cdfc8d 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1126,8 +1126,10 @@ void D_SRB2Main(void) // can't use sprintf since there is %u in savegamename strcatbf(savegamename, srb2home, PATHSEP); +#ifdef HAVE_BLUA snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", srb2home); -#else +#endif +#else/*DEFAULTDIR*/ snprintf(srb2home, sizeof srb2home, "%s", userhome); snprintf(downloaddir, sizeof downloaddir, "%s", userhome); if (dedicated) @@ -1138,8 +1140,10 @@ void D_SRB2Main(void) // can't use sprintf since there is %u in savegamename strcatbf(savegamename, userhome, PATHSEP); +#ifdef HAVE_BLUA snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", userhome); #endif +#endif/*DEFAULTDIR*/ } configfile[sizeof configfile - 1] = '\0'; diff --git a/src/d_net.c b/src/d_net.c index ddb991235..a83d6d0ff 100644 --- a/src/d_net.c +++ b/src/d_net.c @@ -803,9 +803,11 @@ static const char *packettypename[NUMPACKETTYPE] = "RESYNCHEND", "RESYNCHGET", +#ifdef HAVE_BLUA "SENDINGLUAFILE", "ASKLUAFILE", "HASLUAFILE", +#endif "FILEFRAGMENT", "TEXTCMD", From ec5b88e79fcf314fd4e4190ee343709ee74f7616 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Fri, 21 Feb 2020 17:17:39 +0100 Subject: [PATCH 15/41] Fix weird comment style --- src/d_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/d_main.c b/src/d_main.c index a54cdfc8d..2553dc8e6 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1129,7 +1129,7 @@ void D_SRB2Main(void) #ifdef HAVE_BLUA snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", srb2home); #endif -#else/*DEFAULTDIR*/ +#else // DEFAULTDIR snprintf(srb2home, sizeof srb2home, "%s", userhome); snprintf(downloaddir, sizeof downloaddir, "%s", userhome); if (dedicated) @@ -1143,7 +1143,7 @@ void D_SRB2Main(void) #ifdef HAVE_BLUA snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", userhome); #endif -#endif/*DEFAULTDIR*/ +#endif // DEFAULTDIR } configfile[sizeof configfile - 1] = '\0'; From 472befd183143764218b466bbcda269aa3bb310a Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Fri, 21 Feb 2020 17:31:32 +0100 Subject: [PATCH 16/41] Replace MAX_WADPATH with plain numbers This is not ideal either, but I would rather not use a constant for something unrelated. --- src/d_netfil.c | 2 +- src/d_netfil.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/d_netfil.c b/src/d_netfil.c index a5d4b71e2..ecb2229a6 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -98,7 +98,7 @@ INT32 lastfilenum = -1; #ifdef HAVE_BLUA luafiletransfer_t *luafiletransfers = NULL; boolean waitingforluafiletransfer = false; -char luafiledir[MAX_WADPATH] = "luafiles"; +char luafiledir[256 + 16] = "luafiles"; #endif diff --git a/src/d_netfil.h b/src/d_netfil.h index 13087dfb2..830293ca8 100644 --- a/src/d_netfil.h +++ b/src/d_netfil.h @@ -93,7 +93,7 @@ typedef struct luafiletransfer_s extern luafiletransfer_t *luafiletransfers; extern boolean waitingforluafiletransfer; -extern char luafiledir[MAX_WADPATH]; +extern char luafiledir[256 + 16]; void AddLuaFileTransfer(const char *filename, const char *mode); void SV_PrepareSendLuaFileToNextNode(void); From af9164f336a65634f6908e677b47773d88f583af Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Sat, 22 Feb 2020 02:17:21 +0100 Subject: [PATCH 17/41] Improve join refusal handling --- src/d_clisrv.c | 81 ++++++++++++++++++++++++++++++-------------------- src/d_clisrv.h | 3 +- src/m_menu.c | 2 +- 3 files changed, 51 insertions(+), 35 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 77118110e..ef0c0c33e 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1289,6 +1289,37 @@ static boolean CL_SendJoin(void) return HSendPacket(servernode, true, 0, sizeof (clientconfig_pak)); } +static INT32 FindRejoinerNum(SINT8 node) +{ + char strippednodeaddress[64]; + const char *nodeaddress; + char *port; + INT32 i; + + // Make sure there is no dead dress before proceeding to the stripping + if (!I_GetNodeAddress) + return -1; + nodeaddress = I_GetNodeAddress(node); + if (!nodeaddress) + return -1; + + // Strip the address of its port + strcpy(strippednodeaddress, nodeaddress); + port = strchr(strippednodeaddress, ':'); + if (port) + *port = '\0'; + + // Check if any player matches the stripped address + for (i = 0; i < MAXPLAYERS; i++) + { + if (playeringame[i] && playeraddress[i][0] && playernode[i] == UINT8_MAX + && !strcmp(playeraddress[i], strippednodeaddress)) + return i; + } + + return -1; +} + static void SV_SendServerInfo(INT32 node, tic_t servertime) { UINT8 *p; @@ -1306,6 +1337,16 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime) netbuffer->u.serverinfo.numberofplayer = (UINT8)D_NumPlayers(); netbuffer->u.serverinfo.maxplayer = (UINT8)cv_maxplayers.value; + + if (FindRejoinerNum(node) != -1) + netbuffer->u.serverinfo.refusereason = 0; + else if (!cv_allownewplayer.value) + netbuffer->u.serverinfo.refusereason = 1; + else if (D_NumPlayers() >= cv_maxplayers.value) + netbuffer->u.serverinfo.refusereason = 2; + else + netbuffer->u.serverinfo.refusereason = 0; + strncpy(netbuffer->u.serverinfo.gametypename, Gametype_Names[gametype], sizeof netbuffer->u.serverinfo.gametypename); netbuffer->u.serverinfo.modifiedgame = (UINT8)modifiedgame; @@ -1863,12 +1904,17 @@ static boolean CL_ServerConnectionSearchTicker(boolean viams, tic_t *asksent) } // Quit here rather than downloading files and being refused later. - if (serverlist[i].info.numberofplayer >= serverlist[i].info.maxplayer) + if (serverlist[i].info.refusereason) { D_QuitNetGame(); CL_Reset(); D_StartTitle(); - M_StartMessage(va(M_GetText("Maximum players reached: %d\n\nPress ESC\n"), serverlist[i].info.maxplayer), NULL, MM_NOTHING); + if (serverlist[i].info.refusereason == 1) + M_StartMessage(M_GetText("The server is not accepting\njoins for the moment.\n\nPress ESC\n"), NULL, MM_NOTHING); + else if (serverlist[i].info.refusereason == 2) + M_StartMessage(va(M_GetText("Maximum players reached: %d\n\nPress ESC\n"), serverlist[i].info.maxplayer), NULL, MM_NOTHING); + else + M_StartMessage(M_GetText("You can't join.\nI don't know why,\nbut you can't join.\n\nPress ESC\n"), NULL, MM_NOTHING); return false; } @@ -3230,37 +3276,6 @@ void D_QuitNetGame(void) #endif } -static INT32 FindRejoinerNum(SINT8 node) -{ - char strippednodeaddress[64]; - const char *nodeaddress; - char *port; - INT32 i; - - // Make sure there is no dead dress before proceeding to the stripping - if (!I_GetNodeAddress) - return -1; - nodeaddress = I_GetNodeAddress(node); - if (!nodeaddress) - return -1; - - // Strip the address of its port - strcpy(strippednodeaddress, nodeaddress); - port = strchr(strippednodeaddress, ':'); - if (port) - *port = '\0'; - - // Check if any player matches the stripped address - for (i = 0; i < MAXPLAYERS; i++) - { - if (playeringame[i] && playeraddress[i][0] && playernode[i] == UINT8_MAX - && !strcmp(playeraddress[i], strippednodeaddress)) - return i; - } - - return -1; -} - // Adds a node to the game (player will follow at map change or at savegame....) static inline void SV_AddNode(INT32 node) { diff --git a/src/d_clisrv.h b/src/d_clisrv.h index df93fe31d..8cea2f00a 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -27,7 +27,7 @@ This version is independent of the mod name, and standard version and subversion. It should only account for the basic fields of the packet, and change infrequently. */ -#define PACKETVERSION 2 +#define PACKETVERSION 3 // Network play related stuff. // There is a data struct that stores network @@ -361,6 +361,7 @@ typedef struct UINT8 subversion; UINT8 numberofplayer; UINT8 maxplayer; + UINT8 refusereason; // 0: joinable, 1: joins disabled, 2: full char gametypename[24]; UINT8 modifiedgame; UINT8 cheatsenabled; diff --git a/src/m_menu.c b/src/m_menu.c index 8b564e068..d48714c35 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -10366,7 +10366,7 @@ static void M_DrawConnectMenu(void) for (i = 0; i < min(serverlistcount - serverlistpage * SERVERS_PER_PAGE, SERVERS_PER_PAGE); i++) { INT32 slindex = i + serverlistpage * SERVERS_PER_PAGE; - UINT32 globalflags = ((serverlist[slindex].info.numberofplayer >= serverlist[slindex].info.maxplayer) ? V_TRANSLUCENT : 0) + UINT32 globalflags = (serverlist[slindex].info.refusereason ? V_TRANSLUCENT : 0) |((itemOn == FIRSTSERVERLINE+i) ? V_YELLOWMAP : 0)|V_ALLOWLOWERCASE; V_DrawString(currentMenu->x, S_LINEY(i), globalflags, serverlist[slindex].info.servername); From 778715f6111a1bbf7d2ae874e5490e1b2ae0dbc1 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Sat, 22 Feb 2020 02:21:27 +0100 Subject: [PATCH 18/41] Cleanup code a little --- src/d_clisrv.c | 4 ++-- src/d_netcmd.c | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index ef0c0c33e..98eff1cd5 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -3606,7 +3606,7 @@ static void HandleConnect(SINT8 node) rejoinernum = FindRejoinerNum(node); if (bannednode && bannednode[node]) - SV_SendRefuse(node, M_GetText("You have been banned\nfrom the server")); + SV_SendRefuse(node, M_GetText("You have been banned\nfrom the server.")); else if (netbuffer->u.clientcfg._255 != 255 || netbuffer->u.clientcfg.packetversion != PACKETVERSION) SV_SendRefuse(node, "Incompatible packet formats."); @@ -3617,7 +3617,7 @@ static void HandleConnect(SINT8 node) || netbuffer->u.clientcfg.subversion != SUBVERSION) SV_SendRefuse(node, va(M_GetText("Different SRB2 versions cannot\nplay a netgame!\n(server version %d.%d.%d)"), VERSION/100, VERSION%100, SUBVERSION)); else if (!cv_allownewplayer.value && node && rejoinernum == -1) - SV_SendRefuse(node, M_GetText("The server is not accepting\njoins for the moment")); + SV_SendRefuse(node, M_GetText("The server is not accepting\njoins for the moment.")); else if (D_NumPlayers() >= cv_maxplayers.value && rejoinernum == -1) SV_SendRefuse(node, va(M_GetText("Maximum players reached: %d"), cv_maxplayers.value)); else if (netgame && netbuffer->u.clientcfg.localplayers > 1) // Hacked client? diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 623a83c47..b619621c6 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -3342,10 +3342,6 @@ static void Got_RequestAddfilecmd(UINT8 **cp, INT32 playernum) boolean kick = false; boolean toomany = false; INT32 i,j; - serverinfo_pak *dummycheck = NULL; - - // Shut the compiler up. - (void)dummycheck; READSTRINGN(*cp, filename, 240); READMEM(*cp, md5sum, 16); From d19fe295e0556a49c3f5c37df1e2b379a961611e Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Sat, 22 Feb 2020 15:08:17 +0100 Subject: [PATCH 19/41] Fix buffer overrun with nodeless players --- src/d_clisrv.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 98eff1cd5..eda6f9c67 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2485,14 +2485,14 @@ static void CL_RemovePlayer(INT32 playernum, kickreason_t reason) if (!playeringame[playernum]) return; - if (server && !demoplayback) + if (server && !demoplayback && playernode[playernum] != UINT8_MAX) { INT32 node = playernode[playernum]; playerpernode[node]--; if (playerpernode[node] <= 0) { - nodeingame[playernode[playernum]] = false; - Net_CloseConnection(playernode[playernum]); + nodeingame[node] = false; + Net_CloseConnection(node); ResetNode(node); } } @@ -2838,16 +2838,13 @@ static void Command_Kick(void) if (pn == -1 || pn == 0) return; - if (server) + // Special case if we are trying to kick a player who is downloading the game state: + // trigger a timeout instead of kicking them, because a kick would only + // take effect after they have finished downloading + if (server && playernode[pn] != UINT8_MAX && sendingsavegame[playernode[pn]]) { - // Special case if we are trying to kick a player who is downloading the game state: - // trigger a timeout instead of kicking them, because a kick would only - // take effect after they have finished downloading - if (sendingsavegame[playernode[pn]]) - { - Net_ConnectionTimeout(playernode[pn]); - return; - } + Net_ConnectionTimeout(playernode[pn]); + return; } WRITESINT8(p, pn); @@ -2905,7 +2902,7 @@ static void Got_KickCmd(UINT8 **p, INT32 playernum) // Is playernum authorized to make this kick? if (playernum != serverplayer && !IsPlayerAdmin(playernum) - && !(playerpernode[playernode[playernum]] == 2 + && !(playernode[playernum] != UINT8_MAX && playerpernode[playernode[playernum]] == 2 && nodetoplayer2[playernode[playernum]] == pnum)) { // We received a kick command from someone who isn't the @@ -3064,7 +3061,7 @@ static void Got_KickCmd(UINT8 **p, INT32 playernum) } else if (keepbody) { - if (server && !demoplayback) + if (server && !demoplayback && playernode[pnum] != UINT8_MAX) { INT32 node = playernode[pnum]; playerpernode[node]--; @@ -4956,7 +4953,7 @@ void NetUpdate(void) PingUpdate(); // update node latency values so we can take an average later. for (i = 0; i < MAXPLAYERS; i++) - if (playeringame[i]) + if (playeringame[i] && playernode[i] != UINT8_MAX) realpingtable[i] += G_TicsToMilliseconds(GetLag(playernode[i])); pingmeasurecount++; } From 0362f53e9b9561a6cfb7408301ab80f88de9dcc8 Mon Sep 17 00:00:00 2001 From: Jaime Passos Date: Sun, 23 Feb 2020 12:14:52 -0300 Subject: [PATCH 20/41] Fix incorrect newdisplayplayer in forced ViewpointSwitch --- src/d_clisrv.c | 2 +- src/d_netcmd.c | 6 +++--- src/g_game.c | 2 +- src/p_user.c | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index f5fea366f..a4e1ba423 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2513,7 +2513,7 @@ static void CL_RemovePlayer(INT32 playernum, kickreason_t reason) #ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. - LUAh_ViewpointSwitch(&players[consoleplayer], &players[displayplayer], true); + LUAh_ViewpointSwitch(&players[consoleplayer], &players[consoleplayer], true); #endif displayplayer = consoleplayer; } diff --git a/src/d_netcmd.c b/src/d_netcmd.c index c25929929..95cb9291f 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -2843,7 +2843,7 @@ static void Got_Teamchange(UINT8 **cp, INT32 playernum) // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. if (displayplayer != consoleplayer) // You're already viewing yourself. No big deal. - LUAh_ViewpointSwitch(&players[playernum], &players[displayplayer], true); + LUAh_ViewpointSwitch(&players[consoleplayer], &players[consoleplayer], true); #endif displayplayer = consoleplayer; } @@ -3753,11 +3753,11 @@ static void ExitMove_OnChange(void) { if (players[i].mo->target && players[i].mo->target->type == MT_SIGN) P_SetTarget(&players[i].mo->target, NULL); - + if (players[i].pflags & PF_FINISHED) P_GiveFinishFlags(&players[i]); } - + CONS_Printf(M_GetText("Players can now move after completing the level.\n")); } else diff --git a/src/g_game.c b/src/g_game.c index 08192bfb8..3eeb2fa2b 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1718,7 +1718,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) #ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. - LUAh_ViewpointSwitch(player, &players[displayplayer], true); + LUAh_ViewpointSwitch(player, &players[consoleplayer], true); #endif displayplayer = consoleplayer; } diff --git a/src/p_user.c b/src/p_user.c index 880d932af..9b0be6e53 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -392,7 +392,7 @@ void P_GiveFinishFlags(player_t *player) mobj_t* flag = P_SpawnMobjFromMobj(player->mo, xoffs, yoffs, 0, MT_FINISHFLAG); flag->angle = angle; angle += FixedAngle(120*FRACUNIT); - + P_SetTarget(&flag->target, player->mo); } } @@ -10650,7 +10650,7 @@ boolean P_SpectatorJoinGame(player_t *player) #ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. - LUAh_ViewpointSwitch(player, &players[displayplayer], true); + LUAh_ViewpointSwitch(player, &players[consoleplayer], true); #endif displayplayer = consoleplayer; } @@ -10699,7 +10699,7 @@ boolean P_SpectatorJoinGame(player_t *player) #ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. - LUAh_ViewpointSwitch(player, &players[displayplayer], true); + LUAh_ViewpointSwitch(player, &players[consoleplayer], true); #endif displayplayer = consoleplayer; } From 283bb52e7d381a85bd8026a9fabf8e7daf150bdf Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sun, 23 Feb 2020 12:45:43 -0600 Subject: [PATCH 21/41] Disable NOHUD/INLEVEL checks on Lua sound functions None of these are implicitly sync-safe anyway, and most have no need to be walled off from HUD code or intermission thinkers. --- src/lua_baselib.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/lua_baselib.c b/src/lua_baselib.c index 03f142446..e41f81674 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -1675,8 +1675,8 @@ static int lib_pPlayVictorySound(lua_State *L) static int lib_pPlayLivesJingle(lua_State *L) { player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - NOHUD - INLEVEL + //NOHUD + //INLEVEL if (!player) return LUA_ErrInvalid(L, "player_t"); P_PlayLivesJingle(player); @@ -2342,7 +2342,7 @@ static int lib_sStartSound(lua_State *L) const void *origin = NULL; sfxenum_t sound_id = luaL_checkinteger(L, 2); player_t *player = NULL; - //NOHUD // kys @whoever did this. + //NOHUD if (sound_id >= NUMSFX) return luaL_error(L, "sfx %d out of range (0 - %d)", sound_id, NUMSFX-1); if (!lua_isnil(L, 1)) @@ -2373,7 +2373,7 @@ static int lib_sStartSoundAtVolume(lua_State *L) sfxenum_t sound_id = luaL_checkinteger(L, 2); INT32 volume = (INT32)luaL_checkinteger(L, 3); player_t *player = NULL; - NOHUD + //NOHUD if (!lua_isnil(L, 1)) { @@ -2397,7 +2397,7 @@ static int lib_sStartSoundAtVolume(lua_State *L) static int lib_sStopSound(lua_State *L) { void *origin = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ)); - NOHUD + //NOHUD if (!origin) return LUA_ErrInvalid(L, "mobj_t"); S_StopSound(origin); @@ -2414,7 +2414,7 @@ static int lib_sChangeMusic(lua_State *L) boolean looping; player_t *player = NULL; UINT16 music_flags = 0; - NOHUD + //NOHUD if (lua_isnumber(L, 1)) { @@ -2443,7 +2443,7 @@ static int lib_sChangeMusic(lua_State *L) boolean looping = (boolean)lua_opttrueboolean(L, 2); player_t *player = NULL; UINT16 music_flags = 0; - NOHUD + //NOHUD #endif if (!lua_isnone(L, 3) && lua_isuserdata(L, 3)) @@ -2474,7 +2474,7 @@ static int lib_sSpeedMusic(lua_State *L) fixed_t fixedspeed = luaL_checkfixed(L, 1); float speed = FIXED_TO_FLOAT(fixedspeed); player_t *player = NULL; - NOHUD + //NOHUD if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) { player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); @@ -2489,7 +2489,7 @@ static int lib_sSpeedMusic(lua_State *L) static int lib_sStopMusic(lua_State *L) { player_t *player = NULL; - NOHUD + //NOHUD if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) { player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); @@ -2505,7 +2505,7 @@ static int lib_sSetInternalMusicVolume(lua_State *L) { UINT32 volume = (UINT32)luaL_checkinteger(L, 1); player_t *player = NULL; - NOHUD + //NOHUD if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) { player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); @@ -2525,7 +2525,7 @@ static int lib_sSetInternalMusicVolume(lua_State *L) static int lib_sStopFadingMusic(lua_State *L) { player_t *player = NULL; - NOHUD + //NOHUD if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) { player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); @@ -2548,7 +2548,7 @@ static int lib_sFadeMusic(lua_State *L) UINT32 ms; INT32 source_volume; player_t *player = NULL; - NOHUD + //NOHUD if (!lua_isnone(L, 3) && lua_isuserdata(L, 3)) { player = *((player_t **)luaL_checkudata(L, 3, META_PLAYER)); @@ -2576,8 +2576,6 @@ static int lib_sFadeMusic(lua_State *L) ms = (UINT32)luaL_checkinteger(L, 3); } - NOHUD - if (!player || P_IsLocalPlayer(player)) lua_pushboolean(L, S_FadeMusicFromVolume(target_volume, source_volume, ms)); else @@ -2589,7 +2587,7 @@ static int lib_sFadeOutStopMusic(lua_State *L) { UINT32 ms = (UINT32)luaL_checkinteger(L, 1); player_t *player = NULL; - NOHUD + //NOHUD if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) { player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); @@ -2608,7 +2606,7 @@ static int lib_sFadeOutStopMusic(lua_State *L) static int lib_sOriginPlaying(lua_State *L) { void *origin = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ)); - NOHUD + //NOHUD INLEVEL if (!origin) return LUA_ErrInvalid(L, "mobj_t"); @@ -2619,7 +2617,7 @@ static int lib_sOriginPlaying(lua_State *L) static int lib_sIdPlaying(lua_State *L) { sfxenum_t id = luaL_checkinteger(L, 1); - NOHUD + //NOHUD if (id >= NUMSFX) return luaL_error(L, "sfx %d out of range (0 - %d)", id, NUMSFX-1); lua_pushboolean(L, S_IdPlaying(id)); @@ -2630,7 +2628,7 @@ static int lib_sSoundPlaying(lua_State *L) { void *origin = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ)); sfxenum_t id = luaL_checkinteger(L, 2); - NOHUD + //NOHUD INLEVEL if (!origin) return LUA_ErrInvalid(L, "mobj_t"); @@ -2648,7 +2646,7 @@ static int lib_sStartMusicCaption(lua_State *L) const char *caption = luaL_checkstring(L, 1); UINT16 lifespan = (UINT16)luaL_checkinteger(L, 2); //HUDSAFE - INLEVEL + //INLEVEL if (!lua_isnone(L, 3) && lua_isuserdata(L, 3)) { From 40488096c014153680d00a11d2707381930c9b2d Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sun, 23 Feb 2020 15:40:59 -0600 Subject: [PATCH 22/41] Make P_PlayLivesJingle player optional in Lua --- src/lua_baselib.c | 10 +++++++--- src/p_user.c | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lua_baselib.c b/src/lua_baselib.c index e41f81674..8344fca91 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -1674,11 +1674,15 @@ static int lib_pPlayVictorySound(lua_State *L) static int lib_pPlayLivesJingle(lua_State *L) { - player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); + player_t *player = NULL; //NOHUD //INLEVEL - if (!player) - return LUA_ErrInvalid(L, "player_t"); + if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) + { + player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); + if (!player) + return LUA_ErrInvalid(L, "player_t"); + } P_PlayLivesJingle(player); return 0; } diff --git a/src/p_user.c b/src/p_user.c index 880d932af..2dcfd872c 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -392,7 +392,7 @@ void P_GiveFinishFlags(player_t *player) mobj_t* flag = P_SpawnMobjFromMobj(player->mo, xoffs, yoffs, 0, MT_FINISHFLAG); flag->angle = angle; angle += FixedAngle(120*FRACUNIT); - + P_SetTarget(&flag->target, player->mo); } } @@ -1533,7 +1533,7 @@ void P_PlayJingle(player_t *player, jingletype_t jingletype) void P_PlayJingleMusic(player_t *player, const char *musname, UINT16 musflags, boolean looping, UINT16 status) { // If gamestate != GS_LEVEL, always play the jingle (1-up intermission) - if (gamestate == GS_LEVEL && !P_IsLocalPlayer(player)) + if (gamestate == GS_LEVEL && player && !P_IsLocalPlayer(player)) return; S_RetainMusic(musname, musflags, looping, 0, status); From 94738bfd2d18d79698f60b40b04c6ceaad846529 Mon Sep 17 00:00:00 2001 From: Jaime Passos Date: Sun, 23 Feb 2020 19:28:16 -0300 Subject: [PATCH 23/41] Don't get chosen as the tagger if you're a spectator --- src/p_setup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_setup.c b/src/p_setup.c index 7b4c6773b..eee90e03d 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -3096,7 +3096,7 @@ static void P_InitTagGametype(void) //Also, you'd never have to loop through all 32 players slots to find anything ever again. for (i = 0; i < MAXPLAYERS; i++) { - if (playeringame[i] && !(players[i].spectator && players[i].quittime)) + if (playeringame[i] && !(players[i].spectator || players[i].quittime)) { playersactive[realnumplayers] = i; //stores the player's node in the array. realnumplayers++; From c5f386881988c51b6e7f752516ac55cc1706a815 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sun, 23 Feb 2020 17:19:18 -0600 Subject: [PATCH 24/41] Expose P_PlayJingle/Music() to Lua --- src/lua_baselib.c | 55 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/src/lua_baselib.c b/src/lua_baselib.c index 8344fca91..c360007de 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -1040,11 +1040,60 @@ static int lib_pSetObjectMomZ(lua_State *L) return 0; } +static int lib_pPlayJingle(lua_State *L) +{ + player_t *player = NULL; + jingletype_t jingletype = (jingletype_t)luaL_checkinteger(L, 2); + //NOHUD + //INLEVEL + if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) + { + player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); + if (!player) + return LUA_ErrInvalid(L, "player_t"); + } + if (jingletype >= NUMJINGLES) + return luaL_error(L, "jingletype %d out of range (0 - %d)", jingletype, NUMJINGLES-1); + P_PlayJingle(player, jingletype); + return 0; +} + +static int lib_pPlayJingleMusic(lua_State *L) +{ + player_t *player = NULL; + const char *musnamearg = luaL_checkstring(L, 2); + char musname[7], *p = musname; + UINT16 musflags = luaL_optinteger(L, 3, 0); + boolean looping = lua_opttrueboolean(L, 4); + jingletype_t jingletype = (jingletype_t)luaL_optinteger(L, 5, JT_OTHER); + //NOHUD + //INLEVEL + if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) + { + player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); + if (!player) + return LUA_ErrInvalid(L, "player_t"); + } + if (jingletype >= NUMJINGLES) + return luaL_error(L, "jingletype %d out of range (0 - %d)", jingletype, NUMJINGLES-1); + + musname[6] = '\0'; + strncpy(musname, musnamearg, 6); + + while (*p) { + *p = tolower(*p); + ++p; + } + + P_PlayJingleMusic(player, musname, musflags, looping, jingletype); + return 0; +} + static int lib_pRestoreMusic(lua_State *L) { player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); - NOHUD - INLEVEL + //NOHUD + //INLEVEL if (!player) return LUA_ErrInvalid(L, "player_t"); if (P_IsLocalPlayer(player)) @@ -3071,6 +3120,8 @@ static luaL_Reg lib[] = { {"P_InSpaceSector",lib_pInSpaceSector}, {"P_InQuicksand",lib_pInQuicksand}, {"P_SetObjectMomZ",lib_pSetObjectMomZ}, + {"P_PlayJingle",lib_pPlayJingle}, + {"P_PlayJingleMusic",lib_pPlayJingleMusic}, {"P_RestoreMusic",lib_pRestoreMusic}, {"P_SpawnShieldOrb",lib_pSpawnShieldOrb}, {"P_SpawnGhostMobj",lib_pSpawnGhostMobj}, From f2c968dea84ee76db8e8e38327427675c07fd8e9 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sun, 23 Feb 2020 17:20:44 -0600 Subject: [PATCH 25/41] Add JingleStatus hook for carrying custom jingle tunes The extra argument is the music name, as passed into P_PlayJingleMusic(player, musname), to run the hook for, optional. Arguments are (player, musname) - the latter to allow global hooks that still differentiate between different tracks. --- src/lua_hook.h | 2 ++ src/lua_hooklib.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++- src/p_local.h | 2 +- src/p_user.c | 7 +++++-- src/s_sound.c | 2 +- 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/lua_hook.h b/src/lua_hook.h index 265700e4f..ea11d0236 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -58,6 +58,7 @@ enum hook { hook_ViewpointSwitch, hook_SeenPlayer, hook_PlayerThink, + hook_JingleStatus, hook_MAX // last hook }; @@ -110,5 +111,6 @@ UINT8 LUAh_ViewpointSwitch(player_t *player, player_t *newdisplayplayer, boolean boolean LUAh_SeenPlayer(player_t *player, player_t *seenfriend); // Hook for MT_NAMECHECK #endif #define LUAh_PlayerThink(player) LUAh_PlayerHook(player, hook_PlayerThink) // Hook for P_PlayerThink +boolean LUAh_JingleStatus(player_t *player, const char *musname); // Hook for whether a jingle of the given music should continue playing #endif diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index efed9adb7..c56336fca 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -69,6 +69,7 @@ const char *const hookNames[hook_MAX+1] = { "ViewpointSwitch", "SeenPlayer", "PlayerThink", + "JingleStatus", NULL }; @@ -80,7 +81,7 @@ struct hook_s UINT16 id; union { mobjtype_t mt; - char *skinname; + char *skinname; // also used as musname for JingleStatus... I'm lazy char *funcname; } s; boolean error; @@ -148,6 +149,7 @@ static int lib_addHook(lua_State *L) luaL_argcheck(L, hook.s.mt < NUMMOBJTYPES, 2, "invalid mobjtype_t"); break; case hook_BotAI: + case hook_JingleStatus: hook.s.skinname = NULL; if (lua_isstring(L, 2)) { // lowercase copy @@ -1632,4 +1634,49 @@ boolean LUAh_SeenPlayer(player_t *player, player_t *seenfriend) } #endif // SEENAMES +boolean LUAh_JingleStatus(player_t *player, const char *musname) +{ + hook_p hookp; + boolean keepplaying = false; + if (!gL || !(hooksAvailable[hook_JingleStatus/8] & (1<<(hook_JingleStatus%8)))) + return true; + + lua_settop(gL, 0); + hud_running = true; // local hook + + for (hookp = roothook; hookp; hookp = hookp->next) + { + if (hookp->type == hook_JingleStatus) CONS_Printf("jingle status hook for %s vs %s\n", hookp->s.skinname, musname); + + if (hookp->type != hook_JingleStatus + || (hookp->s.skinname && strcmp(hookp->s.skinname, musname))) + continue; + + if (lua_gettop(gL) == 0) + { + LUA_PushUserdata(gL, player, META_PLAYER); + lua_pushstring(gL, musname); + } + lua_pushfstring(gL, FMT_HOOKID, hookp->id); + lua_gettable(gL, LUA_REGISTRYINDEX); + lua_pushvalue(gL, -3); + lua_pushvalue(gL, -3); + if (lua_pcall(gL, 2, 1, 0)) { + if (!hookp->error || cv_debug & DBG_LUA) + CONS_Alert(CONS_WARNING,"%s\n",lua_tostring(gL, -1)); + lua_pop(gL, 1); + hookp->error = true; + continue; + } + if (!lua_isnil(gL, -1) && lua_toboolean(gL, -1)) + keepplaying = true; // Keep playing this boolean + lua_pop(gL, 1); + } + + lua_settop(gL, 0); + hud_running = false; + + return keepplaying; +} + #endif diff --git a/src/p_local.h b/src/p_local.h index 5e27379a7..99c465f9b 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -250,7 +250,7 @@ extern jingle_t jingleinfo[NUMJINGLES]; #define JINGLEPOSTFADE 1000 void P_PlayJingle(player_t *player, jingletype_t jingletype); -boolean P_EvaluateMusicStatus(UINT16 status); +boolean P_EvaluateMusicStatus(UINT16 status, const char *musname); void P_PlayJingleMusic(player_t *player, const char *musname, UINT16 musflags, boolean looping, UINT16 status); // diff --git a/src/p_user.c b/src/p_user.c index 2dcfd872c..ab85897a5 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1541,7 +1541,7 @@ void P_PlayJingleMusic(player_t *player, const char *musname, UINT16 musflags, b S_ChangeMusicInternal(musname, looping); } -boolean P_EvaluateMusicStatus(UINT16 status) +boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) { // \todo lua hook int i; @@ -1598,8 +1598,11 @@ boolean P_EvaluateMusicStatus(UINT16 status) result = (players[i].nightstime && players[i].nightstime <= 10*TICRATE); break; - case JT_NONE: // Null state case JT_OTHER: // Other state + result = LUAh_JingleStatus(&players[i], musname); + break; + + case JT_NONE: // Null state case JT_MASTER: // Main level music default: result = true; diff --git a/src/s_sound.c b/src/s_sound.c index 8193fdb9b..6507ffc02 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -2045,7 +2045,7 @@ static musicstack_t *S_GetMusicStackEntry(UINT16 status, boolean fromfirst, INT1 if (!status || mst->status == status) { - if (P_EvaluateMusicStatus(mst->status)) + if (P_EvaluateMusicStatus(mst->status, mst->musname)) { if (!S_MusicExists(mst->musname, !midi_disabled, !digital_disabled)) // paranoia S_RemoveMusicStackEntry(mst); // then continue From 352029fd76805029e9f8bea5d92fc307cc5e6d68 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sun, 23 Feb 2020 17:58:32 -0600 Subject: [PATCH 26/41] Add music position functions to Lua --- src/lua_baselib.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/lua_baselib.c b/src/lua_baselib.c index c360007de..b6fa1b7aa 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -2656,6 +2656,25 @@ static int lib_sFadeOutStopMusic(lua_State *L) return 1; } +static int lib_sGetMusicLength(lua_State *L) +{ + lua_pushinteger(L, S_GetMusicLength()); + return 1; +} + +static int lib_sGetMusicPosition(lua_State *L) +{ + lua_pushinteger(L, S_GetMusicPosition()); + return 1; +} + +static int lib_sSetMusicPosition(lua_State *L) +{ + UINT32 pos = (UINT32)luaL_checkinteger(L, 1); + lua_pushboolean(L, S_SetMusicPosition(pos)); + return 1; +} + static int lib_sOriginPlaying(lua_State *L) { void *origin = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ)); @@ -3242,6 +3261,9 @@ static luaL_Reg lib[] = { {"S_StopFadingMusic",lib_sStopFadingMusic}, {"S_FadeMusic",lib_sFadeMusic}, {"S_FadeOutStopMusic",lib_sFadeOutStopMusic}, + {"S_GetMusicLength",lib_sGetMusicLength}, + {"S_GetMusicPosition",lib_sGetMusicPosition}, + {"S_SetMusicPosition",lib_sSetMusicPosition}, {"S_OriginPlaying",lib_sOriginPlaying}, {"S_IdPlaying",lib_sIdPlaying}, {"S_SoundPlaying",lib_sSoundPlaying}, From 3d7cd29edaf34d7abf7a5d19f14d327fdd5c69bf Mon Sep 17 00:00:00 2001 From: Jaime Passos Date: Tue, 25 Feb 2020 22:30:34 -0300 Subject: [PATCH 27/41] Fix TYPEOFLEVEL options not having enough bits for TOL_ flags --- src/dehacked.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index dea0289b9..329cf8788 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -1249,7 +1249,7 @@ static void readgametype(MYFILE *f, char *gtname) newgttol = (UINT32)i; else { - UINT16 tol = 0; + UINT32 tol = 0; tmp = strtok(word2,","); do { for (i = 0; TYPEOFLEVEL[i].name; i++) @@ -1591,7 +1591,7 @@ static void readlevelheader(MYFILE *f, INT32 num) mapheaderinfo[num-1]->typeoflevel = (UINT32)i; else { - UINT16 tol = 0; + UINT32 tol = 0; tmp = strtok(word2,","); do { for (i = 0; TYPEOFLEVEL[i].name; i++) @@ -7477,7 +7477,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit // Got Flag Sign "S_GOTFLAG", - + // Finish flag "S_FINISHFLAG", From 25cf369f2261fc9b337524653332c45dfbb59b2d Mon Sep 17 00:00:00 2001 From: Jaime Passos Date: Tue, 25 Feb 2020 22:34:19 -0300 Subject: [PATCH 28/41] Fix (technically functional) string comparison counting an extra character in the comparison length --- src/dehacked.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dehacked.c b/src/dehacked.c index 329cf8788..5d29ca280 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -10236,7 +10236,7 @@ static fixed_t find_const(const char **rword) free(word); return r; } - else if (fastncmp("GT_",word,4)) { + else if (fastncmp("GT_",word,3)) { r = get_gametype(word); free(word); return r; From 70a103b9afb143141449d99fbce0a59a29e358c4 Mon Sep 17 00:00:00 2001 From: Jaime Passos Date: Mon, 2 Mar 2020 00:20:53 -0300 Subject: [PATCH 29/41] Fix G_TOLFlag returning the wrong type --- src/g_game.c | 4 ++-- src/g_game.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index 08192bfb8..6d8826f1c 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -3592,7 +3592,7 @@ boolean G_CompetitionGametype(void) * \return The typeoflevel flag to check for that gametype. * \author Graue */ -INT16 G_TOLFlag(INT32 pgametype) +UINT32 G_TOLFlag(INT32 pgametype) { if (!multiplayer) return TOL_SP; @@ -3723,7 +3723,7 @@ static void G_DoCompleted(void) && (nextmap >= 0 && nextmap < NUMMAPS)) { register INT16 cm = nextmap; - INT16 tolflag = G_TOLFlag(gametype); + UINT32 tolflag = G_TOLFlag(gametype); UINT8 visitedmap[(NUMMAPS+7)/8]; memset(visitedmap, 0, sizeof (visitedmap)); diff --git a/src/g_game.h b/src/g_game.h index c4c40d84b..8a2c5b0ae 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -309,6 +309,6 @@ FUNCMATH INT32 G_TicsToCentiseconds(tic_t tics); FUNCMATH INT32 G_TicsToMilliseconds(tic_t tics); // Don't split up TOL handling -INT16 G_TOLFlag(INT32 pgametype); +UINT32 G_TOLFlag(INT32 pgametype); #endif From 7ba93c184f15ef1212dbc45c69354dbc278293a2 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Mon, 2 Mar 2020 13:33:12 +0100 Subject: [PATCH 30/41] Fix warning and formatting --- src/blua/liolib.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/blua/liolib.c b/src/blua/liolib.c index 378b8c86d..b43052194 100644 --- a/src/blua/liolib.c +++ b/src/blua/liolib.c @@ -34,7 +34,8 @@ #define FMT_FILECALLBACKID "file_callback_%d" -static const char *whitelist[] = { // Allow scripters to write files of these types to SRB2's folder +// Allow scripters to write files of these types to SRB2's folder +static const char *whitelist[] = { ".bmp", ".cfg", ".csv", @@ -508,7 +509,6 @@ static int io_readline (lua_State *L) { static int g_write (lua_State *L, FILE *f, int arg) { int nargs = lua_gettop(L) - 1; int status = 1; - size_t count; for (; nargs--; arg++) { if (lua_type(L, arg) == LUA_TNUMBER) { /* optimization: could be done exactly as for strings */ @@ -518,12 +518,10 @@ static int g_write (lua_State *L, FILE *f, int arg) { else { size_t l; const char *s = luaL_checklstring(L, arg, &l); - count += l; - if (ftell(f) + l > FILELIMIT) - { - luaL_error(L,"write limit bypassed in file. Changes have been discarded."); - break; - } + if (ftell(f) + l > FILELIMIT) { + luaL_error(L,"write limit bypassed in file. Changes have been discarded."); + break; + } status = status && (fwrite(s, sizeof(char), l, f) == l); } } From 04a1f479be653e8def68ead20e489ab735bd0ac6 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Mon, 2 Mar 2020 15:36:28 +0100 Subject: [PATCH 31/41] Increase the length of the player input buffer --- src/d_clisrv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d_clisrv.h b/src/d_clisrv.h index 42da89670..7cdff8ef0 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -36,7 +36,7 @@ basic fields of the packet, and change infrequently. // be transmitted. // Networking and tick handling related. -#define BACKUPTICS 32 +#define BACKUPTICS 96 #define MAXTEXTCMD 256 // // Packet structure From da9bf34175f6eb9bc0affaf5ad1a314f58f23abd Mon Sep 17 00:00:00 2001 From: ZipperQR Date: Thu, 5 Mar 2020 12:24:45 +0300 Subject: [PATCH 32/41] fix source player being nil --- src/p_inter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_inter.c b/src/p_inter.c index a24f9bf03..c2d4c695e 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3441,7 +3441,7 @@ void P_SpecialStageDamage(player_t *player, mobj_t *inflictor, mobj_t *source) if (player->powers[pw_invulnerability] || player->powers[pw_flashing] || player->powers[pw_super]) return; - if (!cv_friendlyfire.value) + if (!cv_friendlyfire.value && source->player) { if (inflictor->type == MT_LHRT && !(player->powers[pw_shield] & SH_NOSTACK)) { From 4d8a523da92654f80d40898efa6e81c34e2f2110 Mon Sep 17 00:00:00 2001 From: Zipper Date: Thu, 5 Mar 2020 18:30:27 -0500 Subject: [PATCH 33/41] Update p_inter.c --- src/p_inter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_inter.c b/src/p_inter.c index c2d4c695e..858718f84 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3441,7 +3441,7 @@ void P_SpecialStageDamage(player_t *player, mobj_t *inflictor, mobj_t *source) if (player->powers[pw_invulnerability] || player->powers[pw_flashing] || player->powers[pw_super]) return; - if (!cv_friendlyfire.value && source->player) + if (!cv_friendlyfire.value && source && source->player) { if (inflictor->type == MT_LHRT && !(player->powers[pw_shield] & SH_NOSTACK)) { From 4b28e19d16db1ece7bdeffef981513ef0b30d360 Mon Sep 17 00:00:00 2001 From: Zipper Date: Thu, 5 Mar 2020 18:48:20 -0500 Subject: [PATCH 34/41] Update p_inter.c --- src/p_inter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_inter.c b/src/p_inter.c index 858718f84..95f8fba41 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3456,7 +3456,7 @@ void P_SpecialStageDamage(player_t *player, mobj_t *inflictor, mobj_t *source) return; } - if (inflictor->type == MT_LHRT) + if (inflictor && inflictor->type == MT_LHRT) return; if (player->powers[pw_shield] || player->bot) //If One-Hit Shield From e0badd1e5b7dfb89d19a04be82a9543ceb60820e Mon Sep 17 00:00:00 2001 From: fickleheart Date: Wed, 18 Mar 2020 22:35:21 -0500 Subject: [PATCH 35/41] Rename hook to ShouldJingleContinue --- src/lua_hook.h | 4 ++-- src/lua_hooklib.c | 14 +++++++------- src/p_user.c | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lua_hook.h b/src/lua_hook.h index ea11d0236..dde8d4c41 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -58,7 +58,7 @@ enum hook { hook_ViewpointSwitch, hook_SeenPlayer, hook_PlayerThink, - hook_JingleStatus, + hook_ShouldJingleContinue, hook_MAX // last hook }; @@ -111,6 +111,6 @@ UINT8 LUAh_ViewpointSwitch(player_t *player, player_t *newdisplayplayer, boolean boolean LUAh_SeenPlayer(player_t *player, player_t *seenfriend); // Hook for MT_NAMECHECK #endif #define LUAh_PlayerThink(player) LUAh_PlayerHook(player, hook_PlayerThink) // Hook for P_PlayerThink -boolean LUAh_JingleStatus(player_t *player, const char *musname); // Hook for whether a jingle of the given music should continue playing +boolean LUAh_ShouldJingleContinue(player_t *player, const char *musname); // Hook for whether a jingle of the given music should continue playing #endif diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index c56336fca..3a4d67492 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -69,7 +69,7 @@ const char *const hookNames[hook_MAX+1] = { "ViewpointSwitch", "SeenPlayer", "PlayerThink", - "JingleStatus", + "ShouldJingleContinue", NULL }; @@ -81,7 +81,7 @@ struct hook_s UINT16 id; union { mobjtype_t mt; - char *skinname; // also used as musname for JingleStatus... I'm lazy + char *skinname; // also used as musname for ShouldJingleContinue... I'm lazy char *funcname; } s; boolean error; @@ -149,7 +149,7 @@ static int lib_addHook(lua_State *L) luaL_argcheck(L, hook.s.mt < NUMMOBJTYPES, 2, "invalid mobjtype_t"); break; case hook_BotAI: - case hook_JingleStatus: + case hook_ShouldJingleContinue: hook.s.skinname = NULL; if (lua_isstring(L, 2)) { // lowercase copy @@ -1634,11 +1634,11 @@ boolean LUAh_SeenPlayer(player_t *player, player_t *seenfriend) } #endif // SEENAMES -boolean LUAh_JingleStatus(player_t *player, const char *musname) +boolean LUAh_ShouldJingleContinue(player_t *player, const char *musname) { hook_p hookp; boolean keepplaying = false; - if (!gL || !(hooksAvailable[hook_JingleStatus/8] & (1<<(hook_JingleStatus%8)))) + if (!gL || !(hooksAvailable[hook_ShouldJingleContinue/8] & (1<<(hook_ShouldJingleContinue%8)))) return true; lua_settop(gL, 0); @@ -1646,9 +1646,9 @@ boolean LUAh_JingleStatus(player_t *player, const char *musname) for (hookp = roothook; hookp; hookp = hookp->next) { - if (hookp->type == hook_JingleStatus) CONS_Printf("jingle status hook for %s vs %s\n", hookp->s.skinname, musname); + if (hookp->type == hook_ShouldJingleContinue) CONS_Printf("jingle status hook for %s vs %s\n", hookp->s.skinname, musname); - if (hookp->type != hook_JingleStatus + if (hookp->type != hook_ShouldJingleContinue || (hookp->s.skinname && strcmp(hookp->s.skinname, musname))) continue; diff --git a/src/p_user.c b/src/p_user.c index ab85897a5..b7b95f9f0 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1599,7 +1599,7 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) break; case JT_OTHER: // Other state - result = LUAh_JingleStatus(&players[i], musname); + result = LUAh_ShouldJingleContinue(&players[i], musname); break; case JT_NONE: // Null state From dd0d86120b09c2a2f7d2a06c34f9abbf82d5111c Mon Sep 17 00:00:00 2001 From: fickleheart Date: Wed, 18 Mar 2020 22:38:18 -0500 Subject: [PATCH 36/41] > building SRB2 without Lua in 2020 --- src/p_user.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/p_user.c b/src/p_user.c index b7b95f9f0..3694a1a3b 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1599,8 +1599,10 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) break; case JT_OTHER: // Other state +#ifdef HAVE_BLUA result = LUAh_ShouldJingleContinue(&players[i], musname); break; +#endif case JT_NONE: // Null state case JT_MASTER: // Main level music From 647f73c8f26d66370de86723b80428efbfb1f7f3 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Wed, 18 Mar 2020 22:38:51 -0500 Subject: [PATCH 37/41] Clean up after myself --- src/lua_hooklib.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index 3a4d67492..4f873dd99 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -1646,8 +1646,6 @@ boolean LUAh_ShouldJingleContinue(player_t *player, const char *musname) for (hookp = roothook; hookp; hookp = hookp->next) { - if (hookp->type == hook_ShouldJingleContinue) CONS_Printf("jingle status hook for %s vs %s\n", hookp->s.skinname, musname); - if (hookp->type != hook_ShouldJingleContinue || (hookp->s.skinname && strcmp(hookp->s.skinname, musname))) continue; From 520e3c5dc32e1970c339be3b2fc9eee80ab168bb Mon Sep 17 00:00:00 2001 From: fickleheart Date: Wed, 18 Mar 2020 22:40:11 -0500 Subject: [PATCH 38/41] Are these casts unnecessary...?? --- src/lua_baselib.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lua_baselib.c b/src/lua_baselib.c index b6fa1b7aa..4694b56ba 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -1043,7 +1043,7 @@ static int lib_pSetObjectMomZ(lua_State *L) static int lib_pPlayJingle(lua_State *L) { player_t *player = NULL; - jingletype_t jingletype = (jingletype_t)luaL_checkinteger(L, 2); + jingletype_t jingletype = luaL_checkinteger(L, 2); //NOHUD //INLEVEL if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) @@ -1065,7 +1065,7 @@ static int lib_pPlayJingleMusic(lua_State *L) char musname[7], *p = musname; UINT16 musflags = luaL_optinteger(L, 3, 0); boolean looping = lua_opttrueboolean(L, 4); - jingletype_t jingletype = (jingletype_t)luaL_optinteger(L, 5, JT_OTHER); + jingletype_t jingletype = luaL_optinteger(L, 5, JT_OTHER); //NOHUD //INLEVEL if (!lua_isnone(L, 1) && lua_isuserdata(L, 1)) From 9c86cd0bc2e7895d9c46b79cb5e368e74dece2b0 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Wed, 18 Mar 2020 22:42:31 -0500 Subject: [PATCH 39/41] More union types for the union type god --- src/lua_hooklib.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index 4f873dd99..2843b0228 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -81,7 +81,8 @@ struct hook_s UINT16 id; union { mobjtype_t mt; - char *skinname; // also used as musname for ShouldJingleContinue... I'm lazy + char *skinname; + char *musname; char *funcname; } s; boolean error; @@ -1647,7 +1648,7 @@ boolean LUAh_ShouldJingleContinue(player_t *player, const char *musname) for (hookp = roothook; hookp; hookp = hookp->next) { if (hookp->type != hook_ShouldJingleContinue - || (hookp->s.skinname && strcmp(hookp->s.skinname, musname))) + || (hookp->s.musname && strcmp(hookp->s.musname, musname))) continue; if (lua_gettop(gL) == 0) From e3cbdf8fabd34ff8c5cf7fc98fde2d377c6eedff Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Thu, 19 Mar 2020 18:36:14 +0100 Subject: [PATCH 40/41] Use HAVE_BLUA as fuel for my fireplace --- src/CMakeLists.txt | 163 ++-- src/Makefile | 6 +- src/b_bot.c | 4 - src/blua/Makefile.cfg | 2 - src/command.c | 6 - src/d_clisrv.c | 20 - src/d_clisrv.h | 2 - src/d_main.c | 8 - src/d_net.c | 4 - src/d_netcmd.c | 20 +- src/d_netcmd.h | 2 - src/d_netfil.c | 8 - src/d_netfil.h | 2 - src/dehacked.c | 65 +- src/dehacked.h | 2 - src/doomstat.h | 1 - src/f_finale.c | 8 - src/f_wipe.c | 2 - src/filesrch.h | 2 +- src/g_game.c | 16 +- src/hu_stuff.c | 31 +- src/lua_baselib.c | 3 - src/lua_blockmaplib.c | 3 - src/lua_consolelib.c | 3 - src/lua_hook.h | 4 - src/lua_hooklib.c | 3 - src/lua_hudlib.c | 3 - src/lua_infolib.c | 3 - src/lua_libs.h | 4 - src/lua_maplib.c | 3 - src/lua_mathlib.c | 3 - src/lua_mobjlib.c | 3 - src/lua_playerlib.c | 3 - src/lua_script.c | 3 - src/lua_script.h | 4 - src/lua_skinlib.c | 3 - src/lua_thinkerlib.c | 3 - src/m_cheat.c | 4 +- src/m_cheat.h | 2 +- src/m_menu.c | 6 - src/p_enemy.c | 765 +++++------------- src/p_inter.c | 20 - src/p_map.c | 11 +- src/p_mobj.c | 225 +++--- src/p_saveg.c | 6 - src/p_setup.c | 8 - src/p_spec.c | 4 - src/p_tick.c | 15 +- src/p_user.c | 171 ++-- src/s_sound.c | 4 +- src/sdl/Srb2SDL-vc9.vcproj | 8 +- .../macosx/Srb2mac.xcodeproj/project.pbxproj | 2 - src/st_stuff.c | 126 +-- src/w_wad.c | 15 +- src/win32/Srb2win-vc9.vcproj | 8 +- src/y_inter.c | 10 - src/z_zone.c | 2 - 57 files changed, 513 insertions(+), 1324 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b95fdd9e7..372341291 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -216,8 +216,6 @@ source_group("Assembly" FILES ${SRB2_ASM_SOURCES} ${SRB2_NASM_SOURCES}) ### Configuration -set(SRB2_CONFIG_HAVE_BLUA ON CACHE BOOL - "Enable Lua interpreter support") set(SRB2_CONFIG_HAVE_PNG ON CACHE BOOL "Enable PNG support. Depends on zlib, so will be disabled if you don't enable that too.") set(SRB2_CONFIG_HAVE_ZLIB ON CACHE BOOL @@ -241,93 +239,90 @@ if(${CMAKE_SYSTEM} MATCHES "Windows") ###set on Windows only "Use SRB2's internal copies of required dependencies (SDL2, PNG, zlib, GME, OpenMPT).") endif() -if(${SRB2_CONFIG_HAVE_BLUA}) - add_definitions(-DHAVE_BLUA) - set(SRB2_LUA_SOURCES - lua_baselib.c - lua_blockmaplib.c - lua_consolelib.c - lua_hooklib.c - lua_hudlib.c - lua_infolib.c - lua_maplib.c - lua_mathlib.c - lua_mobjlib.c - lua_playerlib.c - lua_script.c - lua_skinlib.c - lua_thinkerlib.c - ) - set(SRB2_LUA_HEADERS - lua_hook.h - lua_hud.h - lua_libs.h - lua_script.h - ) +set(SRB2_LUA_SOURCES + lua_baselib.c + lua_blockmaplib.c + lua_consolelib.c + lua_hooklib.c + lua_hudlib.c + lua_infolib.c + lua_maplib.c + lua_mathlib.c + lua_mobjlib.c + lua_playerlib.c + lua_script.c + lua_skinlib.c + lua_thinkerlib.c +) +set(SRB2_LUA_HEADERS + lua_hook.h + lua_hud.h + lua_libs.h + lua_script.h +) - prepend_sources(SRB2_LUA_SOURCES) - prepend_sources(SRB2_LUA_HEADERS) +prepend_sources(SRB2_LUA_SOURCES) +prepend_sources(SRB2_LUA_HEADERS) - source_group("LUA" FILES ${SRB2_LUA_SOURCES} ${SRB2_LUA_HEADERS}) +source_group("LUA" FILES ${SRB2_LUA_SOURCES} ${SRB2_LUA_HEADERS}) - set(SRB2_BLUA_SOURCES - blua/lapi.c - blua/lauxlib.c - blua/lbaselib.c - blua/lcode.c - blua/ldebug.c - blua/ldo.c - blua/ldump.c - blua/lfunc.c - blua/lgc.c - blua/linit.c - blua/liolib.c - blua/llex.c - blua/lmem.c - blua/lobject.c - blua/lopcodes.c - blua/lparser.c - blua/lstate.c - blua/lstring.c - blua/lstrlib.c - blua/ltable.c - blua/ltablib.c - blua/ltm.c - blua/lundump.c - blua/lvm.c - blua/lzio.c - ) - set(SRB2_BLUA_HEADERS - blua/lapi.h - blua/lauxlib.h - blua/lcode.h - blua/ldebug.h - blua/ldo.h - blua/lfunc.h - blua/lgc.h - blua/llex.h - blua/llimits.h - blua/lmem.h - blua/lobject.h - blua/lopcodes.h - blua/lparser.h - blua/lstate.h - blua/lstring.h - blua/ltable.h - blua/ltm.h - blua/lua.h - blua/luaconf.h - blua/lualib.h - blua/lundump.h - blua/lvm.h - blua/lzio.h - ) +set(SRB2_BLUA_SOURCES + blua/lapi.c + blua/lauxlib.c + blua/lbaselib.c + blua/lcode.c + blua/ldebug.c + blua/ldo.c + blua/ldump.c + blua/lfunc.c + blua/lgc.c + blua/linit.c + blua/liolib.c + blua/llex.c + blua/lmem.c + blua/lobject.c + blua/lopcodes.c + blua/lparser.c + blua/lstate.c + blua/lstring.c + blua/lstrlib.c + blua/ltable.c + blua/ltablib.c + blua/ltm.c + blua/lundump.c + blua/lvm.c + blua/lzio.c +) +set(SRB2_BLUA_HEADERS + blua/lapi.h + blua/lauxlib.h + blua/lcode.h + blua/ldebug.h + blua/ldo.h + blua/lfunc.h + blua/lgc.h + blua/llex.h + blua/llimits.h + blua/lmem.h + blua/lobject.h + blua/lopcodes.h + blua/lparser.h + blua/lstate.h + blua/lstring.h + blua/ltable.h + blua/ltm.h + blua/lua.h + blua/luaconf.h + blua/lualib.h + blua/lundump.h + blua/lvm.h + blua/lzio.h +) - prepend_sources(SRB2_BLUA_SOURCES) - prepend_sources(SRB2_BLUA_HEADERS) +prepend_sources(SRB2_BLUA_SOURCES) +prepend_sources(SRB2_BLUA_HEADERS) - source_group("LUA\\Interpreter" FILES ${SRB2_BLUA_SOURCES} ${SRB2_BLUA_HEADERS}) -endif() +source_group("LUA\\Interpreter" FILES ${SRB2_BLUA_SOURCES} ${SRB2_BLUA_HEADERS}) if(${SRB2_CONFIG_HAVE_GME}) if(${SRB2_CONFIG_USE_INTERNAL_LIBRARIES}) diff --git a/src/Makefile b/src/Makefile index 701f2cfda..1ebd39ac4 100644 --- a/src/Makefile +++ b/src/Makefile @@ -340,9 +340,7 @@ CFLAGS+=-DHAVE_MINIUPNPC endif endif -ifndef NO_LUA - include blua/Makefile.cfg -endif +include blua/Makefile.cfg ifdef NOMD5 OPTS+=-DNOMD5 @@ -683,9 +681,7 @@ $(OBJDIR)/depend.dep: ifndef NOHW $(CC) $(CFLAGS) -MM hardware/*.c >> $(OBJDIR)/depend.ped endif -ifndef NO_LUA $(CC) $(CFLAGS) -MM blua/*.c >> $(OBJDIR)/depend.ped -endif @sed -e 's,\(.*\)\.o: ,$(subst /,\/,$(OBJDIR))\/&,g' < $(OBJDIR)/depend.ped > $(OBJDIR)/depend.dep $(REMOVE) $(OBJDIR)/depend.ped @echo "Created dependency file, depend.dep" diff --git a/src/b_bot.c b/src/b_bot.c index 4f904b672..4fefbdcb6 100644 --- a/src/b_bot.c +++ b/src/b_bot.c @@ -74,11 +74,9 @@ static void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cmd) if (!sonic || sonic->health <= 0) return; -#ifdef HAVE_BLUA // Lua can handle it! if (LUAh_BotAI(sonic, tails, cmd)) return; -#endif if (tails->player->powers[pw_carry] == CR_MACESPIN || tails->player->powers[pw_carry] == CR_GENERIC) { @@ -364,11 +362,9 @@ void B_BuildTiccmd(player_t *player, ticcmd_t *cmd) // Bot AI isn't programmed in analog. CV_SetValue(&cv_analog[1], false); -#ifdef HAVE_BLUA // Let Lua scripts build ticcmds if (LUAh_BotTiccmd(player, cmd)) return; -#endif // We don't have any main character AI, sorry. D: if (player-players == consoleplayer) diff --git a/src/blua/Makefile.cfg b/src/blua/Makefile.cfg index 659faf3c8..12ea064b4 100644 --- a/src/blua/Makefile.cfg +++ b/src/blua/Makefile.cfg @@ -10,8 +10,6 @@ WFLAGS+=-Wno-logical-op endif endif -OPTS+=-DHAVE_BLUA - OBJS:=$(OBJS) \ $(OBJDIR)/lapi.o \ $(OBJDIR)/lbaselib.o \ diff --git a/src/command.c b/src/command.c index d1eea6052..72dc9f769 100644 --- a/src/command.c +++ b/src/command.c @@ -481,13 +481,11 @@ void COM_AddCommand(const char *name, com_func_t func) { if (!stricmp(name, cmd->name)) //case insensitive now that we have lower and uppercase! { -#ifdef HAVE_BLUA // don't I_Error for Lua commands // Lua commands can replace game commands, and they have priority. // BUT, if for some reason we screwed up and made two console commands with the same name, // it's good to have this here so we find out. if (cmd->function != COM_Lua_f) -#endif I_Error("Command %s already exists\n", name); return; @@ -501,7 +499,6 @@ void COM_AddCommand(const char *name, com_func_t func) com_commands = cmd; } -#ifdef HAVE_BLUA /** Adds a console command for Lua. * No I_Errors allowed; return a negative code instead. * @@ -534,7 +531,6 @@ int COM_AddLuaCommand(const char *name) com_commands = cmd; return 0; } -#endif /** Tests if a command exists. * @@ -1427,9 +1423,7 @@ finish: } var->flags |= CV_MODIFIED; // raise 'on change' code -#ifdef HAVE_BLUA LUA_CVarChanged(var->name); // let consolelib know what cvar this is. -#endif if (var->flags & CV_CALL && !stealth) var->func(); diff --git a/src/d_clisrv.c b/src/d_clisrv.c index b706b5467..aa5d4cb9a 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2547,20 +2547,14 @@ static void CL_RemovePlayer(INT32 playernum, kickreason_t reason) } } -#ifdef HAVE_BLUA LUAh_PlayerQuit(&players[playernum], reason); // Lua hook for player quitting -#else - (void)reason; -#endif // don't look through someone's view who isn't there if (playernum == displayplayer) { -#ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. LUAh_ViewpointSwitch(&players[consoleplayer], &players[consoleplayer], true); -#endif displayplayer = consoleplayer; } @@ -2581,9 +2575,7 @@ static void CL_RemovePlayer(INT32 playernum, kickreason_t reason) RemoveAdminPlayer(playernum); // don't stay admin after you're gone } -#ifdef HAVE_BLUA LUA_InvalidatePlayer(&players[playernum]); -#endif if (G_TagGametype()) //Check if you still have a game. Location flexible. =P P_CheckSurvivors(); @@ -3177,9 +3169,7 @@ void SV_ResetServer(void) for (i = 0; i < MAXPLAYERS; i++) { -#ifdef HAVE_BLUA LUA_InvalidatePlayer(&players[i]); -#endif playeringame[i] = false; playernode[i] = UINT8_MAX; memset(playeraddress[i], 0, sizeof(*playeraddress)); @@ -3240,10 +3230,8 @@ void D_QuitNetGame(void) // abort send/receive of files CloseNetFile(); -#ifdef HAVE_BLUA RemoveAllLuaFileTransfers(); waitingforluafiletransfer = false; -#endif if (server) { @@ -3414,10 +3402,8 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum) if (server && multiplayer && motd[0] != '\0') COM_BufAddText(va("sayto %d %s\n", newplayernum, motd)); -#ifdef HAVE_BLUA if (!rejoined) LUAh_PlayerJoin(newplayernum); -#endif } static boolean SV_AddWaitingPlayers(const char *name, const char *name2) @@ -3625,10 +3611,8 @@ static void HandleConnect(SINT8 node) SV_SendRefuse(node, M_GetText("Too many players from\nthis node.")); else if (netgame && !netbuffer->u.clientcfg.localplayers) // Stealth join? SV_SendRefuse(node, M_GetText("No players from\nthis node.")); -#ifdef HAVE_BLUA else if (luafiletransfers) SV_SendRefuse(node, M_GetText("The server is broadcasting a file\nrequested by a Lua script.\nPlease wait a bit and then\ntry rejoining.")); -#endif else { #ifndef NONET @@ -4215,7 +4199,6 @@ static void HandlePacketFromPlayer(SINT8 node) Net_CloseConnection(node); nodeingame[node] = false; break; -#ifdef HAVE_BLUA case PT_ASKLUAFILE: if (server && luafiletransfers && luafiletransfers->nodestatus[node] == LFTNS_ASKED) { @@ -4228,7 +4211,6 @@ static void HandlePacketFromPlayer(SINT8 node) if (server && luafiletransfers && luafiletransfers->nodestatus[node] == LFTNS_SENDING) SV_HandleLuaFileSent(node); break; -#endif // -------------------------------------------- CLIENT RECEIVE ---------- case PT_RESYNCHEND: // Only accept PT_RESYNCHEND from the server. @@ -4356,12 +4338,10 @@ static void HandlePacketFromPlayer(SINT8 node) if (client) Got_Filetxpak(); break; -#ifdef HAVE_BLUA case PT_SENDINGLUAFILE: if (client) CL_PrepareDownloadLuaFile(); break; -#endif default: DEBFILE(va("UNKNOWN PACKET TYPE RECEIVED %d from host %d\n", netbuffer->packettype, node)); diff --git a/src/d_clisrv.h b/src/d_clisrv.h index b5cc00152..30d562bed 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -67,11 +67,9 @@ typedef enum PT_RESYNCHEND, // Player is now resynched and is being requested to remake the gametic PT_RESYNCHGET, // Player got resynch packet -#ifdef HAVE_BLUA PT_SENDINGLUAFILE, // Server telling a client Lua needs to open a file PT_ASKLUAFILE, // Client telling the server they don't have the file PT_HASLUAFILE, // Client telling the server they have the file -#endif // Add non-PT_CANFAIL packet types here to avoid breaking MS compatibility. diff --git a/src/d_main.c b/src/d_main.c index 9cbcdc0c6..40e7af22a 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -91,9 +91,7 @@ int snprintf(char *str, size_t n, const char *fmt, ...); #include "hardware/hw3sound.h" #endif -#ifdef HAVE_BLUA #include "lua_script.h" -#endif // platform independant focus loss UINT8 window_notinfocus = false; @@ -746,9 +744,7 @@ void D_SRB2Loop(void) HW3S_EndFrameUpdate(); #endif -#ifdef HAVE_BLUA LUA_Step(); -#endif } } @@ -1124,9 +1120,7 @@ void D_SRB2Main(void) // can't use sprintf since there is %u in savegamename strcatbf(savegamename, srb2home, PATHSEP); -#ifdef HAVE_BLUA snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", srb2home); -#endif #else // DEFAULTDIR snprintf(srb2home, sizeof srb2home, "%s", userhome); snprintf(downloaddir, sizeof downloaddir, "%s", userhome); @@ -1138,9 +1132,7 @@ void D_SRB2Main(void) // can't use sprintf since there is %u in savegamename strcatbf(savegamename, userhome, PATHSEP); -#ifdef HAVE_BLUA snprintf(luafiledir, sizeof luafiledir, "%s" PATHSEP "luafiles", userhome); -#endif #endif // DEFAULTDIR } diff --git a/src/d_net.c b/src/d_net.c index 77a58e9bd..1db75f3da 100644 --- a/src/d_net.c +++ b/src/d_net.c @@ -715,10 +715,8 @@ void Net_CloseConnection(INT32 node) InitNode(&nodes[node]); SV_AbortSendFiles(node); -#ifdef HAVE_BLUA if (server) SV_AbortLuaFileTransfer(node); -#endif I_NetFreeNodenum(node); #endif } @@ -803,11 +801,9 @@ static const char *packettypename[NUMPACKETTYPE] = "RESYNCHEND", "RESYNCHGET", -#ifdef HAVE_BLUA "SENDINGLUAFILE", "ASKLUAFILE", "HASLUAFILE", -#endif "FILEFRAGMENT", "TEXTCMD", diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 5ad972b29..aaa01c57f 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -157,10 +157,8 @@ static void Command_Isgamemodified_f(void); static void Command_Cheats_f(void); #ifdef _DEBUG static void Command_Togglemodified_f(void); -#ifdef HAVE_BLUA static void Command_Archivetest_f(void); #endif -#endif // ========================================================================= // CLIENT VARIABLES @@ -415,11 +413,9 @@ const char *netxcmdnames[MAXNETXCMD - 1] = "DELFILE", // replace next time we add an XD "SETMOTD", "SUICIDE", -#ifdef HAVE_BLUA "LUACMD", "LUAVAR", "LUAFILE" -#endif }; // ========================================================================= @@ -452,10 +448,8 @@ void D_RegisterServerCommands(void) RegisterNetXCmd(XD_PAUSE, Got_Pause); RegisterNetXCmd(XD_SUICIDE, Got_Suicide); RegisterNetXCmd(XD_RUNSOC, Got_RunSOCcmd); -#ifdef HAVE_BLUA RegisterNetXCmd(XD_LUACMD, Got_Luacmd); RegisterNetXCmd(XD_LUAFILE, Got_LuaFile); -#endif // Remote Administration COM_AddCommand("password", Command_Changepassword_f); @@ -504,9 +498,7 @@ void D_RegisterServerCommands(void) COM_AddCommand("cheats", Command_Cheats_f); // test #ifdef _DEBUG COM_AddCommand("togglemodified", Command_Togglemodified_f); -#ifdef HAVE_BLUA COM_AddCommand("archivetest", Command_Archivetest_f); -#endif #endif // for master server connection @@ -915,7 +907,7 @@ void D_RegisterClientCommands(void) #ifdef _DEBUG COM_AddCommand("causecfail", Command_CauseCfail_f); #endif -#if defined(HAVE_BLUA) && defined(LUA_ALLOW_BYTECODE) +#ifdef LUA_ALLOW_BYTECODE COM_AddCommand("dumplua", Command_Dumplua_f); #endif } @@ -2029,9 +2021,7 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum) UINT8 flags; INT32 resetplayer = 1, lastgametype; UINT8 skipprecutscene, FLS; -#ifdef HAVE_BLUA INT16 mapnumber; -#endif if (playernum != serverplayer && !IsPlayerAdmin(playernum)) { @@ -2093,10 +2083,8 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum) CV_StealthSetValue(&cv_playercolor, players[0].skincolor); } -#ifdef HAVE_BLUA mapnumber = M_MapNumber(mapname[3], mapname[4]); LUAh_MapChange(mapnumber); -#endif G_InitNew(ultimatemode, mapname, resetplayer, skipprecutscene, FLS); if (demoplayback && !timingdemo) @@ -2680,11 +2668,9 @@ static void Got_Teamchange(UINT8 **cp, INT32 playernum) return; } -#ifdef HAVE_BLUA // Don't switch team, just go away, please, go awaayyyy, aaauuauugghhhghgh if (!LUAh_TeamSwitch(&players[playernum], NetPacket.packet.newteam, players[playernum].spectator, NetPacket.packet.autobalance, NetPacket.packet.scrambled)) return; -#endif //no status changes after hidetime if ((gametyperules & GTR_HIDEFROZEN) && (leveltime >= (hidetime * TICRATE))) @@ -2841,12 +2827,10 @@ static void Got_Teamchange(UINT8 **cp, INT32 playernum) //reset view if you are changed, or viewing someone who was changed. if (playernum == consoleplayer || displayplayer == playernum) { -#ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. if (displayplayer != consoleplayer) // You're already viewing yourself. No big deal. LUAh_ViewpointSwitch(&players[consoleplayer], &players[consoleplayer], true); -#endif displayplayer = consoleplayer; } @@ -4332,7 +4316,6 @@ static void Command_Togglemodified_f(void) modifiedgame = !modifiedgame; } -#ifdef HAVE_BLUA extern UINT8 *save_p; static void Command_Archivetest_f(void) { @@ -4377,7 +4360,6 @@ static void Command_Archivetest_f(void) CONS_Printf("Done. No crash.\n"); } #endif -#endif /** Makes a change to ::cv_forceskin take effect immediately. * diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 6e6ae0c0a..897c28968 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -142,11 +142,9 @@ typedef enum XD_SETMOTD, // 19 XD_SUICIDE, // 20 XD_DEMOTED, // 21 -#ifdef HAVE_BLUA XD_LUACMD, // 22 XD_LUAVAR, // 23 XD_LUAFILE, // 24 -#endif MAXNETXCMD } netxcmd_t; diff --git a/src/d_netfil.c b/src/d_netfil.c index 9ce423cd4..6d3ac7f9d 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -95,11 +95,9 @@ char downloaddir[512] = "DOWNLOAD"; INT32 lastfilenum = -1; #endif -#ifdef HAVE_BLUA luafiletransfer_t *luafiletransfers = NULL; boolean waitingforluafiletransfer = false; char luafiledir[256 + 16] = "luafiles"; -#endif /** Fills a serverinfo packet with information about wad files loaded. @@ -458,7 +456,6 @@ void CL_LoadServerFiles(void) } } -#ifdef HAVE_BLUA void AddLuaFileTransfer(const char *filename, const char *mode) { luafiletransfer_t **prevnext; // A pointer to the "next" field of the last transfer in the list @@ -614,7 +611,6 @@ void CL_PrepareDownloadLuaFile(void) // Make sure all directories in the file path exist MakePathDirs(fileneeded[0].filename); } -#endif // Number of files to send // Little optimization to quickly test if there is a file in the queue @@ -749,7 +745,6 @@ void SV_SendRam(INT32 node, void *data, size_t size, freemethod_t freemethod, UI filestosend++; } -#ifdef HAVE_BLUA /** Adds a file requested by Lua to the file list for a node * * \param node The node to send the file to @@ -798,7 +793,6 @@ boolean SV_SendLuaFile(INT32 node, const char *filename, boolean textmode) filestosend++; return true; } -#endif /** Stops sending a file for a node, and removes the file request from the list, * either because the file has been fully sent or because the node was disconnected @@ -1035,14 +1029,12 @@ void Got_Filetxpak(void) file->status = FS_FOUND; CONS_Printf(M_GetText("Downloading %s...(done)\n"), filename); -#ifdef HAVE_BLUA if (luafiletransfers) { // Tell the server we have received the file netbuffer->packettype = PT_HASLUAFILE; HSendPacket(servernode, true, 0, 0); } -#endif } } else diff --git a/src/d_netfil.h b/src/d_netfil.h index f0a7cf8cc..7d6efada0 100644 --- a/src/d_netfil.h +++ b/src/d_netfil.h @@ -72,7 +72,6 @@ boolean CL_CheckDownloadable(void); boolean CL_SendRequestFile(void); boolean Got_RequestFilePak(INT32 node); -#ifdef HAVE_BLUA typedef enum { LFTNS_WAITING, // This node is waiting for the server to send the file @@ -108,7 +107,6 @@ void Got_LuaFile(UINT8 **cp, INT32 playernum); void StoreLuaFileCallback(INT32 id); void RemoveLuaFileCallback(INT32 id); void MakePathDirs(char *path); -#endif void SV_AbortSendFiles(INT32 node); void CloseNetFile(void); diff --git a/src/dehacked.c b/src/dehacked.c index ab9bd136b..588b78142 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -40,9 +40,7 @@ #include "m_cond.h" -#ifdef HAVE_BLUA #include "v_video.h" // video flags (for lua) -#endif #ifdef HWRENDER #include "hardware/hw_light.h" @@ -77,10 +75,8 @@ static UINT16 get_mus(const char *word, UINT8 dehacked_mode); #endif static hudnum_t get_huditem(const char *word); static menutype_t get_menutype(const char *word); -#ifndef HAVE_BLUA -static INT16 get_gametype(const char *word); -static powertype_t get_power(const char *word); -#endif +//static INT16 get_gametype(const char *word); +//static powertype_t get_power(const char *word); boolean deh_loaded = false; static int dbg_line; @@ -1416,7 +1412,6 @@ static void readlevelheader(MYFILE *f, INT32 num) // Lua custom options also go above, contents may be case sensitive. if (fastncmp(word, "LUA.", 4)) { -#ifdef HAVE_BLUA UINT8 j; customoption_t *modoption; @@ -1450,9 +1445,6 @@ static void readlevelheader(MYFILE *f, INT32 num) modoption->option[31] = '\0'; strncpy(modoption->value, word2, 255); modoption->value[255] = '\0'; -#else - // Silently ignore. -#endif continue; } @@ -3124,22 +3116,20 @@ static void readframe(MYFILE *f, INT32 num) } z = 0; -#ifdef HAVE_BLUA found = LUA_SetLuaAction(&states[num], actiontocompare); if (!found) -#endif - while (actionpointers[z].name) - { - if (fastcmp(actiontocompare, actionpointers[z].name)) + while (actionpointers[z].name) { - states[num].action = actionpointers[z].action; - states[num].action.acv = actionpointers[z].action.acv; // assign - states[num].action.acp1 = actionpointers[z].action.acp1; - found = true; - break; + if (fastcmp(actiontocompare, actionpointers[z].name)) + { + states[num].action = actionpointers[z].action; + states[num].action.acv = actionpointers[z].action.acv; // assign + states[num].action.acp1 = actionpointers[z].action.acp1; + found = true; + break; + } + z++; } - z++; - } if (!found) deh_warning("Unknown action %s", actiontocompare); @@ -8849,14 +8839,12 @@ static const char *const MOBJEFLAG_LIST[] = { NULL }; -#ifdef HAVE_BLUA static const char *const MAPTHINGFLAG_LIST[4] = { "EXTRA", // Extra flag for objects. "OBJECTFLIP", // Reverse gravity flag for objects. "OBJECTSPECIAL", // Special flag used with certain objects. "AMBUSH" // Deaf monsters/do not react to sound. }; -#endif static const char *const PLAYERFLAG_LIST[] = { @@ -8953,7 +8941,6 @@ static const char *const GAMETYPERULE_LIST[] = { NULL }; -#ifdef HAVE_BLUA // Linedef flags static const char *const ML_LIST[16] = { "IMPASSIBLE", @@ -8973,7 +8960,6 @@ static const char *const ML_LIST[16] = { "BOUNCY", "TFERLINE" }; -#endif // This DOES differ from r_draw's Color_Names, unfortunately. // Also includes Super colors @@ -9272,11 +9258,7 @@ static const char *const MENUTYPES_LIST[] = { struct { const char *n; // has to be able to hold both fixed_t and angle_t, so drastic measure!! -#ifdef HAVE_BLUA lua_Integer v; -#else - INT64 v; -#endif } const INT_CONST[] = { // If a mod removes some variables here, // please leave the names in-tact and just set @@ -9532,7 +9514,6 @@ struct { {"ME_ULTIMATE",ME_ULTIMATE}, {"ME_PERFECT",ME_PERFECT}, -#ifdef HAVE_BLUA // p_local.h constants {"FLOATSPEED",FLOATSPEED}, {"MAXSTEPMOVE",MAXSTEPMOVE}, @@ -9865,7 +9846,6 @@ struct { {"TC_RAINBOW",TC_RAINBOW}, {"TC_BLINK",TC_BLINK}, {"TC_DASHMODE",TC_DASHMODE}, -#endif {NULL,0} }; @@ -10022,8 +10002,7 @@ static menutype_t get_menutype(const char *word) return MN_NONE; } -#ifndef HAVE_BLUA -static INT16 get_gametype(const char *word) +/*static INT16 get_gametype(const char *word) { // Returns the value of GT_ enumerations INT16 i; if (*word >= '0' && *word <= '9') @@ -10049,7 +10028,7 @@ static powertype_t get_power(const char *word) return i; deh_warning("Couldn't find power named 'pw_%s'",word); return pw_invulnerability; -} +}*/ /// \todo Make ANY of this completely over-the-top math craziness obey the order of operations. static fixed_t op_mul(fixed_t a, fixed_t b) { return a*b; } @@ -10077,7 +10056,7 @@ struct { }; // Returns the full word, cut at the first symbol or whitespace -static char *read_word(const char *line) +/*static char *read_word(const char *line) { // Part 1: You got the start of the word, now find the end. const char *p; @@ -10307,16 +10286,14 @@ static fixed_t find_const(const char **rword) const_warning("constant",word); free(word); return 0; -} -#endif +}*/ // Loops through every constant and operation in word and performs its calculations, returning the final value. fixed_t get_number(const char *word) { -#ifdef HAVE_BLUA return LUA_EvalMath(word); -#else - // DESPERATELY NEEDED: Order of operations support! :x + + /*// DESPERATELY NEEDED: Order of operations support! :x fixed_t i = find_const(&word); INT32 o; while(*word) { @@ -10326,8 +10303,7 @@ fixed_t get_number(const char *word) else break; } - return i; -#endif + return i;*/ } void DEH_Check(void) @@ -10352,7 +10328,6 @@ void DEH_Check(void) #endif } -#ifdef HAVE_BLUA #include "lua_script.h" #include "lua_libs.h" @@ -10978,5 +10953,3 @@ void LUA_SetActionByName(void *state, const char *actiontocompare) } } } - -#endif // HAVE_BLUA diff --git a/src/dehacked.h b/src/dehacked.h index 80c31f3de..54225f36e 100644 --- a/src/dehacked.h +++ b/src/dehacked.h @@ -34,11 +34,9 @@ void DEH_Check(void); fixed_t get_number(const char *word); -#ifdef HAVE_BLUA boolean LUA_SetLuaAction(void *state, const char *actiontocompare); const char *LUA_GetActionName(void *action); void LUA_SetActionByName(void *state, const char *actiontocompare); -#endif extern boolean deh_loaded; diff --git a/src/doomstat.h b/src/doomstat.h index b7388fd96..893514b32 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -493,7 +493,6 @@ extern UINT16 emeralds; #define EMERALD7 64 #define ALL7EMERALDS(v) ((v & (EMERALD1|EMERALD2|EMERALD3|EMERALD4|EMERALD5|EMERALD6|EMERALD7)) == (EMERALD1|EMERALD2|EMERALD3|EMERALD4|EMERALD5|EMERALD6|EMERALD7)) -// yes, even in non HAVE_BLUA #define NUM_LUABANKS 16 // please only make this number go up between versions, never down. you'll break saves otherwise. also, must fit in UINT8 extern INT32 luabanks[NUM_LUABANKS]; diff --git a/src/f_finale.c b/src/f_finale.c index c98d49842..95535a7ea 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -39,9 +39,7 @@ #include "fastcmp.h" #include "console.h" -#ifdef HAVE_BLUA #include "lua_hud.h" -#endif // Stage of animation: // 0 = text, 1 = art screen @@ -2762,11 +2760,7 @@ void F_TitleScreenDrawer(void) // rei|miru: use title pics? hidepics = curhidepics; if (hidepics) -#ifdef HAVE_BLUA goto luahook; -#else - return; -#endif switch(curttmode) { @@ -3488,10 +3482,8 @@ void F_TitleScreenDrawer(void) break; } -#ifdef HAVE_BLUA luahook: LUAh_TitleHUD(); -#endif } // separate animation timer for backgrounds, since we also count diff --git a/src/f_wipe.c b/src/f_wipe.c index 0fd6c1431..08d7ed991 100644 --- a/src/f_wipe.c +++ b/src/f_wipe.c @@ -33,9 +33,7 @@ #include "doomstat.h" -#ifdef HAVE_BLUA #include "lua_hud.h" // level title -#endif #ifdef HWRENDER #include "hardware/hw_main.h" diff --git a/src/filesrch.h b/src/filesrch.h index 4186271b0..dfea8979e 100644 --- a/src/filesrch.h +++ b/src/filesrch.h @@ -60,7 +60,7 @@ typedef enum #endif EXT_PK3, EXT_SOC, - EXT_LUA, // allowed even if not HAVE_BLUA so that we can yell on load attempt + EXT_LUA, NUM_EXT, NUM_EXT_TABLE = NUM_EXT-EXT_START, EXT_LOADED = 0x80 diff --git a/src/g_game.c b/src/g_game.c index 030892223..bf73f6ce2 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -47,9 +47,7 @@ #include "m_cond.h" // condition sets #include "md5.h" // demo checksums -#ifdef HAVE_BLUA #include "lua_hud.h" -#endif gameaction_t gameaction; gamestate_t gamestate = GS_NULL; @@ -177,7 +175,7 @@ static boolean retryingmodeattack = false; UINT8 stagefailed; // Used for GEMS BONUS? Also to see if you beat the stage. UINT16 emeralds; -INT32 luabanks[NUM_LUABANKS]; // yes, even in non HAVE_BLUA +INT32 luabanks[NUM_LUABANKS]; UINT32 token; // Number of tokens collected in a level UINT32 tokenlist; // List of tokens collected boolean gottoken; // Did you get a token? Used for end of act @@ -1714,11 +1712,9 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) if (ssplayer == 1 && (cmd->forwardmove || cmd->sidemove || cmd->buttons) && displayplayer != consoleplayer) { -#ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. LUAh_ViewpointSwitch(player, &players[consoleplayer], true); -#endif displayplayer = consoleplayer; } } @@ -2048,9 +2044,7 @@ boolean G_Responder(event_t *ev) && (ev->data1 == KEY_F12 || ev->data1 == gamecontrol[gc_viewpoint][0] || ev->data1 == gamecontrol[gc_viewpoint][1])) { // ViewpointSwitch Lua hook. -#ifdef HAVE_BLUA UINT8 canSwitchView = 0; -#endif if (splitscreen || !netgame) displayplayer = consoleplayer; @@ -2066,14 +2060,12 @@ boolean G_Responder(event_t *ev) if (!playeringame[displayplayer]) continue; -#ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. canSwitchView = LUAh_ViewpointSwitch(&players[consoleplayer], &players[displayplayer], false); if (canSwitchView == 1) // Set viewpoint to this player break; else if (canSwitchView == 2) // Skip this player continue; -#endif if (players[displayplayer].spectator) continue; @@ -2673,9 +2665,7 @@ void G_SpawnPlayer(INT32 playernum) P_SpawnPlayer(playernum); G_MovePlayerToSpawnOrStarpost(playernum); -#ifdef HAVE_BLUA LUAh_PlayerSpawn(&players[playernum]); // Lua hook for player spawning :) -#endif } void G_MovePlayerToSpawnOrStarpost(INT32 playernum) @@ -3029,9 +3019,7 @@ void G_DoReborn(INT32 playernum) } else { -#ifdef HAVE_BLUA LUAh_MapChange(gamemap); -#endif titlecardforreload = true; G_DoLoadLevel(true); titlecardforreload = false; @@ -6803,9 +6791,7 @@ void G_DoPlayDemo(char *defdemoname) // Set skin SetPlayerSkin(0, skin); -#ifdef HAVE_BLUA LUAh_MapChange(gamemap); -#endif displayplayer = consoleplayer = 0; memset(playeringame,0,sizeof(playeringame)); playeringame[0] = true; diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 98f3ca5a9..6aa5a4510 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -47,10 +47,8 @@ #include "hardware/hw_main.h" #endif -#ifdef HAVE_BLUA #include "lua_hud.h" #include "lua_hook.h" -#endif // coords are scaled #define HU_INPUTX 0 @@ -688,10 +686,8 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum) // run the lua hook even if we were supposed to eat the msg, netgame consistency goes first. -#ifdef HAVE_BLUA if (LUAh_PlayerMsg(playernum, target, flags, msg)) return; -#endif if (spam_eatmsg) return; // don't proceed if we were supposed to eat the message. @@ -2177,18 +2173,14 @@ void HU_Drawer(void) { if (netgame || multiplayer) { -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_rankings)) -#endif - HU_DrawRankings(); + HU_DrawRankings(); if (gametype == GT_COOP) HU_DrawNetplayCoopOverlay(); } else HU_DrawCoopOverlay(); -#ifdef HAVE_BLUA LUAh_ScoresHUD(); -#endif } if (gamestate != GS_LEVEL) @@ -3171,29 +3163,20 @@ static void HU_DrawRankings(void) static void HU_DrawCoopOverlay(void) { - if (token -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_tokens) -#endif - ) + if (token && LUA_HudEnabled(hud_tokens)) { V_DrawString(168, 176, 0, va("- %d", token)); V_DrawSmallScaledPatch(148, 172, 0, tokenicon); } -#ifdef HAVE_BLUA - if (LUA_HudEnabled(hud_tabemblems)) -#endif - if (!modifiedgame || savemoddata) + if (LUA_HudEnabled(hud_tabemblems) && (!modifiedgame || savemoddata)) { V_DrawString(160, 144, 0, va("- %d/%d", M_CountEmblems(), numemblems+numextraemblems)); V_DrawScaledPatch(128, 144 - SHORT(emblemicon->height)/4, 0, emblemicon); } -#ifdef HAVE_BLUA if (!LUA_HudEnabled(hud_coopemeralds)) return; -#endif if (emeralds & EMERALD1) V_DrawScaledPatch((BASEVIDWIDTH/2)-8 , (BASEVIDHEIGHT/3)-32, 0, emeraldpics[0][0]); @@ -3215,20 +3198,14 @@ static void HU_DrawNetplayCoopOverlay(void) { int i; - if (token -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_tokens) -#endif - ) + if (token && LUA_HudEnabled(hud_tokens)) { V_DrawString(168, 10, 0, va("- %d", token)); V_DrawSmallScaledPatch(148, 6, 0, tokenicon); } -#ifdef HAVE_BLUA if (!LUA_HudEnabled(hud_coopemeralds)) return; -#endif for (i = 0; i < 7; ++i) { diff --git a/src/lua_baselib.c b/src/lua_baselib.c index 26887da25..4f924aa18 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -11,7 +11,6 @@ /// \brief basic functions for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "p_local.h" #include "p_setup.h" // So we can have P_SetupLevelSky @@ -3312,5 +3311,3 @@ int LUA_BaseLib(lua_State *L) luaL_register(L, NULL, lib); return 0; } - -#endif diff --git a/src/lua_blockmaplib.c b/src/lua_blockmaplib.c index 78a9e75a1..bc8d20e8e 100644 --- a/src/lua_blockmaplib.c +++ b/src/lua_blockmaplib.c @@ -11,7 +11,6 @@ /// \brief blockmap library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "p_local.h" #include "r_main.h" // validcount #include "lua_script.h" @@ -264,5 +263,3 @@ int LUA_BlockmapLib(lua_State *L) lua_register(L, "searchBlockmap", lib_searchBlockmap); return 0; } - -#endif diff --git a/src/lua_consolelib.c b/src/lua_consolelib.c index 923722eb8..a9fbad65f 100644 --- a/src/lua_consolelib.c +++ b/src/lua_consolelib.c @@ -11,7 +11,6 @@ /// \brief console modifying/etc library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "p_local.h" #include "g_game.h" @@ -551,5 +550,3 @@ int LUA_ConsoleLib(lua_State *L) luaL_register(L, NULL, lib); return 0; } - -#endif diff --git a/src/lua_hook.h b/src/lua_hook.h index dde8d4c41..244b1bbb8 100644 --- a/src/lua_hook.h +++ b/src/lua_hook.h @@ -10,8 +10,6 @@ /// \file lua_hook.h /// \brief hooks for Lua scripting -#ifdef HAVE_BLUA - #include "r_defs.h" #include "d_player.h" @@ -112,5 +110,3 @@ boolean LUAh_SeenPlayer(player_t *player, player_t *seenfriend); // Hook for MT_ #endif #define LUAh_PlayerThink(player) LUAh_PlayerHook(player, hook_PlayerThink) // Hook for P_PlayerThink boolean LUAh_ShouldJingleContinue(player_t *player, const char *musname); // Hook for whether a jingle of the given music should continue playing - -#endif diff --git a/src/lua_hooklib.c b/src/lua_hooklib.c index 20a7738e7..522be8c32 100644 --- a/src/lua_hooklib.c +++ b/src/lua_hooklib.c @@ -11,7 +11,6 @@ /// \brief hooks for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "doomstat.h" #include "p_mobj.h" #include "g_game.h" @@ -1705,5 +1704,3 @@ boolean LUAh_ShouldJingleContinue(player_t *player, const char *musname) return keepplaying; } - -#endif diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c index 7d5f9325e..818e760c9 100644 --- a/src/lua_hudlib.c +++ b/src/lua_hudlib.c @@ -11,7 +11,6 @@ /// \brief custom HUD rendering library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "r_defs.h" #include "r_local.h" @@ -1466,5 +1465,3 @@ void LUAh_IntermissionHUD(void) lua_pop(gL, -1); hud_running = false; } - -#endif diff --git a/src/lua_infolib.c b/src/lua_infolib.c index 6760b4203..25870d0b1 100644 --- a/src/lua_infolib.c +++ b/src/lua_infolib.c @@ -11,7 +11,6 @@ /// \brief infotable editing library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "info.h" #include "dehacked.h" @@ -1651,5 +1650,3 @@ int LUA_InfoLib(lua_State *L) return 0; } - -#endif diff --git a/src/lua_libs.h b/src/lua_libs.h index f217d4b2a..bf1e28b5d 100644 --- a/src/lua_libs.h +++ b/src/lua_libs.h @@ -10,8 +10,6 @@ /// \file lua_libs.h /// \brief libraries for Lua scripting -#ifdef HAVE_BLUA - extern lua_State *gL; #define LREG_VALID "VALID_USERDATA" @@ -88,5 +86,3 @@ int LUA_ThinkerLib(lua_State *L); int LUA_MapLib(lua_State *L); int LUA_BlockmapLib(lua_State *L); int LUA_HudLib(lua_State *L); - -#endif diff --git a/src/lua_maplib.c b/src/lua_maplib.c index 0344fd5bb..32150a4bc 100644 --- a/src/lua_maplib.c +++ b/src/lua_maplib.c @@ -11,7 +11,6 @@ /// \brief game map library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "r_state.h" #include "p_local.h" #include "p_setup.h" @@ -2337,5 +2336,3 @@ int LUA_MapLib(lua_State *L) lua_setglobal(L, "mapheaderinfo"); return 0; } - -#endif diff --git a/src/lua_mathlib.c b/src/lua_mathlib.c index d2a959dde..215903278 100644 --- a/src/lua_mathlib.c +++ b/src/lua_mathlib.c @@ -11,7 +11,6 @@ /// \brief basic math library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA //#include "fastcmp.h" #include "tables.h" #include "p_local.h" @@ -217,5 +216,3 @@ int LUA_MathLib(lua_State *L) luaL_register(L, NULL, lib); return 0; } - -#endif diff --git a/src/lua_mobjlib.c b/src/lua_mobjlib.c index 9e46344cf..4b580a2fe 100644 --- a/src/lua_mobjlib.c +++ b/src/lua_mobjlib.c @@ -11,7 +11,6 @@ /// \brief mobj/thing library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "r_skins.h" #include "p_local.h" @@ -915,5 +914,3 @@ int LUA_MobjLib(lua_State *L) lua_setglobal(L, "mapthings"); return 0; } - -#endif diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index a33ecb7e0..cdece1fb7 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -11,7 +11,6 @@ /// \brief player object library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "p_mobj.h" #include "d_player.h" @@ -878,5 +877,3 @@ int LUA_PlayerLib(lua_State *L) lua_setglobal(L, "players"); return 0; } - -#endif diff --git a/src/lua_script.c b/src/lua_script.c index e7ce35ff1..6fa6cf57d 100644 --- a/src/lua_script.c +++ b/src/lua_script.c @@ -11,7 +11,6 @@ /// \brief Lua scripting basics #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "dehacked.h" #include "z_zone.h" @@ -1423,5 +1422,3 @@ int Lua_optoption(lua_State *L, int narg, return i; return -1; } - -#endif // HAVE_BLUA diff --git a/src/lua_script.h b/src/lua_script.h index 6caccd69b..7bdf7685b 100644 --- a/src/lua_script.h +++ b/src/lua_script.h @@ -10,8 +10,6 @@ /// \file lua_script.h /// \brief Lua scripting basics -#ifdef HAVE_BLUA - #include "m_fixed.h" #include "doomtype.h" #include "d_player.h" @@ -102,5 +100,3 @@ void COM_Lua_f(void); #define INLEVEL if (gamestate != GS_LEVEL && !titlemapinaction)\ return luaL_error(L, "This can only be used in a level!"); - -#endif diff --git a/src/lua_skinlib.c b/src/lua_skinlib.c index f26aed2f0..3e4ddb9f0 100644 --- a/src/lua_skinlib.c +++ b/src/lua_skinlib.c @@ -11,7 +11,6 @@ /// \brief player skin structure library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "fastcmp.h" #include "r_skins.h" #include "sounds.h" @@ -358,5 +357,3 @@ int LUA_SkinLib(lua_State *L) return 0; } - -#endif diff --git a/src/lua_thinkerlib.c b/src/lua_thinkerlib.c index ddb5abf72..82baa6469 100644 --- a/src/lua_thinkerlib.c +++ b/src/lua_thinkerlib.c @@ -11,7 +11,6 @@ /// \brief thinker library for Lua scripting #include "doomdef.h" -#ifdef HAVE_BLUA #include "p_local.h" #include "lua_script.h" #include "lua_libs.h" @@ -139,5 +138,3 @@ int LUA_ThinkerLib(lua_State *L) lua_setglobal(L, "mobjs"); return 0; } - -#endif diff --git a/src/m_cheat.c b/src/m_cheat.c index 1431e8873..93e8f2911 100644 --- a/src/m_cheat.c +++ b/src/m_cheat.c @@ -788,7 +788,7 @@ void Command_CauseCfail_f(void) } #endif -#if defined(HAVE_BLUA) && defined(LUA_ALLOW_BYTECODE) +#ifdef LUA_ALLOW_BYTECODE void Command_Dumplua_f(void) { if (modifiedgame) @@ -1062,9 +1062,7 @@ static mapthing_t *OP_CreateNewMapThing(player_t *player, UINT16 type, boolean c mapthing_t *mt = mapthings; sector_t *sec = player->mo->subsector->sector; -#ifdef HAVE_BLUA LUA_InvalidateMapthings(); -#endif mapthings = Z_Realloc(mapthings, ++nummapthings * sizeof (*mapthings), PU_LEVEL, NULL); diff --git a/src/m_cheat.h b/src/m_cheat.h index 092e51756..ac2540408 100644 --- a/src/m_cheat.h +++ b/src/m_cheat.h @@ -68,7 +68,7 @@ void Command_Toggletwod_f(void); #ifdef _DEBUG void Command_CauseCfail_f(void); #endif -#if defined(HAVE_BLUA) && defined(LUA_ALLOW_BYTECODE) +#ifdef LUA_ALLOW_BYTECODE void Command_Dumplua_f(void); #endif diff --git a/src/m_menu.c b/src/m_menu.c index e8915f91f..84ee898d6 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -6657,12 +6657,6 @@ static void M_HandleAddons(INT32 choice) M_AddonExec(KEY_ENTER); break; case EXT_LUA: -#ifndef HAVE_BLUA - S_StartSound(NULL, sfx_lose); - M_StartMessage(va("%c%s\x80\nThis copy of SRB2 was compiled\nwithout support for .lua files.\n\n(Press a key)\n", ('\x80' + (highlightflags>>V_CHARCOLORSHIFT)), dirmenu[dir_on[menudepthleft]]+DIR_STRING),NULL,MM_NOTHING); - break; -#endif - /* FALLTHRU */ case EXT_SOC: case EXT_WAD: #ifdef USE_KART diff --git a/src/p_enemy.c b/src/p_enemy.c index 14e5c4d3e..9dea0ecc5 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -30,9 +30,7 @@ #include "hardware/hw3sound.h" #endif -#ifdef HAVE_BLUA boolean LUA_CallAction(const char *action, mobj_t *actor); -#endif player_t *stplyr; INT32 var1; @@ -981,10 +979,8 @@ void A_Look(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Look", actor)) return; -#endif if (!P_LookForPlayers(actor, locvar1 & 65535, false , FixedMul((locvar1 >> 16)*FRACUNIT, actor->scale))) return; @@ -1016,10 +1012,8 @@ void A_Chase(mobj_t *actor) INT32 delta; INT32 locvar1 = var1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Chase", actor)) return; -#endif I_Assert(actor != NULL); I_Assert(!P_MobjWasRemoved(actor)); @@ -1109,10 +1103,8 @@ void A_FaceStabChase(mobj_t *actor) { INT32 delta; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FaceStabChase", actor)) return; -#endif if (actor->reactiontime) actor->reactiontime--; @@ -1233,10 +1225,8 @@ void A_FaceStabRev(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FaceStabRev", actor)) return; -#endif if (!actor->target) { @@ -1278,10 +1268,8 @@ void A_FaceStabHurl(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FaceStabHurl", actor)) return; -#endif if (actor->target) { @@ -1368,13 +1356,10 @@ void A_FaceStabHurl(mobj_t *actor) // void A_FaceStabMiss(mobj_t *actor) { - //INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FaceStabMiss", actor)) return; -#endif if (++actor->extravalue1 >= 3) { @@ -1408,10 +1393,8 @@ void A_StatueBurst(mobj_t *actor) mobjtype_t chunktype = (mobjtype_t)actor->info->raisestate; mobj_t *new; -#ifdef HAVE_BLUA if (LUA_CallAction("A_StatueBurst", actor)) return; -#endif if (!locvar1 || !(new = P_SpawnMobjFromMobj(actor, 0, 0, 0, locvar1))) return; @@ -1460,10 +1443,9 @@ void A_StatueBurst(mobj_t *actor) // void A_JetJawRoam(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_JetJawRoam", actor)) return; -#endif + if (actor->reactiontime) { actor->reactiontime--; @@ -1489,10 +1471,9 @@ void A_JetJawRoam(mobj_t *actor) void A_JetJawChomp(mobj_t *actor) { INT32 delta; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_JetJawChomp", actor)) return; -#endif // turn towards movement direction if not there yet if (actor->movedir < NUMDIRS) @@ -1538,10 +1519,9 @@ void A_PointyThink(mobj_t *actor) boolean firsttime = true; INT32 sign; -#ifdef HAVE_BLUA if (LUA_CallAction("A_PointyThink", actor)) return; -#endif + actor->momx = actor->momy = actor->momz = 0; // Find nearest player @@ -1637,10 +1617,9 @@ void A_CheckBuddy(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_CheckBuddy", actor)) return; -#endif + if (locvar1 && (!actor->tracer || actor->tracer->health <= 0)) P_RemoveMobj(actor); else if (!locvar1 && (!actor->target || actor->target->health <= 0)) @@ -1680,11 +1659,9 @@ void A_HoodFire(mobj_t *actor) { mobj_t *arrow; INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_HoodFire", actor)) return; -#endif // Check target first. if (!actor->target) @@ -1714,10 +1691,9 @@ void A_HoodThink(mobj_t *actor) { fixed_t dx, dy, dz, dm; boolean checksight; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_HoodThink", actor)) return; -#endif // Check target first. if (!actor->target) @@ -1783,10 +1759,8 @@ void A_HoodThink(mobj_t *actor) // void A_HoodFall(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_HoodFall", actor)) return; -#endif if (!P_IsObjectOnGround(actor)) return; @@ -1805,10 +1779,8 @@ void A_HoodFall(mobj_t *actor) // void A_ArrowBonks(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_ArrowBonks", actor)) return; -#endif if (((actor->eflags & MFE_VERTICALFLIP) && actor->z + actor->height >= actor->ceilingz) || (!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz)) @@ -1830,10 +1802,8 @@ void A_ArrowBonks(mobj_t *actor) // void A_SnailerThink(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_SnailerThink", actor)) return; -#endif if (!actor->target || !(actor->target->flags & MF_SHOOTABLE)) { @@ -1905,10 +1875,8 @@ void A_SnailerThink(mobj_t *actor) // void A_SharpChase(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_SharpChase", actor)) return; -#endif if (actor->reactiontime) { @@ -1963,10 +1931,8 @@ void A_SharpSpin(mobj_t *actor) INT32 locvar2 = var2; angle_t oldang = actor->angle; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SharpSpin", actor)) return; -#endif if (actor->threshold && actor->target) { @@ -1998,10 +1964,8 @@ void A_SharpSpin(mobj_t *actor) // void A_SharpDecel(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_SharpDecel", actor)) return; -#endif if (actor->momx > 2 || actor->momy > 2) { @@ -2024,10 +1988,9 @@ void A_CrushstaceanWalk(mobj_t *actor) INT32 locvar1 = (var1 ? var1 : (INT32)actor->info->speed); INT32 locvar2 = (var2 ? var2 : (INT32)actor->info->spawnstate); angle_t ang = actor->angle + ((actor->flags2 & MF2_AMBUSH) ? ANGLE_90 : ANGLE_270); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CrushstaceanWalk", actor)) return; -#endif actor->reactiontime--; @@ -2053,12 +2016,10 @@ void A_CrushstaceanWalk(mobj_t *actor) // void A_CrushstaceanPunch(mobj_t *actor) { - //INT32 locvar1 = var1; INT32 locvar2 = (var2 ? var2 : (INT32)actor->info->spawnstate); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CrushstaceanPunch", actor)) return; -#endif if (!actor->tracer) return; @@ -2088,10 +2049,9 @@ void A_CrushclawAim(mobj_t *actor) INT32 locvar2 = var2; mobj_t *crab = actor->tracer; angle_t ang; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CrushclawAim", actor)) return; -#endif if (!crab) { @@ -2150,10 +2110,9 @@ void A_CrushclawLaunch(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; mobj_t *crab = actor->tracer; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CrushclawLaunch", actor)) return; -#endif if (!crab) { @@ -2283,10 +2242,8 @@ void A_CrushclawLaunch(mobj_t *actor) // void A_VultureVtol(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_VultureVtol", actor)) return; -#endif if (!actor->target) return; @@ -2320,10 +2277,8 @@ void A_VultureVtol(mobj_t *actor) // void A_VultureCheck(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_VultureCheck", actor)) return; -#endif if (actor->momx || actor->momy) return; @@ -2378,10 +2333,8 @@ void A_VultureHover(mobj_t *actor) fixed_t memz = actor->z; SINT8 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_VultureHover", actor)) return; -#endif if (!actor->target || P_MobjWasRemoved(actor->target)) { @@ -2442,10 +2395,8 @@ void A_VultureBlast(mobj_t *actor) angle_t faa; fixed_t faacos, faasin; -#ifdef HAVE_BLUA if (LUA_CallAction("A_VultureBlast", actor)) return; -#endif S_StartSound(actor, actor->info->attacksound); @@ -2483,10 +2434,8 @@ void A_VultureFly(mobj_t *actor) mobj_t *dust; fixed_t momm; -#ifdef HAVE_BLUA if (LUA_CallAction("A_VultureFly", actor)) return; -#endif if (!actor->target || P_MobjWasRemoved(actor->target)) { @@ -2577,10 +2526,9 @@ void A_SkimChase(mobj_t *actor) { INT32 delta; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SkimChase", actor)) return; -#endif + if (actor->reactiontime) actor->reactiontime--; @@ -2664,10 +2612,9 @@ nomissile: // void A_FaceTarget(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_FaceTarget", actor)) return; -#endif + if (!actor->target) return; @@ -2683,10 +2630,9 @@ void A_FaceTarget(mobj_t *actor) // void A_FaceTracer(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_FaceTracer", actor)) return; -#endif + if (!actor->tracer) return; @@ -2713,10 +2659,9 @@ void A_LobShot(mobj_t *actor) fixed_t vertical, horizontal; fixed_t airtime = var2 & 65535; -#ifdef HAVE_BLUA if (LUA_CallAction("A_LobShot", actor)) return; -#endif + if (!actor->target) return; @@ -2814,10 +2759,9 @@ void A_FireShot(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FireShot", actor)) return; -#endif + if (!actor->target) return; @@ -2853,10 +2797,9 @@ void A_SuperFireShot(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SuperFireShot", actor)) return; -#endif + if (!actor->target) return; @@ -2901,10 +2844,9 @@ void A_BossFireShot(mobj_t *actor) INT32 locvar2 = var2; mobj_t *missile; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BossFireShot", actor)) return; -#endif + if (!actor->target) return; @@ -2986,10 +2928,8 @@ void A_Boss7FireMissiles(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss7FireMissiles", actor)) return; -#endif if (!actor->target) { @@ -3050,10 +2990,9 @@ void A_Boss1Laser(mobj_t *actor) mobj_t *point; tic_t dur; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss1Laser", actor)) return; -#endif + if (!actor->target) return; @@ -3175,10 +3114,9 @@ void A_FocusTarget(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FocusTarget", actor)) return; -#endif if (actor->target) { @@ -3227,10 +3165,10 @@ void A_Boss4Reverse(mobj_t *actor) { sfxenum_t locvar1 = (sfxenum_t)var1; sfxenum_t locvar2 = (sfxenum_t)var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss4Reverse", actor)) return; -#endif + actor->reactiontime = 0; if (actor->movedir < 3) { @@ -3262,10 +3200,10 @@ void A_Boss4Reverse(mobj_t *actor) void A_Boss4SpeedUp(mobj_t *actor) { sfxenum_t locvar1 = (sfxenum_t)var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss4SpeedUp", actor)) return; -#endif + S_StartSound(NULL, locvar1); actor->reactiontime = 2; } @@ -3280,10 +3218,10 @@ void A_Boss4SpeedUp(mobj_t *actor) void A_Boss4Raise(mobj_t *actor) { sfxenum_t locvar1 = (sfxenum_t)var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss4Raise", actor)) return; -#endif + S_StartSound(NULL, locvar1); actor->reactiontime = 1; } @@ -3312,10 +3250,9 @@ void A_SkullAttack(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SkullAttack", actor)) return; -#endif + if (!actor->target) return; @@ -3431,10 +3368,9 @@ void A_BossZoom(mobj_t *actor) angle_t an; INT32 dist; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BossZoom", actor)) return; -#endif + if (!actor->target) return; @@ -3472,10 +3408,9 @@ void A_BossScream(mobj_t *actor) INT32 locvar2 = var2; mobjtype_t explodetype; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BossScream", actor)) return; -#endif + if (locvar1 & 1) fa = (FixedAngle(P_RandomKey(360)*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK; else @@ -3518,10 +3453,9 @@ void A_BossScream(mobj_t *actor) // void A_Scream(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_Scream", actor)) return; -#endif + if (actor->tracer && (actor->tracer->type == MT_SHELL || actor->tracer->type == MT_FIREBALL)) S_StartScreamSound(actor, sfx_mario2); else if (actor->info->deathsound) @@ -3537,10 +3471,9 @@ void A_Scream(mobj_t *actor) // void A_Pain(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_Pain", actor)) return; -#endif + if (actor->info->painsound) S_StartSound(actor, actor->info->painsound); @@ -3559,10 +3492,9 @@ void A_Fall(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Fall", actor)) return; -#endif + // actor is on ground, it can be walked over actor->flags &= ~MF_SOLID; @@ -3592,10 +3524,9 @@ void A_1upThinker(mobj_t *actor) fixed_t temp; INT32 closestplayer = -1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_1upThinker", actor)) return; -#endif + for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i] || players[i].bot || players[i].spectator) @@ -3659,10 +3590,8 @@ void A_MonitorPop(mobj_t *actor) mobjtype_t item = 0; mobj_t *newmobj; -#ifdef HAVE_BLUA if (LUA_CallAction("A_MonitorPop", actor)) return; -#endif // Spawn the "pop" explosion. if (actor->info->deathsound) @@ -3742,10 +3671,8 @@ void A_GoldMonitorPop(mobj_t *actor) mobjtype_t item = 0; mobj_t *newmobj; -#ifdef HAVE_BLUA if (LUA_CallAction("A_GoldMonitorPop", actor)) return; -#endif // Don't spawn the "pop" explosion, because the monitor isn't broken. if (actor->info->deathsound) @@ -3827,10 +3754,8 @@ void A_GoldMonitorPop(mobj_t *actor) // void A_GoldMonitorRestore(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_GoldMonitorRestore", actor)) return; -#endif actor->flags |= MF_MONITOR|MF_SHOOTABLE; actor->health = 1; // Just in case. @@ -3847,10 +3772,8 @@ void A_GoldMonitorSparkle(mobj_t *actor) { fixed_t i, ngangle, xofs, yofs; -#ifdef HAVE_BLUA if (LUA_CallAction("A_GoldMonitorSparkle", actor)) return; -#endif ngangle = FixedAngle(((leveltime * 21) % 360) << FRACBITS); xofs = FINESINE((ngangle>>ANGLETOFINESHIFT) & FINEMASK) * (actor->radius>>FRACBITS); @@ -3870,10 +3793,10 @@ void A_GoldMonitorSparkle(mobj_t *actor) void A_Explode(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Explode", actor)) return; -#endif + P_RadiusAttack(actor, actor->target, actor->info->damage, locvar1); } @@ -3890,10 +3813,9 @@ void A_BossDeath(mobj_t *mo) mobj_t *mo2; line_t junk; INT32 i; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_BossDeath", mo)) return; -#endif if (mo->spawnpoint && mo->spawnpoint->extrainfo) P_LinedefExecute(LE_BOSSDEAD+(mo->spawnpoint->extrainfo*LE_PARAMWIDTH), mo, NULL); @@ -3973,12 +3895,10 @@ void A_BossDeath(mobj_t *mo) } bossjustdie: -#ifdef HAVE_BLUA if (LUAh_BossDeath(mo)) return; else if (P_MobjWasRemoved(mo)) return; -#endif // Spawn your junk switch (mo->type) @@ -4202,10 +4122,9 @@ void A_CustomPower(mobj_t *actor) INT32 locvar2 = var2; boolean spawnshield = false; -#ifdef HAVE_BLUA if (LUA_CallAction("A_CustomPower", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4243,10 +4162,9 @@ void A_GiveWeapon(mobj_t *actor) player_t *player; INT32 locvar1 = var1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_GiveWeapon", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4277,10 +4195,9 @@ void A_RingBox(mobj_t *actor) { player_t *player; -#ifdef HAVE_BLUA if (LUA_CallAction("A_RingBox", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4305,10 +4222,9 @@ void A_Invincibility(mobj_t *actor) { player_t *player; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Invincibility", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4339,10 +4255,9 @@ void A_SuperSneakers(mobj_t *actor) { player_t *player; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SuperSneakers", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4375,10 +4290,9 @@ void A_AwardScore(mobj_t *actor) { player_t *player; -#ifdef HAVE_BLUA if (LUA_CallAction("A_AwardScore", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4403,10 +4317,9 @@ void A_ExtraLife(mobj_t *actor) { player_t *player; -#ifdef HAVE_BLUA if (LUA_CallAction("A_ExtraLife", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4442,10 +4355,9 @@ void A_GiveShield(mobj_t *actor) player_t *player; UINT16 locvar1 = var1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_GiveShield", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4469,10 +4381,9 @@ void A_GravityBox(mobj_t *actor) { player_t *player; -#ifdef HAVE_BLUA if (LUA_CallAction("A_GravityBox", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -4495,10 +4406,9 @@ void A_GravityBox(mobj_t *actor) // void A_ScoreRise(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_ScoreRise", actor)) return; -#endif + // make logo rise! P_SetObjectMomZ(actor, actor->info->speed, false); } @@ -4515,10 +4425,9 @@ void A_BunnyHop(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BunnyHop", actor)) return; -#endif + if (((actor->eflags & MFE_VERTICALFLIP) && actor->z + actor->height >= actor->ceilingz) || (!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz)) { @@ -4539,10 +4448,10 @@ void A_BubbleSpawn(mobj_t *actor) INT32 i, locvar1 = var1; UINT8 prandom; mobj_t *bubble = NULL; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_BubbleSpawn", actor)) return; -#endif + if (!(actor->eflags & MFE_UNDERWATER)) { // Don't draw or spawn bubbles above water @@ -4592,10 +4501,10 @@ void A_FanBubbleSpawn(mobj_t *actor) UINT8 prandom; mobj_t *bubble = NULL; fixed_t hz = actor->z + (4*actor->height)/5; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FanBubbleSpawn", actor)) return; -#endif + if (!(actor->eflags & MFE_UNDERWATER)) return; @@ -4639,10 +4548,9 @@ void A_BubbleRise(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BubbleRise", actor)) return; -#endif + if (actor->type == MT_EXTRALARGEBUBBLE) P_SetObjectMomZ(actor, FixedDiv(6*FRACUNIT,5*FRACUNIT), false); // make bubbles rise! else @@ -4676,10 +4584,9 @@ void A_BubbleRise(mobj_t *actor) // void A_BubbleCheck(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_BubbleCheck", actor)) return; -#endif + if (actor->eflags & MFE_UNDERWATER) actor->flags2 &= ~MF2_DONTDRAW; // underwater so draw else @@ -4695,10 +4602,9 @@ void A_BubbleCheck(mobj_t *actor) // void A_AttractChase(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_AttractChase", actor)) return; -#endif + if (actor->flags2 & MF2_NIGHTSPULL || !actor->health) return; @@ -4766,10 +4672,9 @@ void A_DropMine(mobj_t *actor) INT32 locvar2 = var2; fixed_t z; mobj_t *mine; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_DropMine", actor)) return; -#endif if (locvar2 & 65535) { @@ -4815,10 +4720,9 @@ void A_FishJump(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FishJump", actor)) return; -#endif if (locvar2) { @@ -4867,10 +4771,9 @@ void A_ThrownRing(mobj_t *actor) INT32 stop; player_t *player; fixed_t dist; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ThrownRing", actor)) return; -#endif if (leveltime % (TICRATE/7) == 0) { @@ -5025,10 +4928,9 @@ void A_ThrownRing(mobj_t *actor) // void A_SetSolidSteam(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_SetSolidSteam", actor)) return; -#endif + actor->flags &= ~MF_NOCLIP; actor->flags |= MF_SOLID; if (!(actor->flags2 & MF2_AMBUSH)) @@ -5057,10 +4959,9 @@ void A_SetSolidSteam(mobj_t *actor) // void A_UnsetSolidSteam(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_UnsetSolidSteam", actor)) return; -#endif + actor->flags &= ~MF_SOLID; actor->flags |= MF_NOCLIP; } @@ -5078,10 +4979,8 @@ void A_SignSpin(mobj_t *actor) INT16 i; angle_t rotateangle = FixedAngle(locvar1 << FRACBITS); -#ifdef HAVE_BLUA if (LUA_CallAction("A_SignSpin", actor)) return; -#endif if (P_IsObjectOnGround(actor) && P_MobjFlip(actor) * actor->momz <= 0) { @@ -5149,10 +5048,8 @@ void A_SignPlayer(mobj_t *actor) UINT8 facecolor, signcolor = (UINT8)locvar2; UINT32 signframe = states[actor->info->raisestate].frame; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SignPlayer", actor)) return; -#endif if (actor->tracer == NULL || locvar1 < -3 || locvar1 >= numskins || signcolor >= MAXTRANSLATIONS) return; @@ -5280,10 +5177,10 @@ void A_SignPlayer(mobj_t *actor) void A_OverlayThink(mobj_t *actor) { fixed_t destx, desty; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_OverlayThink", actor)) return; -#endif + if (!actor->target) return; @@ -5332,10 +5229,9 @@ void A_OverlayThink(mobj_t *actor) void A_JetChase(mobj_t *actor) { fixed_t thefloor; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_JetChase", actor)) return; -#endif if (actor->flags2 & MF2_AMBUSH) return; @@ -5429,10 +5325,9 @@ void A_JetbThink(mobj_t *actor) { sector_t *nextsector; fixed_t thefloor; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_JetbThink", actor)) return; -#endif if (actor->z >= actor->waterbottom && actor->watertop > actor->floorz && actor->z > actor->watertop - FixedMul(256*FRACUNIT, actor->scale)) @@ -5495,10 +5390,9 @@ void A_JetbThink(mobj_t *actor) void A_JetgShoot(mobj_t *actor) { fixed_t dist; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_JetgShoot", actor)) return; -#endif if (!actor->target) return; @@ -5536,10 +5430,9 @@ void A_JetgShoot(mobj_t *actor) void A_ShootBullet(mobj_t *actor) { fixed_t dist; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ShootBullet", actor)) return; -#endif if (!actor->target) return; @@ -5598,10 +5491,8 @@ void A_MinusDigging(mobj_t *actor) fixed_t mz = (actor->eflags & MFE_VERTICALFLIP) ? actor->ceilingz : actor->floorz; mobj_t *par; -#ifdef HAVE_BLUA if (LUA_CallAction("A_MinusDigging", actor)) return; -#endif if (!actor->target) { @@ -5681,10 +5572,8 @@ void A_MinusPopup(mobj_t *actor) angle_t ani = FixedAngle(FRACUNIT*360/num); INT32 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_MinusPopup", actor)) return; -#endif if (actor->eflags & MFE_VERTICALFLIP) actor->momz = -10*FRACUNIT; @@ -5718,10 +5607,8 @@ void A_MinusCheck(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_MinusCheck", actor)) return; -#endif if (((actor->eflags & MFE_VERTICALFLIP) && actor->z + actor->height >= actor->ceilingz) || (!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz)) { @@ -5751,10 +5638,9 @@ void A_MinusCheck(mobj_t *actor) // void A_ChickenCheck(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_ChickenCheck", actor)) return; -#endif + if ((!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz) || (actor->eflags & MFE_VERTICALFLIP && actor->z + actor->height >= actor->ceilingz)) { @@ -5782,10 +5668,9 @@ void A_JetgThink(mobj_t *actor) sector_t *nextsector; fixed_t thefloor; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_JetgThink", actor)) return; -#endif if (actor->z >= actor->waterbottom && actor->watertop > actor->floorz && actor->z > actor->watertop - FixedMul(256*FRACUNIT, actor->scale)) @@ -5834,10 +5719,8 @@ void A_JetgThink(mobj_t *actor) // void A_MouseThink(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_MouseThink", actor)) return; -#endif if (actor->reactiontime) actor->reactiontime--; @@ -5872,10 +5755,9 @@ void A_DetonChase(mobj_t *actor) { angle_t exact; fixed_t xydist, dist; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_DetonChase", actor)) return; -#endif // modify tracer threshold if (!actor->tracer || actor->tracer->health <= 0) @@ -6020,10 +5902,9 @@ void A_CapeChase(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; angle_t angle; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CapeChase", actor)) return; -#endif CONS_Debug(DBG_GAMELOGIC, "A_CapeChase called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); @@ -6081,10 +5962,9 @@ void A_RotateSpikeBall(mobj_t *actor) { INT32 locvar1 = var1; const fixed_t radius = FixedMul(12*actor->info->speed, actor->scale); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RotateSpikeBall", actor)) return; -#endif if (!((!locvar1 && (actor->target)) || (locvar1 && (actor->tracer))))// This should NEVER happen. { @@ -6134,10 +6014,8 @@ void A_UnidusBall(mobj_t *actor) INT32 locvar1 = var1; boolean canthrow = false; -#ifdef HAVE_BLUA if (LUA_CallAction("A_UnidusBall", actor)) return; -#endif actor->angle += ANGLE_11hh; @@ -6232,10 +6110,9 @@ void A_RockSpawn(mobj_t *actor) line_t *line; fixed_t dist; fixed_t randomoomph; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RockSpawn", actor)) return; -#endif if (i == -1) { @@ -6286,10 +6163,9 @@ void A_SlingAppear(mobj_t *actor) { UINT8 mlength = 4; mobj_t *spawnee, *hprev; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SlingAppear", actor)) return; -#endif P_UnsetThingPosition(actor); actor->flags &= ~(MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_NOCLIPHEIGHT); @@ -6337,10 +6213,9 @@ void A_SetFuse(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetFuse", actor)) return; -#endif if ((!actor->fuse || (locvar2 >> 16)) && (locvar2 >> 16) != 2) // set the actor's fuse value actor->fuse = locvar1; @@ -6367,10 +6242,9 @@ void A_CrawlaCommanderThink(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; boolean hovermode = (actor->health > 1 || actor->fuse); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CrawlaCommanderThink", actor)) return; -#endif if (actor->z >= actor->waterbottom && actor->watertop > actor->floorz && actor->z > actor->watertop - FixedMul(256*FRACUNIT, actor->scale)) @@ -6526,10 +6400,9 @@ void A_RingExplode(mobj_t *actor) mobj_t *mo2; thinker_t *th; angle_t d; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RingExplode", actor)) return; -#endif for (d = 0; d < 16; d++) P_SpawnParaloop(actor->x, actor->y, actor->z + actor->height, FixedMul(actor->info->painchance, actor->scale), 16, MT_NIGHTSPARKLE, S_NULL, d*(ANGLE_22h), true); @@ -6571,12 +6444,10 @@ void A_OldRingExplode(mobj_t *actor) { mobj_t *mo; const fixed_t ns = FixedMul(20 * FRACUNIT, actor->scale); INT32 locvar1 = var1; - //INT32 locvar2 = var2; boolean changecolor = (actor->target && actor->target->player); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_OldRingExplode", actor)) return; -#endif for (i = 0; i < 32; i++) { @@ -6650,12 +6521,9 @@ void A_MixUp(mobj_t *actor) { boolean teleported[MAXPLAYERS]; INT32 i, numplayers = 0, prandom = 0; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_MixUp", actor)) return; -#else - (void)actor; -#endif if (!multiplayer) return; @@ -6934,15 +6802,8 @@ void A_RecyclePowers(mobj_t *actor) INT32 weapons[MAXPLAYERS]; INT32 weaponheld[MAXPLAYERS]; -#ifdef HAVE_BLUA if (LUA_CallAction("A_RecyclePowers", actor)) return; -#endif - -#if !defined(WEIGHTEDRECYCLER) && !defined(HAVE_BLUA) - // actor is used in all scenarios but this one, funny enough - (void)actor; -#endif if (!multiplayer) { @@ -7069,10 +6930,9 @@ void A_RecyclePowers(mobj_t *actor) void A_Boss1Chase(mobj_t *actor) { INT32 delta; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss1Chase", actor)) return; -#endif if (!actor->target || !(actor->target->flags & MF_SHOOTABLE)) { @@ -7193,10 +7053,9 @@ void A_Boss2Chase(mobj_t *actor) fixed_t radius; boolean reverse = false; INT32 speedvar; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss2Chase", actor)) return; -#endif if (actor->health <= 0) return; @@ -7321,10 +7180,9 @@ void A_Boss2Chase(mobj_t *actor) // void A_Boss2Pogo(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss2Pogo", actor)) return; -#endif + if (actor->z <= actor->floorz + FixedMul(8*FRACUNIT, actor->scale) && actor->momz <= 0) { if (actor->state != &states[actor->info->raisestate]) @@ -7369,10 +7227,10 @@ void A_Boss2Pogo(mobj_t *actor) void A_Boss2TakeDamage(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss2TakeDamage", actor)) return; -#endif + A_Pain(actor); actor->reactiontime = 1; // turn around if (locvar1 == 0) // old A_Invincibilerize behavior @@ -7392,10 +7250,9 @@ void A_Boss7Chase(mobj_t *actor) { INT32 delta; INT32 i; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss7Chase", actor)) return; -#endif if (actor->z != actor->floorz) return; @@ -7524,10 +7381,9 @@ void A_Boss7Chase(mobj_t *actor) // void A_GoopSplat(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_GoopSplat", actor)) return; -#endif + P_UnsetThingPosition(actor); if (sector_list) { @@ -7549,10 +7405,9 @@ void A_Boss2PogoSFX(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss2PogoSFX", actor)) return; -#endif if (!actor->target || !(actor->target->flags & MF_SHOOTABLE)) { @@ -7593,10 +7448,8 @@ void A_Boss2PogoTarget(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss2PogoTarget", actor)) return; -#endif if (!actor->target || !(actor->target->flags & MF_SHOOTABLE) || (actor->target->player && actor->target->player->powers[pw_flashing]) || P_AproxDistance(actor->x-actor->target->x, actor->y-actor->target->y) >= FixedMul(512*FRACUNIT, actor->scale)) @@ -7680,10 +7533,9 @@ void A_Boss2PogoTarget(mobj_t *actor) // void A_EggmanBox(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_EggmanBox", actor)) return; -#endif + if (!actor->target || !actor->target->player) { CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n"); @@ -7706,10 +7558,9 @@ void A_TurretFire(mobj_t *actor) fixed_t dist; INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_TurretFire", actor)) return; -#endif if (locvar2) dist = FixedMul(locvar2*FRACUNIT, actor->scale); @@ -7745,10 +7596,9 @@ void A_SuperTurretFire(mobj_t *actor) fixed_t dist; INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SuperTurretFire", actor)) return; -#endif if (locvar2) dist = FixedMul(locvar2*FRACUNIT, actor->scale); @@ -7782,10 +7632,9 @@ void A_SuperTurretFire(mobj_t *actor) void A_TurretStop(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_TurretStop", actor)) return; -#endif actor->flags2 &= ~MF2_FIRING; actor->flags2 &= ~MF2_SUPERFIRE; @@ -7803,10 +7652,8 @@ void A_TurretStop(mobj_t *actor) // void A_SparkFollow(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_SparkFollow", actor)) return; -#endif if ((!actor->target || (actor->target->health <= 0)) || (actor->target->player && !actor->target->player->powers[pw_super])) @@ -7840,10 +7687,10 @@ void A_BuzzFly(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_BuzzFly", actor)) return; -#endif + if (actor->flags2 & MF2_AMBUSH) return; @@ -7939,10 +7786,9 @@ void A_BuzzFly(mobj_t *actor) void A_GuardChase(mobj_t *actor) { INT32 delta; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_GuardChase", actor)) return; -#endif if (actor->reactiontime) actor->reactiontime--; @@ -8045,10 +7891,9 @@ void A_EggShield(mobj_t *actor) fixed_t newx, newy; fixed_t movex, movey; angle_t angle; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_EggShield", actor)) return; -#endif if (!actor->target || !actor->target->health) { @@ -8129,10 +7974,9 @@ void A_EggShield(mobj_t *actor) // void A_SetReactionTime(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_SetReactionTime", actor)) return; -#endif + if (var1) actor->reactiontime = var2; else @@ -8152,10 +7996,8 @@ void A_Boss1Spikeballs(mobj_t *actor) INT32 locvar2 = var2; mobj_t *ball; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss1Spikeballs", actor)) return; -#endif ball = P_SpawnMobj(actor->x, actor->y, actor->z, MT_EGGMOBILE_BALL); P_SetTarget(&ball->target, actor); @@ -8176,10 +8018,9 @@ void A_Boss1Spikeballs(mobj_t *actor) // void A_Boss3TakeDamage(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss3TakeDamage", actor)) return; -#endif + actor->movecount = var1; actor->movefactor = -512*FRACUNIT; @@ -8197,10 +8038,8 @@ void A_Boss3TakeDamage(mobj_t *actor) // void A_Boss3Path(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss3Path", actor)) return; -#endif if (actor->tracer && actor->tracer->health && actor->tracer->movecount) actor->movecount |= 1; @@ -8326,10 +8165,8 @@ void A_Boss3Path(mobj_t *actor) // void A_Boss3ShockThink(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss3ShockThink", actor)) return; -#endif if (actor->momx || actor->momy) actor->angle = R_PointToAngle2(0, 0, actor->momx, actor->momy) + ANGLE_90; @@ -8380,10 +8217,9 @@ void A_LinedefExecute(mobj_t *actor) INT32 tagnum; INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_LinedefExecute", actor)) return; -#endif tagnum = locvar1; // state numbers option is no more, custom states cannot be guaranteed to stay the same number anymore, now that they can be defined by names instead @@ -8408,10 +8244,9 @@ void A_LinedefExecute(mobj_t *actor) // void A_PlaySeeSound(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_PlaySeeSound", actor)) return; -#endif + if (actor->info->seesound) S_StartScreamSound(actor, actor->info->seesound); } @@ -8425,10 +8260,9 @@ void A_PlaySeeSound(mobj_t *actor) // void A_PlayAttackSound(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_PlayAttackSound", actor)) return; -#endif + if (actor->info->attacksound) S_StartAttackSound(actor, actor->info->attacksound); } @@ -8442,10 +8276,9 @@ void A_PlayAttackSound(mobj_t *actor) // void A_PlayActiveSound(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_PlayActiveSound", actor)) return; -#endif + if (actor->info->activesound) S_StartSound(actor, actor->info->activesound); } @@ -8461,10 +8294,9 @@ void A_SmokeTrailer(mobj_t *actor) { mobj_t *th; INT32 locvar1 = var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SmokeTrailer", actor)) return; -#endif if (leveltime % 4) return; @@ -8503,10 +8335,9 @@ void A_SpawnObjectAbsolute(mobj_t *actor) mobj_t *mo; INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SpawnObjectAbsolute", actor)) return; -#endif x = (INT16)(locvar1>>16); y = (INT16)(locvar1&65535); @@ -8540,10 +8371,9 @@ void A_SpawnObjectRelative(mobj_t *actor) mobj_t *mo; INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SpawnObjectRelative", actor)) return; -#endif CONS_Debug(DBG_GAMELOGIC, "A_SpawnObjectRelative called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); @@ -8585,10 +8415,9 @@ void A_ChangeAngleRelative(mobj_t *actor) const fixed_t amax = locvar2*FRACUNIT; //const angle_t amin = FixedAngle(locvar1*FRACUNIT); //const angle_t amax = FixedAngle(locvar2*FRACUNIT); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ChangeAngleRelative", actor)) return; -#endif #ifdef PARANOIA if (amin > amax) @@ -8619,10 +8448,9 @@ void A_ChangeAngleAbsolute(mobj_t *actor) const fixed_t amax = locvar2*FRACUNIT; //const angle_t amin = FixedAngle(locvar1*FRACUNIT); //const angle_t amax = FixedAngle(locvar2*FRACUNIT); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ChangeAngleAbsolute", actor)) return; -#endif #ifdef PARANOIA if (amin > amax) @@ -8650,10 +8478,8 @@ void A_RollAngle(mobj_t *actor) INT32 locvar2 = var2; const angle_t angle = FixedAngle(locvar1*FRACUNIT); -#ifdef HAVE_BLUA if (LUA_CallAction("A_RollAngle", actor)) return; -#endif // relative (default) if (!locvar2) @@ -8676,10 +8502,9 @@ void A_ChangeRollAngleRelative(mobj_t *actor) INT32 locvar2 = var2; const fixed_t amin = locvar1*FRACUNIT; const fixed_t amax = locvar2*FRACUNIT; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ChangeRollAngleRelative", actor)) return; -#endif #ifdef PARANOIA if (amin > amax) @@ -8702,10 +8527,9 @@ void A_ChangeRollAngleAbsolute(mobj_t *actor) INT32 locvar2 = var2; const fixed_t amin = locvar1*FRACUNIT; const fixed_t amax = locvar2*FRACUNIT; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ChangeRollAngleAbsolute", actor)) return; -#endif #ifdef PARANOIA if (amin > amax) @@ -8728,10 +8552,9 @@ void A_PlaySound(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_PlaySound", actor)) return; -#endif if (leveltime < 2 && (locvar2 >> 16)) return; @@ -8754,10 +8577,9 @@ void A_FindTarget(mobj_t *actor) thinker_t *th; mobj_t *mo2; fixed_t dist1 = 0, dist2 = 0; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FindTarget", actor)) return; -#endif CONS_Debug(DBG_GAMELOGIC, "A_FindTarget called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); @@ -8819,10 +8641,9 @@ void A_FindTracer(mobj_t *actor) thinker_t *th; mobj_t *mo2; fixed_t dist1 = 0, dist2 = 0; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FindTracer", actor)) return; -#endif CONS_Debug(DBG_GAMELOGIC, "A_FindTracer called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); @@ -8880,10 +8701,9 @@ void A_SetTics(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetTics", actor)) return; -#endif if (locvar1) actor->tics = locvar1; @@ -8902,10 +8722,9 @@ void A_SetRandomTics(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetRandomTics", actor)) return; -#endif actor->tics = P_RandomRange(locvar1, locvar2); } @@ -8921,10 +8740,9 @@ void A_ChangeColorRelative(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ChangeColorRelative", actor)) return; -#endif if (locvar1) { @@ -8947,10 +8765,9 @@ void A_ChangeColorAbsolute(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ChangeColorAbsolute", actor)) return; -#endif if (locvar1) { @@ -8972,10 +8789,9 @@ void A_MoveRelative(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_MoveRelative", actor)) return; -#endif P_Thrust(actor, actor->angle+FixedAngle(locvar1*FRACUNIT), FixedMul(locvar2*FRACUNIT, actor->scale)); } @@ -8991,10 +8807,9 @@ void A_MoveAbsolute(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_MoveAbsolute", actor)) return; -#endif P_InstaThrust(actor, FixedAngle(locvar1*FRACUNIT), FixedMul(locvar2*FRACUNIT, actor->scale)); } @@ -9010,10 +8825,9 @@ void A_Thrust(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Thrust", actor)) return; -#endif if (!locvar1) CONS_Debug(DBG_GAMELOGIC, "A_Thrust: Var1 not specified!\n"); @@ -9037,10 +8851,9 @@ void A_ZThrust(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ZThrust", actor)) return; -#endif if (!locvar1) CONS_Debug(DBG_GAMELOGIC, "A_ZThrust: Var1 not specified!\n"); @@ -9072,10 +8885,9 @@ void A_SetTargetsTarget(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; mobj_t *oldtarg = NULL, *newtarg = NULL; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetTargetsTarget", actor)) return; -#endif // actor's target if (locvar1) // or tracer @@ -9117,10 +8929,9 @@ void A_SetObjectFlags(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; boolean unlinkthings = false; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetObjectFlags", actor)) return; -#endif if (locvar2 == 2) locvar1 = actor->flags | locvar1; @@ -9159,10 +8970,9 @@ void A_SetObjectFlags2(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetObjectFlags2", actor)) return; -#endif if (locvar2 == 2) actor->flags2 |= locvar1; @@ -9187,10 +8997,9 @@ void A_BossJetFume(mobj_t *actor) { mobj_t *filler; INT32 locvar1 = var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_BossJetFume", actor)) return; -#endif if (locvar1 == 0) // Boss1 jet fumes { @@ -9323,10 +9132,9 @@ void A_RandomState(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RandomState", actor)) return; -#endif P_SetMobjState(actor, P_RandomChance(FRACUNIT/2) ? locvar1 : locvar2); } @@ -9343,10 +9151,8 @@ void A_RandomStateRange(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_RandomStateRange", actor)) return; -#endif P_SetMobjState(actor, P_RandomRange(locvar1, locvar2)); } @@ -9362,27 +9168,22 @@ void A_DualAction(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_DualAction", actor)) return; -#endif CONS_Debug(DBG_GAMELOGIC, "A_DualAction called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); var1 = states[locvar1].var1; var2 = states[locvar1].var2; -#ifdef HAVE_BLUA astate = &states[locvar1]; -#endif CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling First Action (state %d)...\n", locvar1); states[locvar1].action.acp1(actor); var1 = states[locvar2].var1; var2 = states[locvar2].var2; -#ifdef HAVE_BLUA astate = &states[locvar2]; -#endif CONS_Debug(DBG_GAMELOGIC, "A_DualAction: Calling Second Action (state %d)...\n", locvar2); states[locvar2].action.acp1(actor); @@ -9400,10 +9201,9 @@ void A_RemoteAction(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; mobj_t *originaltarget = actor->target; // Hold on to the target for later. -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RemoteAction", actor)) return; -#endif // If >=0, find the closest target. if (locvar1 >= 0) @@ -9465,9 +9265,7 @@ void A_RemoteAction(mobj_t *actor) // Steal the var1 and var2 from "locvar2" var1 = states[locvar2].var1; var2 = states[locvar2].var2; -#ifdef HAVE_BLUA astate = &states[locvar2]; -#endif CONS_Debug(DBG_GAMELOGIC, "A_RemoteAction: Calling action on %p\n" "var1 is %d\nvar2 is %d\n", actor->target, var1, var2); @@ -9486,10 +9284,9 @@ void A_RemoteAction(mobj_t *actor) // void A_ToggleFlameJet(mobj_t* actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_ToggleFlameJet", actor)) return; -#endif + // threshold - off delay // movecount - on timer @@ -9533,10 +9330,9 @@ void A_OrbitNights(mobj_t* actor) boolean ishelper = (var2 & 0x10000); boolean donotrescale = (var2 & 0x40000); INT32 xfactor = 32, yfactor = 32, zfactor = 20; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_OrbitNights", actor)) return; -#endif if (actor->flags & MF_GRENADEBOUNCE) { @@ -9607,10 +9403,10 @@ void A_GhostMe(mobj_t *actor) { INT32 locvar1 = var1; mobj_t *ghost; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_GhostMe", actor)) return; -#endif + ghost = P_SpawnGhostMobj(actor); if (ghost && locvar1 > 0) ghost->fuse = locvar1; @@ -9630,10 +9426,9 @@ void A_SetObjectState(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; mobj_t *target; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetObjectState", actor)) return; -#endif if ((!locvar2 && !actor->target) || (locvar2 && !actor->tracer)) { @@ -9676,10 +9471,8 @@ void A_SetObjectTypeState(mobj_t *actor) mobj_t *mo2; fixed_t dist = 0; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SetObjectTypeState", actor)) return; -#endif for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) { @@ -9719,10 +9512,9 @@ void A_KnockBack(mobj_t *actor) { INT32 locvar1 = var1; mobj_t *target; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_KnockBack", actor)) return; -#endif if (!locvar1) target = actor->target; @@ -9755,10 +9547,9 @@ void A_PushAway(mobj_t *actor) INT32 locvar2 = var2; mobj_t *target; // target angle_t an; // actor to target angle -#ifdef HAVE_BLUA + if (LUA_CallAction("A_PushAway", actor)) return; -#endif if ((!(locvar2 >> 16) && !actor->target) || ((locvar2 >> 16) && !actor->tracer)) return; @@ -9790,10 +9581,9 @@ void A_RingDrain(mobj_t *actor) { INT32 locvar1 = var1; player_t *player; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RingDrain", actor)) return; -#endif if (!actor->target || !actor->target->player) { @@ -9823,10 +9613,9 @@ void A_SplitShot(mobj_t *actor) const UINT16 loc2up = (UINT16)(locvar2 >> 16); const fixed_t offs = (fixed_t)(locvar1*FRACUNIT); const fixed_t hoffs = (fixed_t)(loc2up*FRACUNIT); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SplitShot", actor)) return; -#endif A_FaceTarget(actor); { @@ -9858,10 +9647,10 @@ void A_MissileSplit(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_MissileSplit", actor)) return; -#endif + if (actor->eflags & MFE_VERTICALFLIP) P_SpawnAlteredDirectionMissile(actor, locvar1, actor->x, actor->y, actor->z+actor->height, locvar2); else @@ -9886,10 +9675,9 @@ void A_MultiShot(mobj_t *actor) const UINT16 loc1up = (UINT16)(locvar1 >> 16); INT32 count = 0; fixed_t ad; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_MultiShot", actor)) return; -#endif if (actor->target) A_FaceTarget(actor); @@ -9948,10 +9736,9 @@ void A_InstaLoop(mobj_t *actor) const angle_t fa = FixedAngleC(loc1lw*FRACUNIT*360, loc1up*FRACUNIT)>>ANGLETOFINESHIFT; const fixed_t ac = FINECOSINE(fa); const fixed_t as = FINESINE(fa); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_InstaLoop", actor)) return; -#endif P_InstaThrust(actor, actor->angle, FixedMul(ac, FixedMul(force, actor->scale))); P_SetObjectMomZ(actor, FixedMul(as, force), false); @@ -9982,10 +9769,9 @@ void A_Custom3DRotate(mobj_t *actor) const fixed_t hOff = FixedMul(loc1up*FRACUNIT, actor->scale); const fixed_t hspeed = FixedMul(loc2up*FRACUNIT/10, actor->scale); const fixed_t vspeed = FixedMul(loc2lw*FRACUNIT/10, actor->scale); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Custom3DRotate", actor)) return; -#endif if (actor->target->health == 0) { @@ -10042,10 +9828,9 @@ void A_SearchForPlayers(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SearchForPlayers", actor)) return; -#endif if (!actor->target || !(actor->target->flags & MF_SHOOTABLE)) { @@ -10076,10 +9861,9 @@ void A_CheckRandom(mobj_t *actor) INT32 locvar2 = var2; fixed_t chance = FRACUNIT; -#ifdef HAVE_BLUA if (LUA_CallAction("A_CheckRandom", actor)) return; -#endif + if ((locvar1 & 0xFFFF) == 0) return; @@ -10103,10 +9887,9 @@ void A_CheckTargetRings(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckTargetRings", actor)) return; -#endif if (!(actor->target) || !(actor->target->player)) return; @@ -10127,10 +9910,9 @@ void A_CheckRings(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; INT32 i, cntr = 0; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckRings", actor)) return; -#endif for (i = 0; i < MAXPLAYERS; i++) cntr += players[i].rings; @@ -10152,10 +9934,9 @@ void A_CheckTotalRings(mobj_t *actor) INT32 locvar2 = var2; INT32 i, cntr = 0; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckTotalRings", actor)) return; -#endif for (i = 0; i < MAXPLAYERS; i++) cntr += players[i].totalring; @@ -10175,10 +9956,9 @@ void A_CheckHealth(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckHealth", actor)) return; -#endif if (actor->health <= locvar1) P_SetMobjState(actor, locvar2); @@ -10198,10 +9978,9 @@ void A_CheckRange(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; fixed_t dist; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckRange", actor)) return; -#endif if ((!(locvar1 >> 16) && !actor->target) || ((locvar1 >> 16) && !actor->tracer)) return; @@ -10229,10 +10008,9 @@ void A_CheckHeight(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; fixed_t height; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckHeight", actor)) return; -#endif if ((!(locvar1 >> 16) && !actor->target) || ((locvar1 >> 16) && !actor->tracer)) return; @@ -10262,10 +10040,9 @@ void A_CheckTrueRange(mobj_t *actor) fixed_t height; // vertical range fixed_t dist; // horizontal range fixed_t l; // true range -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckTrueRange", actor)) return; -#endif if ((!(locvar1 >> 16) && !actor->target) || ((locvar1 >> 16) && !actor->tracer)) return; @@ -10314,10 +10091,9 @@ void A_CheckThingCount(mobj_t *actor) thinker_t *th; mobj_t *mo2; fixed_t dist = 0; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckThingCount", actor)) return; -#endif for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) { @@ -10361,10 +10137,8 @@ void A_CheckAmbush(mobj_t *actor) angle_t atp; // actor to target angle angle_t an; // angle between at and atp -#ifdef HAVE_BLUA if (LUA_CallAction("A_CheckAmbush", actor)) return; -#endif if ((!locvar1 && !actor->target) || (locvar1 && !actor->tracer)) return; @@ -10400,10 +10174,9 @@ void A_CheckCustomValue(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckCustomValue", actor)) return; -#endif if (actor->cusval >= locvar1) P_SetMobjState(actor, locvar2); @@ -10420,10 +10193,9 @@ void A_CheckCusValMemo(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckCusValMemo", actor)) return; -#endif if (actor->cvmem >= locvar1) P_SetMobjState(actor, locvar2); @@ -10446,10 +10218,9 @@ void A_SetCustomValue(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetCustomValue", actor)) return; -#endif if (cv_debug) CONS_Printf("Init custom value is %d\n", actor->cusval); @@ -10497,10 +10268,9 @@ void A_UseCusValMemo(mobj_t *actor) INT32 temp = actor->cusval; // value being manipulated INT32 tempM = actor->cvmem; // value used to manipulate temp with -#ifdef HAVE_BLUA + if (LUA_CallAction("A_UseCusValMemo", actor)) return; -#endif if (locvar1 == 1) // cvmem being changed using cusval { @@ -10561,10 +10331,9 @@ void A_RelayCustomValue(mobj_t *actor) INT32 temp; // reference value - var1 lower 16 bits changes this INT32 tempT; // target's value - changed to tracer if var1 upper 16 bits set, then modified to become final value -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RelayCustomValue", actor)) return; -#endif if ((!(locvar1 >> 16) && !actor->target) || ((locvar1 >> 16) && !actor->tracer)) return; @@ -10621,10 +10390,9 @@ void A_CusValAction(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CusValAction", actor)) return; -#endif if (locvar2 == 5) { @@ -10657,9 +10425,7 @@ void A_CusValAction(mobj_t *actor) var2 = states[locvar1].var2; } -#ifdef HAVE_BLUA astate = &states[locvar1]; -#endif states[locvar1].action.acp1(actor); } @@ -10675,10 +10441,9 @@ void A_CusValAction(mobj_t *actor) void A_ForceStop(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ForceStop", actor)) return; -#endif actor->momx = actor->momy = 0; if (locvar1 == 0) @@ -10696,12 +10461,8 @@ void A_ForceWin(mobj_t *actor) { INT32 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_ForceWin", actor)) return; -#else - (void)actor; -#endif for (i = 0; i < MAXPLAYERS; i++) { @@ -10733,10 +10494,9 @@ void A_ForceWin(mobj_t *actor) void A_SpikeRetract(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SpikeRetract", actor)) return; -#endif if (actor->flags & MF_NOBLOCKMAP) return; @@ -10818,10 +10578,9 @@ void A_Repeat(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Repeat", actor)) return; -#endif if (locvar1 && (!actor->extravalue2 || actor->extravalue2 > locvar1)) actor->extravalue2 = locvar1; @@ -10844,10 +10603,9 @@ void A_SetScale(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; mobj_t *target; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SetScale", actor)) return; -#endif if (locvar1 <= 0) { @@ -10888,10 +10646,10 @@ void A_RemoteDamage(mobj_t *actor) INT32 locvar2 = var2; mobj_t *target; // we MUST have a target mobj_t *source = NULL; // on the other hand we don't necessarily need a source -#ifdef HAVE_BLUA + if (LUA_CallAction("A_RemoteDamage", actor)) return; -#endif + if (locvar1 == 1) target = actor->target; else if (locvar1 == 2) @@ -10941,10 +10699,9 @@ void A_HomingChase(mobj_t *actor) mobj_t *dest; fixed_t dist; fixed_t speedmul; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_HomingChase", actor)) return; -#endif if (locvar2 == 1) dest = actor->tracer; @@ -10995,10 +10752,9 @@ void A_TrapShot(mobj_t *actor) INT16 vertoff = (INT16)(locvar2 >> 16); fixed_t x, y, z; fixed_t speed; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_TrapShot", actor)) return; -#endif x = actor->x + P_ReturnThrustX(actor, actor->angle, FixedMul(frontoff*FRACUNIT, actor->scale)); y = actor->y + P_ReturnThrustY(actor, actor->angle, FixedMul(frontoff*FRACUNIT, actor->scale)); @@ -11062,10 +10818,8 @@ void A_VileTarget(mobj_t *actor) mobjtype_t fogtype; INT32 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_VileTarget", actor)) return; -#endif if (!actor->target) return; @@ -11151,10 +10905,8 @@ void A_VileAttack(mobj_t *actor) mobj_t *fire; INT32 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_VileAttack", actor)) return; -#endif if (!actor->target) return; @@ -11265,10 +11017,8 @@ void A_VileFire(mobj_t *actor) INT32 locvar2 = var2; mobj_t *dest; -#ifdef HAVE_BLUA if (LUA_CallAction("A_VileFire", actor)) return; -#endif dest = actor->tracer; if (!dest) @@ -11353,10 +11103,8 @@ void A_BrakChase(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BrakChase", actor)) return; -#endif // Set new tics NOW, in case the state changes while we're doing this and we try applying this to the painstate or something silly if (actor->tics > 1 && locvar1 < actor->tics) // Not much point, otherwise @@ -11475,10 +11223,9 @@ void A_BrakFireShot(mobj_t *actor) fixed_t x, y, z; INT32 locvar1 = var1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BrakFireShot", actor)) return; -#endif + if (!actor->target) return; @@ -11539,10 +11286,8 @@ void A_BrakLobShot(mobj_t *actor) INT32 locvar2 = var2 & 0x0000FFFF; INT32 aimDirect = var2 & 0xFFFF0000; -#ifdef HAVE_BLUA if (LUA_CallAction("A_BrakLobShot", actor)) return; -#endif if (!actor->target) return; // Don't even bother if we've got nothing to aim at. @@ -11647,10 +11392,8 @@ void A_NapalmScatter(mobj_t *actor) INT32 i; // for-loop cursor mobj_t *mo; // each and every spawned napalm burst -#ifdef HAVE_BLUA if (LUA_CallAction("A_NapalmScatter", actor)) return; -#endif // Some quick sanity-checking if (typeOfShot >= NUMMOBJTYPES) // I'd add a <0 check, too, but 0x0000FFFF isn't negative in this case @@ -11701,10 +11444,8 @@ void A_SpawnFreshCopy(mobj_t *actor) { mobj_t *newObject; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SpawnFreshCopy", actor)) return; -#endif newObject = P_SpawnMobjFromMobj(actor, 0, 0, 0, actor->type); newObject->flags2 = actor->flags2 & MF2_AMBUSH; @@ -11778,10 +11519,9 @@ void A_FlickySpawn(mobj_t *actor) INT32 locvar2 = var2; INT32 test = (var1 >> 16); SINT8 moveforward = 0; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickySpawn", actor)) return; -#endif if (test & 1) A_Scream(actor); // A shortcut for the truly lazy. @@ -11847,10 +11587,9 @@ void A_FlickyCenter(mobj_t *actor) UINT16 flickytype = (locvar1 & 0xFFFF); UINT8 flickycolor = ((locvar1 >> 16) & 0xFF); UINT8 flickyflags = ((locvar1 >> 20) & 0xF); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyCenter", actor)) return; -#endif if (!actor->tracer) { @@ -11969,10 +11708,8 @@ void A_FlickyAim(mobj_t *actor) INT32 locvar2 = var2; boolean flickyhitwall = false; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FlickyAim", actor)) return; -#endif if ((actor->momx == actor->momy && actor->momy == 0) || (actor->target && P_IsFlickyCenter(actor->target->type) @@ -12070,10 +11807,10 @@ void A_FlickyFly(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyFly", actor)) return; -#endif + P_InternalFlickyFly(actor, locvar1, locvar2, FINECOSINE((((actor->fuse % 36) * ANG10) >> ANGLETOFINESHIFT) & FINEMASK) ); @@ -12090,10 +11827,10 @@ void A_FlickySoar(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickySoar", actor)) return; -#endif + P_InternalFlickyFly(actor, locvar1, locvar2, 2*(FRACUNIT/2 - abs(FINECOSINE((((actor->fuse % 144) * 5*ANG1/2) >> ANGLETOFINESHIFT) & FINEMASK))) ); @@ -12114,10 +11851,10 @@ void A_FlickyCoast(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyCoast", actor)) return; -#endif + if (actor->eflags & MFE_UNDERWATER) { actor->momx = (11*actor->momx)/12; @@ -12161,10 +11898,10 @@ void A_FlickyHop(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyHop", actor)) return; -#endif + P_InternalFlickyHop(actor, locvar1, locvar2, actor->angle); } @@ -12180,10 +11917,10 @@ void A_FlickyFlounder(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; angle_t hopangle; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyFlounder", actor)) return; -#endif + locvar1 *= (P_RandomKey(2) + 1); locvar2 *= (P_RandomKey(2) + 1); hopangle = (actor->angle + (P_RandomKey(9) - 4)*ANG2); @@ -12202,10 +11939,10 @@ void A_FlickyCheck(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyCheck", actor)) return; -#endif + if (actor->target && P_IsFlickyCenter(actor->target->type) && (actor->target->flags & MF_GRENADEBOUNCE)) @@ -12239,10 +11976,10 @@ void A_FlickyHeightCheck(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyHeightCheck", actor)) return; -#endif + if (actor->target && P_IsFlickyCenter(actor->target->type) && (actor->target->flags & MF_GRENADEBOUNCE)) @@ -12274,10 +12011,10 @@ void A_FlickyFlutter(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_FlickyFlutter", actor)) return; -#endif + var1 = locvar1; var2 = locvar2; A_FlickyCheck(actor); @@ -12305,13 +12042,9 @@ void A_FlameParticle(mobj_t *actor) mobjtype_t type = (mobjtype_t)(mobjinfo[actor->type].painchance); fixed_t rad, hei; mobj_t *particle; - //INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FlameParticle", actor)) return; -#endif if (!type) return; @@ -12337,12 +12070,9 @@ void A_FadeOverlay(mobj_t *actor) { mobj_t *fade; INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FadeOverlay", actor)) return; -#endif fade = P_SpawnGhostMobj(actor); fade->frame = actor->frame; @@ -12382,10 +12112,8 @@ void A_Boss5Jump(mobj_t *actor) // INT32 locvar1 = var1; // INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss5Jump", actor)) return; -#endif if (!actor->tracer) return; // Don't even bother if we've got nothing to aim at. @@ -12461,10 +12189,8 @@ void A_LightBeamReset(mobj_t *actor) // INT32 locvar1 = var1; // INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_LightBeamReset", actor)) return; -#endif actor->destscale = FRACUNIT + P_SignedRandom()*FRACUNIT/256; P_SetScale(actor, actor->destscale); @@ -12493,10 +12219,8 @@ void A_MineExplode(mobj_t *actor) // INT32 locvar1 = var1; // INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_MineExplode", actor)) return; -#endif A_Scream(actor); actor->flags = MF_NOGRAVITY|MF_NOCLIP; @@ -12548,10 +12272,8 @@ void A_MineRange(mobj_t *actor) INT32 locvar1 = var1; // INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_MineRange", actor)) return; -#endif if (!actor->target) return; @@ -12576,10 +12298,8 @@ void A_ConnectToGround(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_ConnectToGround", actor)) return; -#endif if (actor->subsector->sector->ffloors) P_AdjustMobjFloorZ_FFloors(actor, actor->subsector->sector, 2); @@ -12636,10 +12356,10 @@ void A_SpawnParticleRelative(mobj_t *actor) mobj_t *mo; INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_SpawnParticleRelative", actor)) return; -#endif + CONS_Debug(DBG_GAMELOGIC, "A_SpawnParticleRelative called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); @@ -12674,10 +12394,9 @@ void A_MultiShotDist(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_MultiShotDist", actor)) return; -#endif { UINT8 i; @@ -12714,10 +12433,9 @@ void A_WhoCaresIfYourSonIsABee(mobj_t *actor) fixed_t foffsetx; fixed_t foffsety; mobj_t *son; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_WhoCaresIfYourSonIsABee", actor)) return; -#endif A_FaceTarget(actor); @@ -12749,11 +12467,9 @@ void A_WhoCaresIfYourSonIsABee(mobj_t *actor) void A_ParentTriesToSleep(mobj_t *actor) { INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ParentTriesToSleep", actor)) return; -#endif if (actor->extravalue1) { @@ -12780,12 +12496,8 @@ void A_ParentTriesToSleep(mobj_t *actor) // void A_CryingToMomma(mobj_t *actor) { - //INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_CryingToMomma", actor)) return; -#endif if (actor->tracer) actor->tracer->extravalue1++; @@ -12813,10 +12525,9 @@ void A_CheckFlags2(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_CheckFlags2", actor)) return; -#endif if (actor->flags2 & locvar1) P_SetMobjState(actor, (statenum_t)locvar2); @@ -12832,14 +12543,12 @@ void A_CheckFlags2(mobj_t *actor) void A_Boss5FindWaypoint(mobj_t *actor) { INT32 locvar1 = var1; - //INT32 locvar2 = var2; boolean avoidcenter; UINT32 i; UINT8 extrainfo = (actor->spawnpoint ? actor->spawnpoint->extrainfo : 0); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5FindWaypoint", actor)) return; -#endif avoidcenter = !actor->tracer || (actor->health == actor->info->damage+1); @@ -13054,10 +12763,9 @@ void A_DoNPCSkid(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; fixed_t x, y, z; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_DoNPCSkid", actor)) return; -#endif x = actor->x; y = actor->y; @@ -13111,10 +12819,9 @@ void A_DoNPCPain(mobj_t *actor) INT32 locvar2 = var2; fixed_t vspeed = 0; fixed_t hspeed = FixedMul(4*FRACUNIT, actor->scale); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_DoNPCPain", actor)) return; -#endif actor->flags &= ~(MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT); @@ -13160,11 +12867,9 @@ void A_DoNPCPain(mobj_t *actor) void A_PrepareRepeat(mobj_t *actor) { INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_PrepareRepeat", actor)) return; -#endif actor->extravalue2 = locvar1; } @@ -13183,10 +12888,9 @@ void A_Boss5ExtraRepeat(mobj_t *actor) INT32 calc; INT32 locspawn; INT32 lochealth; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5ExtraRepeat", actor)) return; -#endif if (actor->extravalue2 > 0 && !(actor->flags2 & MF2_FRET)) return; @@ -13217,10 +12921,9 @@ void A_Boss5ExtraRepeat(mobj_t *actor) // void A_Boss5Calm(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_Boss5Calm", actor)) return; -#endif + actor->flags |= MF_SHOOTABLE; actor->flags2 &= ~MF2_FRET; } @@ -13236,10 +12939,9 @@ void A_Boss5CheckOnGround(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5CheckOnGround", actor)) return; -#endif if ((!(actor->eflags & MFE_VERTICALFLIP) && actor->z <= actor->floorz) || (actor->eflags & MFE_VERTICALFLIP && actor->z + actor->height >= actor->ceilingz)) @@ -13268,10 +12970,9 @@ void A_Boss5CheckFalling(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5CheckFalling", actor)) return; -#endif if (actor->health && actor->extravalue2 > 1) { @@ -13298,10 +12999,9 @@ void A_Boss5PinchShot(mobj_t *actor) INT32 locvar2 = var2; fixed_t zoffset; mobj_t *missile; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5PinchShot", actor)) return; -#endif if (actor->health > actor->info->damage) return; @@ -13334,10 +13034,9 @@ void A_Boss5MakeItRain(mobj_t *actor) INT32 locvar2 = var2; INT32 offset = (48 + locvar2)<<16; // upper 16 bits, not fixed_t! INT32 i; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5MakeItRain", actor)) return; -#endif actor->flags2 |= MF2_STRONGBOX; @@ -13371,10 +13070,9 @@ void A_Boss5MakeJunk(mobj_t *actor) mobj_t *broked = NULL; angle_t ang; INT32 i = ((locvar2 & 1) ? 8 : 1); -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5MakeJunk", actor)) return; -#endif if (locvar1 < 0 && (actor->flags2 & MF2_SLIDEPUSH)) // this entire action is a hack, don't judge me { @@ -13462,11 +13160,9 @@ void A_Boss5MakeJunk(mobj_t *actor) void A_LookForBetter(mobj_t *actor) { INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_LookForBetter", actor)) return; -#endif P_LookForPlayers(actor, (locvar1 & 65535), false, FixedMul((locvar1 >> 16)*FRACUNIT, actor->scale)); A_FaceTarget(actor); @@ -13524,11 +13220,9 @@ static void P_DustRing(mobjtype_t mobjtype, UINT32 div, fixed_t x, fixed_t y, fi void A_Boss5BombExplode(mobj_t *actor) { INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_Boss5BombExplode", actor)) return; -#endif // The original Lua script did not use |= to add flags but just set these flags exactly apparently? // (I may modify this later) @@ -13631,10 +13325,8 @@ void A_DustDevilThink(mobj_t *actor) INT32 bx, by, xl, xh, yl, yh; fixed_t radius = actor->radius; -#ifdef HAVE_BLUA if (LUA_CallAction("A_DustDevilThink", actor)) return; -#endif //Chained thinker for the spiralling dust column. while (layer && !P_MobjWasRemoved(layer)) { @@ -13771,15 +13463,12 @@ static boolean PIT_TNTExplode(mobj_t *nearby) void A_TNTExplode(mobj_t *actor) { INT32 locvar1 = var1; - //INT32 locvar2 = var2; INT32 x, y; INT32 xl, xh, yl, yh; static mappoint_t epicenter = {0,0,0}; -#ifdef HAVE_BLUA if (LUA_CallAction("A_TNTExplode", actor)) return; -#endif if (actor->tracer) { @@ -13843,12 +13532,9 @@ void A_TNTExplode(mobj_t *actor) void A_DebrisRandom(mobj_t *actor) { INT32 locvar1 = var1; - //INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_DebrisRandom", actor)) return; -#endif actor->frame |= P_RandomRange(0, locvar1); var1 = 0; @@ -13888,10 +13574,8 @@ void A_TrainCameo(mobj_t *actor) fixed_t span = locvar1*FRACUNIT; fixed_t len = locvar2*FRACUNIT; -#ifdef HAVE_BLUA if (LUA_CallAction("A_TrainCameo", actor)) return; -#endif //Spawn sides. P_TrainSeg(actor, x, y + span, z, ang, spr, 0); @@ -13928,10 +13612,8 @@ void A_TrainCameo2(mobj_t *actor) fixed_t span = locvar1*FRACUNIT; fixed_t len = locvar2*FRACUNIT; -#ifdef HAVE_BLUA if (LUA_CallAction("A_TrainCameo2", actor)) return; -#endif //Spawn sides. P_TrainSeg(actor, x, y + span, z, ang, spr, 0); @@ -13956,10 +13638,8 @@ void A_CanarivoreGas(mobj_t *actor) { INT32 locvar1 = var1; -#ifdef HAVE_BLUA if (LUA_CallAction("A_CanarivoreGas", actor)) return; -#endif P_DustRing(locvar1, 4, actor->x, actor->y, actor->z + actor->height / 5, 18, 0, FRACUNIT/10, actor->scale); P_DustRing(locvar1, 6, actor->x, actor->y, actor->z + actor->height / 5, 28, FRACUNIT, FRACUNIT/10, actor->scale); @@ -13979,10 +13659,8 @@ void A_KillSegments(mobj_t *actor) mobj_t *seg = actor->tracer; INT32 fuse = locvar1 ? locvar1 : TICRATE/2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_KillSegments", actor)) return; -#endif while (seg) { @@ -14064,10 +13742,8 @@ void A_SnapperSpawn(mobj_t *actor) INT32 i; mobj_t *seg; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SnapperSpawn", actor)) return; -#endif // It spawns 1 head. seg = P_SpawnMobjFromMobj(actor, 0, 0, 0, headtype); @@ -14116,10 +13792,8 @@ void A_SnapperThinker(mobj_t *actor) fixed_t dist; boolean chasing; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SnapperThinker", actor)) return; -#endif // We make a check just in case there's no spawnpoint. if (actor->spawnpoint) @@ -14239,10 +13913,8 @@ void A_SaloonDoorSpawn(mobj_t *actor) mobj_t *door; mobjflag2_t ambush = (actor->flags2 & MF2_AMBUSH); -#ifdef HAVE_BLUA if (LUA_CallAction("A_SaloonDoorSpawn", actor)) return; -#endif if (!locvar1) return; @@ -14278,10 +13950,8 @@ void A_MinecartSparkThink(mobj_t *actor) fixed_t dz, dm; UINT8 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_MinecartSparkThink", actor)) return; -#endif if (actor->momz == 0 && P_IsObjectOnGround(actor)) actor->momz = P_RandomRange(2, 4)*FRACUNIT; @@ -14313,10 +13983,9 @@ void A_ModuloToState(mobj_t *actor) { INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA + if (LUA_CallAction("A_ModuloToState", actor)) return; -#endif if ((modulothing % locvar1 == 0)) P_SetMobjState(actor, (locvar2)); @@ -14334,10 +14003,8 @@ void A_LavafallRocks(mobj_t *actor) { UINT8 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_LavafallRocks", actor)) return; -#endif // Don't spawn rocks unless a player is relatively close by. for (i = 0; i < MAXPLAYERS; ++i) @@ -14367,10 +14034,8 @@ void A_LavafallLava(mobj_t *actor) mobj_t *lavafall; UINT8 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_LavafallLava", actor)) return; -#endif if ((40 - actor->fuse) % (2*(actor->scale >> FRACBITS))) return; @@ -14397,10 +14062,8 @@ void A_LavafallLava(mobj_t *actor) // void A_FallingLavaCheck(mobj_t *actor) { -#ifdef HAVE_BLUA if (LUA_CallAction("A_FallingLavaCheck", actor)) return; -#endif if (actor->eflags & MFE_TOUCHWATER || P_IsObjectOnGround(actor)) { @@ -14424,10 +14087,8 @@ void A_FireShrink(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_FireShrink", actor)) return; -#endif actor->destscale = locvar1; actor->scalespeed = FRACUNIT/locvar2; @@ -14450,10 +14111,8 @@ void A_SpawnPterabytes(mobj_t *actor) UINT8 amount = 1; UINT8 i; -#ifdef HAVE_BLUA if (LUA_CallAction("A_SpawnPterabytes", actor)) return; -#endif if (actor->spawnpoint) amount = actor->spawnpoint->extrainfo + 1; @@ -14487,10 +14146,8 @@ void A_PterabyteHover(mobj_t *actor) { angle_t ang, fa; -#ifdef HAVE_BLUA if (LUA_CallAction("A_PterabyteHover", actor)) return; -#endif P_InstaThrust(actor, actor->angle, actor->info->speed); actor->angle += ANG1; @@ -14511,10 +14168,8 @@ void A_RolloutSpawn(mobj_t *actor) INT32 locvar1 = var1; INT32 locvar2 = var2; -#ifdef HAVE_BLUA if (LUA_CallAction("A_RolloutSpawn", actor)) return; -#endif if (!(actor->target) || P_MobjWasRemoved(actor->target) @@ -14549,10 +14204,8 @@ void A_RolloutRock(mobj_t *actor) fixed_t speed = P_AproxDistance(actor->momx, actor->momy), topspeed = FixedMul(actor->info->speed, actor->scale); boolean inwater = actor->eflags & (MFE_TOUCHWATER|MFE_UNDERWATER); -#ifdef HAVE_BLUA if (LUA_CallAction("A_RolloutRock", actor)) return; -#endif actor->friction = FRACUNIT; // turns out riding on solids sucks, so let's just make it easier on ourselves @@ -14634,10 +14287,8 @@ void A_DragonbomberSpawn(mobj_t *actor) UINT8 i; mobj_t *mo = actor; - #ifdef HAVE_BLUA - if (LUA_CallAction("A_DragonbomberSpawn", actor)) - return; - #endif + if (LUA_CallAction("A_DragonbomberSpawn", actor)) + return; for (i = 0; i < var1; i++) // spawn tail segments { @@ -14672,10 +14323,8 @@ void A_DragonWing(mobj_t *actor) mobj_t *target = actor->target; fixed_t x, y; - #ifdef HAVE_BLUA - if (LUA_CallAction("A_DragonWing", actor)) - return; - #endif + if (LUA_CallAction("A_DragonWing", actor)) + return; if (target == NULL || !target->health) { @@ -14707,10 +14356,8 @@ void A_DragonSegment(mobj_t *actor) fixed_t ydist; fixed_t zdist; - #ifdef HAVE_BLUA - if (LUA_CallAction("A_DragonSegment", actor)) - return; - #endif + if (LUA_CallAction("A_DragonSegment", actor)) + return; if (target == NULL || !target->health) { diff --git a/src/p_inter.c b/src/p_inter.c index 95f8fba41..67d197375 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -365,10 +365,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->flags & (MF_ENEMY|MF_BOSS) && special->flags2 & MF2_FRET) return; -#ifdef HAVE_BLUA if (LUAh_TouchSpecial(special, toucher) || P_MobjWasRemoved(special)) return; -#endif // 0 = none, 1 = elemental pierce, 2 = bubble bounce elementalpierce = (((player->powers[pw_shield] & SH_NOSTACK) == SH_ELEMENTAL || (player->powers[pw_shield] & SH_NOSTACK) == SH_BUBBLEWRAP) && (player->pflags & PF_SHIELDABILITY) @@ -1919,10 +1917,8 @@ static void P_HitDeathMessages(player_t *player, mobj_t *inflictor, mobj_t *sour if (!netgame) return; // Presumably it's obvious what's happening in splitscreen. -#ifdef HAVE_BLUA if (LUAh_HurtMsg(player, inflictor, source, damagetype)) return; -#endif deadtarget = (player->mo->health <= 0); @@ -2395,10 +2391,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget target->flags2 &= ~(MF2_SKULLFLY|MF2_NIGHTSPULL); target->health = 0; // This makes it easy to check if something's dead elsewhere. -#ifdef HAVE_BLUA if (LUAh_MobjDeath(target, inflictor, source, damagetype) || P_MobjWasRemoved(target)) return; -#endif // Let EVERYONE know what happened to a player! 01-29-2002 Tails if (target->player && !target->player->spectator) @@ -3511,11 +3505,7 @@ void P_SpecialStageDamage(player_t *player, mobj_t *inflictor, mobj_t *source) boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 damage, UINT8 damagetype) { player_t *player; -#ifdef HAVE_BLUA boolean force = false; -#else - static const boolean force = false; -#endif if (objectplacing) return false; @@ -3533,7 +3523,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da return false; } -#ifdef HAVE_BLUA // Everything above here can't be forced. if (!metalrecording) { @@ -3545,7 +3534,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da else if (shouldForce == 2) return false; } -#endif if (!force) { @@ -3579,10 +3567,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (!force && target->flags2 & MF2_FRET) // Currently flashing from being hit return false; -#ifdef HAVE_BLUA if (LUAh_MobjDamage(target, inflictor, source, damage, damagetype) || P_MobjWasRemoved(target)) return true; -#endif if (target->health > 1) target->flags2 |= MF2_FRET; @@ -3631,10 +3617,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da || (G_GametypeHasTeams() && player->ctfteam == source->player->ctfteam))) return false; // Don't run eachother over in special stages and team games and such } -#ifdef HAVE_BLUA if (LUAh_MobjDamage(target, inflictor, source, damage, damagetype)) return true; -#endif P_NiGHTSDamage(target, source); // -5s :( return true; } @@ -3687,18 +3671,14 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (force || (inflictor && inflictor->flags & MF_MISSILE && inflictor->flags2 & MF2_SUPERFIRE)) // Super Sonic is stunned! { -#ifdef HAVE_BLUA if (!LUAh_MobjDamage(target, inflictor, source, damage, damagetype)) -#endif P_SuperDamage(player, inflictor, source, damage); return true; } return false; } -#ifdef HAVE_BLUA else if (LUAh_MobjDamage(target, inflictor, source, damage, damagetype)) return true; -#endif else if (player->powers[pw_shield] || (player->bot && !ultimatemode)) //If One-Hit Shield { P_ShieldDamage(player, inflictor, source, damage, damagetype); diff --git a/src/p_map.c b/src/p_map.c index 966684818..988089989 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -756,11 +756,9 @@ static boolean PIT_CheckThing(mobj_t *thing) if (tmthing->z + tmthing->height < thing->z) return true; // underneath -#ifdef HAVE_BLUA // REX HAS SEEN YOU if (!LUAh_SeenPlayer(tmthing->target->player, thing->player)) return false; -#endif seenplayer = thing->player; return false; @@ -948,7 +946,6 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; // the line doesn't cross between either pair of opposite corners } -#ifdef HAVE_BLUA { UINT8 shouldCollide = LUAh_MobjCollide(thing, tmthing); // checks hook for thing's type if (P_MobjWasRemoved(tmthing) || P_MobjWasRemoved(thing)) @@ -957,9 +954,8 @@ static boolean PIT_CheckThing(mobj_t *thing) return false; // force collide else if (shouldCollide == 2) return true; // force no collide - } - { - UINT8 shouldCollide = LUAh_MobjMoveCollide(tmthing, thing); // checks hook for tmthing's type + + shouldCollide = LUAh_MobjMoveCollide(tmthing, thing); // checks hook for tmthing's type if (P_MobjWasRemoved(tmthing) || P_MobjWasRemoved(thing)) return true; // one of them was removed??? if (shouldCollide == 1) @@ -967,7 +963,6 @@ static boolean PIT_CheckThing(mobj_t *thing) else if (shouldCollide == 2) return true; // force no collide } -#endif if (tmthing->type == MT_LAVAFALL_LAVA && (thing->type == MT_RING || thing->type == MT_REDTEAMRING || thing->type == MT_BLUETEAMRING || thing->type == MT_FLINGRING)) { @@ -1946,7 +1941,6 @@ static boolean PIT_CheckLine(line_t *ld) // this line is out of the if so upper and lower textures can be hit by a splat blockingline = ld; -#ifdef HAVE_BLUA { UINT8 shouldCollide = LUAh_MobjLineCollide(tmthing, blockingline); // checks hook for thing's type if (P_MobjWasRemoved(tmthing)) @@ -1956,7 +1950,6 @@ static boolean PIT_CheckLine(line_t *ld) else if (shouldCollide == 2) return true; // force no collide } -#endif if (!ld->backsector) // one sided line { diff --git a/src/p_mobj.c b/src/p_mobj.c index 9194cf9f7..8ba1adc73 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -62,9 +62,7 @@ void P_RunCachedActions(void) { var1 = states[ac->statenum].var1; var2 = states[ac->statenum].var2; -#ifdef HAVE_BLUA astate = &states[ac->statenum]; -#endif if (ac->mobj && !P_MobjWasRemoved(ac->mobj)) // just in case... states[ac->statenum].action.acp1(ac->mobj); next = ac->next; @@ -459,9 +457,7 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) { var1 = st->var1; var2 = st->var2; -#ifdef HAVE_BLUA astate = st; -#endif st->action.acp1(mobj); // woah. a player was removed by an action. @@ -585,9 +581,7 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state) { var1 = st->var1; var2 = st->var2; -#ifdef HAVE_BLUA astate = st; -#endif st->action.acp1(mobj); if (P_MobjWasRemoved(mobj)) return false; @@ -1906,15 +1900,12 @@ void P_XYMovement(mobj_t *mo) B_MoveBlocked(player); } -#ifdef HAVE_BLUA if (LUAh_MobjMoveBlocked(mo)) { if (P_MobjWasRemoved(mo)) return; } - else -#endif - if (P_MobjWasRemoved(mo)) + else if (P_MobjWasRemoved(mo)) return; else if (mo->flags & MF_BOUNCE) { @@ -7643,12 +7634,10 @@ static void P_RosySceneryThink(mobj_t *mobj) static void P_MobjSceneryThink(mobj_t *mobj) { -#ifdef HAVE_BLUA if (LUAh_MobjThinker(mobj)) return; if (P_MobjWasRemoved(mobj)) return; -#endif if ((mobj->flags2 & MF2_SHIELD) && !P_AddShield(mobj)) return; @@ -7993,9 +7982,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) if (!mobj->fuse) { -#ifdef HAVE_BLUA if (!LUAh_MobjFuse(mobj)) -#endif P_RemoveMobj(mobj); return; } @@ -8054,9 +8041,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) mobj->fuse--; if (!mobj->fuse) { -#ifdef HAVE_BLUA if (!LUAh_MobjFuse(mobj)) -#endif P_RemoveMobj(mobj); return; } @@ -8085,7 +8070,6 @@ static boolean P_MobjPushableThink(mobj_t *mobj) static boolean P_MobjBossThink(mobj_t *mobj) { -#ifdef HAVE_BLUA if (LUAh_BossThinker(mobj)) { if (P_MobjWasRemoved(mobj)) @@ -8094,7 +8078,6 @@ static boolean P_MobjBossThink(mobj_t *mobj) else if (P_MobjWasRemoved(mobj)) return false; else -#endif switch (mobj->type) { case MT_EGGMOBILE: @@ -10004,113 +9987,110 @@ static boolean P_FuseThink(mobj_t *mobj) if (mobj->fuse) return true; -#ifdef HAVE_BLUA if (LUAh_MobjFuse(mobj) || P_MobjWasRemoved(mobj)) ; - else -#endif - if (mobj->info->flags & MF_MONITOR) + else if (mobj->info->flags & MF_MONITOR) + { + P_MonitorFuseThink(mobj); + return false; + } + else switch (mobj->type) + { + // gargoyle and snowman handled in P_PushableThinker, not here + case MT_THROWNGRENADE: + case MT_CYBRAKDEMON_NAPALM_BOMB_LARGE: + P_SetMobjState(mobj, mobj->info->deathstate); + break; + case MT_LHRT: + P_KillMobj(mobj, NULL, NULL, 0); + break; + case MT_BLUEFLAG: + case MT_REDFLAG: + P_FlagFuseThink(mobj); + P_RemoveMobj(mobj); + return false; + case MT_FANG: + if (mobj->flags2 & MF2_SLIDEPUSH) { - P_MonitorFuseThink(mobj); + var1 = 0; + var2 = 0; + A_BossDeath(mobj); return false; } - else switch (mobj->type) + P_SetMobjState(mobj, mobj->state->nextstate); + if (P_MobjWasRemoved(mobj)) + return false; + break; + case MT_METALSONIC_BATTLE: + break; // don't remove + case MT_SPIKE: + P_SetMobjState(mobj, mobj->state->nextstate); + mobj->fuse = mobj->info->speed; + if (mobj->spawnpoint) + mobj->fuse += mobj->spawnpoint->angle; + break; + case MT_WALLSPIKE: + P_SetMobjState(mobj, mobj->state->nextstate); + mobj->fuse = mobj->info->speed; + if (mobj->spawnpoint) + mobj->fuse += (mobj->spawnpoint->angle / 360); + break; + case MT_NIGHTSCORE: + P_RemoveMobj(mobj); + return false; + case MT_LAVAFALL: + if (mobj->state - states == S_LAVAFALL_DORMANT) { - // gargoyle and snowman handled in P_PushableThinker, not here - case MT_THROWNGRENADE: - case MT_CYBRAKDEMON_NAPALM_BOMB_LARGE: - P_SetMobjState(mobj, mobj->info->deathstate); + mobj->fuse = 30; + P_SetMobjState(mobj, S_LAVAFALL_TELL); + S_StartSound(mobj, mobj->info->seesound); + } + else if (mobj->state - states == S_LAVAFALL_TELL) + { + mobj->fuse = 40; + P_SetMobjState(mobj, S_LAVAFALL_SHOOT); + S_StopSound(mobj); + S_StartSound(mobj, mobj->info->attacksound); + } + else + { + mobj->fuse = 30; + P_SetMobjState(mobj, S_LAVAFALL_DORMANT); + S_StopSound(mobj); + } + return false; + case MT_PYREFLY: + if (mobj->health <= 0) break; - case MT_LHRT: - P_KillMobj(mobj, NULL, NULL, 0); - break; - case MT_BLUEFLAG: - case MT_REDFLAG: - P_FlagFuseThink(mobj); - P_RemoveMobj(mobj); - return false; - case MT_FANG: - if (mobj->flags2 & MF2_SLIDEPUSH) - { - var1 = 0; - var2 = 0; - A_BossDeath(mobj); - return false; - } - P_SetMobjState(mobj, mobj->state->nextstate); - if (P_MobjWasRemoved(mobj)) - return false; - break; - case MT_METALSONIC_BATTLE: - break; // don't remove - case MT_SPIKE: - P_SetMobjState(mobj, mobj->state->nextstate); - mobj->fuse = mobj->info->speed; - if (mobj->spawnpoint) - mobj->fuse += mobj->spawnpoint->angle; - break; - case MT_WALLSPIKE: - P_SetMobjState(mobj, mobj->state->nextstate); - mobj->fuse = mobj->info->speed; - if (mobj->spawnpoint) - mobj->fuse += (mobj->spawnpoint->angle / 360); - break; - case MT_NIGHTSCORE: - P_RemoveMobj(mobj); - return false; - case MT_LAVAFALL: - if (mobj->state - states == S_LAVAFALL_DORMANT) - { - mobj->fuse = 30; - P_SetMobjState(mobj, S_LAVAFALL_TELL); - S_StartSound(mobj, mobj->info->seesound); - } - else if (mobj->state - states == S_LAVAFALL_TELL) - { - mobj->fuse = 40; - P_SetMobjState(mobj, S_LAVAFALL_SHOOT); - S_StopSound(mobj); - S_StartSound(mobj, mobj->info->attacksound); - } - else - { - mobj->fuse = 30; - P_SetMobjState(mobj, S_LAVAFALL_DORMANT); - S_StopSound(mobj); - } - return false; - case MT_PYREFLY: - if (mobj->health <= 0) - break; - mobj->extravalue2 = (mobj->extravalue2 + 1) % 3; - if (mobj->extravalue2 == 0) - { - P_SetMobjState(mobj, mobj->info->spawnstate); - mobj->fuse = 100; - S_StopSound(mobj); - S_StartSound(mobj, sfx_s3k8c); - } - else if (mobj->extravalue2 == 1) - { - mobj->fuse = 50; - S_StartSound(mobj, sfx_s3ka3); - } - else - { - P_SetMobjState(mobj, mobj->info->meleestate); - mobj->fuse = 100; - S_StopSound(mobj); - S_StartSound(mobj, sfx_s3kc2l); - } - return false; - case MT_PLAYER: - break; // don't remove - default: - P_SetMobjState(mobj, mobj->info->xdeathstate); // will remove the mobj if S_NULL. - break; - // Looking for monitors? They moved to a special condition above. + mobj->extravalue2 = (mobj->extravalue2 + 1) % 3; + if (mobj->extravalue2 == 0) + { + P_SetMobjState(mobj, mobj->info->spawnstate); + mobj->fuse = 100; + S_StopSound(mobj); + S_StartSound(mobj, sfx_s3k8c); } + else if (mobj->extravalue2 == 1) + { + mobj->fuse = 50; + S_StartSound(mobj, sfx_s3ka3); + } + else + { + P_SetMobjState(mobj, mobj->info->meleestate); + mobj->fuse = 100; + S_StopSound(mobj); + S_StartSound(mobj, sfx_s3kc2l); + } + return false; + case MT_PLAYER: + break; // don't remove + default: + P_SetMobjState(mobj, mobj->info->xdeathstate); // will remove the mobj if S_NULL. + break; + // Looking for monitors? They moved to a special condition above. + } return !P_MobjWasRemoved(mobj); } @@ -10179,7 +10159,6 @@ void P_MobjThinker(mobj_t *mobj) return; } -#ifdef HAVE_BLUA // Check for a Lua thinker first if (!mobj->player) { @@ -10193,7 +10172,7 @@ void P_MobjThinker(mobj_t *mobj) if (P_MobjWasRemoved(mobj)) return; } -#endif + // if it's pushable, or if it would be pushable other than temporary disablement, use the // separate thinker if (mobj->flags & MF_PUSHABLE || (mobj->info->flags & MF_PUSHABLE && mobj->fuse)) @@ -10656,7 +10635,6 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) // Set shadowscale here, before spawn hook so that Lua can change it mobj->shadowscale = P_DefaultMobjShadowScale(mobj); -#ifdef HAVE_BLUA // DANGER! This can cause P_SpawnMobj to return NULL! // Avoid using P_RemoveMobj on the newly created mobj in "MobjSpawn" Lua hooks! if (LUAh_MobjSpawn(mobj)) @@ -10667,7 +10645,6 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) else if (P_MobjWasRemoved(mobj)) return NULL; else -#endif switch (mobj->type) { case MT_ALTVIEWMAN: @@ -10937,9 +10914,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) { var1 = st->var1; var2 = st->var2; -#ifdef HAVE_BLUA astate = st; -#endif st->action.acp1(mobj); // DANGER! This can cause P_SpawnMobj to return NULL! // Avoid using MF_RUNSPAWNFUNC on mobjs whose spawn state expects target or tracer to already be set! @@ -11037,16 +11012,12 @@ size_t iquehead, iquetail; void P_RemoveMobj(mobj_t *mobj) { I_Assert(mobj != NULL); -#ifdef HAVE_BLUA if (P_MobjWasRemoved(mobj)) return; // something already removing this mobj. mobj->thinker.function.acp1 = (actionf_p1)P_RemoveThinkerDelayed; // shh. no recursing. LUAh_MobjRemoved(mobj); mobj->thinker.function.acp1 = (actionf_p1)P_MobjThinker; // needed for P_UnsetThingPosition, etc. to work. -#else - I_Assert(!P_MobjWasRemoved(mobj)); -#endif // Rings only, please! if (mobj->spawnpoint && @@ -12710,7 +12681,6 @@ static boolean P_SetupBooster(mapthing_t* mthing, mobj_t* mobj, boolean strong) static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean *doangle) { -#ifdef HAVE_BLUA boolean override = LUAh_MapThingSpawn(mobj, mthing); if (P_MobjWasRemoved(mobj)) @@ -12718,7 +12688,6 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean if (override) return true; -#endif switch (mobj->type) { diff --git a/src/p_saveg.c b/src/p_saveg.c index e6c7d07fd..37d5f99ba 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -4183,8 +4183,6 @@ void P_SaveGame(void) { P_ArchiveMisc(); P_ArchivePlayer(); - - // yes, even in non HAVE_BLUA P_ArchiveLuabanksAndConsistency(); } @@ -4220,9 +4218,7 @@ void P_SaveNetGame(void) P_NetArchiveSpecials(); P_NetArchiveColormaps(); } -#ifdef HAVE_BLUA LUA_Archive(); -#endif P_ArchiveLuabanksAndConsistency(); } @@ -4264,9 +4260,7 @@ boolean P_LoadNetGame(void) P_RelinkPointers(); P_FinishMobjs(); } -#ifdef HAVE_BLUA LUA_UnArchive(); -#endif // This is stupid and hacky, but maybe it'll work! P_SetRandSeed(P_GetInitSeed()); diff --git a/src/p_setup.c b/src/p_setup.c index 766e82ca0..b3b86886f 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -57,9 +57,7 @@ #include "filesrch.h" // refreshdirmenu -#ifdef HAVE_BLUA #include "lua_hud.h" // level title -#endif #include "f_finale.h" // wipes @@ -3526,9 +3524,7 @@ boolean P_LoadLevel(boolean fromnetsave) // Close text prompt before freeing the old level F_EndTextPrompt(false, true); -#ifdef HAVE_BLUA LUA_InvalidateLevel(); -#endif for (ss = sectors; sectors+numsectors != ss; ss++) { @@ -3665,9 +3661,7 @@ boolean P_LoadLevel(boolean fromnetsave) G_CopyTiccmd(&players[i].cmd, &netcmds[buf][i], 1); } P_PreTicker(2); -#ifdef HAVE_BLUA LUAh_MapLoad(); -#endif } // No render mode, stop here. @@ -3859,10 +3853,8 @@ boolean P_AddWadFile(const char *wadfilename) // Update the detected resources. // Note: ALWAYS load Lua scripts first, SOCs right after, and the remaining resources afterwards. -#ifdef HAVE_BLUA // if (luaNum) // Lua scripts. // P_LoadLuaScrRange(wadnum, luaPos, luaNum); -#endif // if (socNum) // SOCs. // P_LoadDehackRange(wadnum, socPos, socNum); if (sfxNum) // Sounds. TODO: Function currently only updates already existing sounds, the rest is handled somewhere else. diff --git a/src/p_spec.c b/src/p_spec.c index aecdb3b98..8938a51b6 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -3366,14 +3366,10 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) } case 443: // Calls a named Lua function -#ifdef HAVE_BLUA if (line->text) LUAh_LinedefExecute(line, mo, callsec); else CONS_Alert(CONS_WARNING, "Linedef %s is missing the hook name of the Lua function to call! (This should be given in the front texture fields)\n", sizeu1(line-lines)); -#else - CONS_Alert(CONS_ERROR, "The map is trying to run a Lua script, but this exe was not compiled with Lua support!\n"); -#endif break; case 444: // Earthquake camera diff --git a/src/p_tick.c b/src/p_tick.c index 1d421ad37..7ea6edb2d 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -269,9 +269,7 @@ void P_RemoveThinkerDelayed(thinker_t *thinker) // void P_RemoveThinker(thinker_t *thinker) { -#ifdef HAVE_BLUA LUA_InvalidateUserdata(thinker); -#endif thinker->function.acp1 = (actionf_p1)P_RemoveThinkerDelayed; } @@ -643,9 +641,7 @@ void P_Ticker(boolean run) if (demoplayback) G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0); - #ifdef HAVE_BLUA LUAh_PreThinkFrame(); - #endif for (i = 0; i < MAXPLAYERS; i++) if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) @@ -671,9 +667,7 @@ void P_Ticker(boolean run) if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) P_PlayerAfterThink(&players[i]); -#ifdef HAVE_BLUA LUAh_ThinkFrame(); -#endif } // Run shield positioning @@ -745,9 +739,7 @@ void P_Ticker(boolean run) if (modeattacking) G_GhostTicker(); -#ifdef HAVE_BLUA LUAh_PostThinkFrame(); -#endif } P_MapEnd(); @@ -767,9 +759,8 @@ void P_PreTicker(INT32 frames) { P_MapStart(); -#ifdef HAVE_BLUA LUAh_PreThinkFrame(); -#endif + for (i = 0; i < MAXPLAYERS; i++) if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) { @@ -793,9 +784,7 @@ void P_PreTicker(INT32 frames) if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) P_PlayerAfterThink(&players[i]); -#ifdef HAVE_BLUA LUAh_ThinkFrame(); -#endif // Run shield positioning P_RunShields(); @@ -804,9 +793,7 @@ void P_PreTicker(INT32 frames) P_UpdateSpecials(); P_RespawnSpecials(); -#ifdef HAVE_BLUA LUAh_PostThinkFrame(); -#endif P_MapEnd(); } diff --git a/src/p_user.c b/src/p_user.c index 345da85ef..19b53e16f 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1109,7 +1109,6 @@ boolean P_PlayerCanDamage(player_t *player, mobj_t *thing) if (!player->mo || player->spectator || !thing || P_MobjWasRemoved(thing)) return false; -#ifdef HAVE_BLUA { UINT8 shouldCollide = LUAh_PlayerCanDamage(player, thing); if (P_MobjWasRemoved(thing)) @@ -1119,7 +1118,6 @@ boolean P_PlayerCanDamage(player_t *player, mobj_t *thing) else if (shouldCollide == 2) return false; // force no } -#endif // Invinc/super. Not for Monitors. if (!(thing->flags & MF_MONITOR) && (player->powers[pw_invulnerability] || player->powers[pw_super])) @@ -1521,7 +1519,7 @@ void P_PlayJingle(player_t *player, jingletype_t jingletype) char newmusic[7]; strncpy(newmusic, musname, 7); -#if defined(HAVE_BLUA) && defined(HAVE_LUA_MUSICPLUS) +#ifdef HAVE_LUA_MUSICPLUS if(LUAh_MusicJingle(jingletype, newmusic, &musflags, &looping)) return; #endif @@ -1602,10 +1600,8 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname) break; case JT_OTHER: // Other state -#ifdef HAVE_BLUA result = LUAh_ShouldJingleContinue(&players[i], musname); break; -#endif case JT_NONE: // Null state case JT_MASTER: // Main level music @@ -1870,10 +1866,8 @@ void P_SpawnShieldOrb(player_t *player) I_Error("P_SpawnShieldOrb: player->mo is NULL!\n"); #endif -#ifdef HAVE_BLUA if (LUAh_ShieldSpawn(player)) return; -#endif if (player->powers[pw_shield] & SH_FORCE) orbtype = MT_FORCE_ORB; @@ -4638,13 +4632,11 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd) && (player->pflags & PF_JUMPSTASIS || player->mo->state-states != S_PLAY_GLIDE_LANDING)) return; -#ifdef HAVE_BLUA if (cmd->buttons & BT_USE) { if (LUAh_SpinSpecial(player)) return; } -#endif #ifdef ESLOPE canstand = (!player->mo->standingslope || (player->mo->standingslope->flags & SL_NOPHYSICS) || abs(player->mo->standingslope->zdelta) < FRACUNIT/2); @@ -5130,11 +5122,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd) } } } - if (cmd->buttons & BT_USE // Spin button effects - #ifdef HAVE_BLUA - && !LUAh_ShieldSpecial(player) - #endif - ) + if (cmd->buttons & BT_USE && !LUAh_ShieldSpecial(player)) // Spin button effects { // Force stop if ((player->powers[pw_shield] & ~(SH_FORCEHP|SH_STACK)) == SH_FORCE) @@ -5212,51 +5200,48 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd) // and you don't have a shield, do it! P_DoSuperTransformation(player, false); } - else -#ifdef HAVE_BLUA - if (!LUAh_JumpSpinSpecial(player)) -#endif - switch (player->charability) - { - case CA_THOK: - if (player->powers[pw_super]) // Super Sonic float - { - if ((player->speed > 5*player->mo->scale) // FixedMul(5<mo->scale), but scale is FRACUNIT-based - && (P_MobjFlip(player->mo)*player->mo->momz <= 0)) + else if (!LUAh_JumpSpinSpecial(player)) + switch (player->charability) + { + case CA_THOK: + if (player->powers[pw_super]) // Super Sonic float { - if (player->panim != PA_RUN && player->panim != PA_WALK) + if ((player->speed > 5*player->mo->scale) // FixedMul(5<mo->scale), but scale is FRACUNIT-based + && (P_MobjFlip(player->mo)*player->mo->momz <= 0)) { - if (player->speed >= FixedMul(player->runspeed, player->mo->scale)) - P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT_RUN); - else - P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT); - } + if (player->panim != PA_RUN && player->panim != PA_WALK) + { + if (player->speed >= FixedMul(player->runspeed, player->mo->scale)) + P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT_RUN); + else + P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT); + } - player->mo->momz = 0; - player->pflags &= ~(PF_STARTJUMP|PF_SPINNING); + player->mo->momz = 0; + player->pflags &= ~(PF_STARTJUMP|PF_SPINNING); + } } - } - break; - case CA_TELEKINESIS: - if (!(player->pflags & (PF_THOKKED|PF_USEDOWN)) || (player->charflags & SF_MULTIABILITY)) - { - P_Telekinesis(player, - -FixedMul(player->actionspd, player->mo->scale), // -ve thrust (pulling towards player) - FixedMul(384*FRACUNIT, player->mo->scale)); - } - break; - case CA_TWINSPIN: - if ((player->charability2 == CA2_MELEE) && (!(player->pflags & (PF_THOKKED|PF_USEDOWN)) || player->charflags & SF_MULTIABILITY)) - { - player->pflags |= PF_THOKKED; - S_StartSound(player->mo, sfx_s3k42); - player->mo->frame = 0; - P_SetPlayerMobjState(player->mo, S_PLAY_TWINSPIN); - } - break; - default: - break; - } + break; + case CA_TELEKINESIS: + if (!(player->pflags & (PF_THOKKED|PF_USEDOWN)) || (player->charflags & SF_MULTIABILITY)) + { + P_Telekinesis(player, + -FixedMul(player->actionspd, player->mo->scale), // -ve thrust (pulling towards player) + FixedMul(384*FRACUNIT, player->mo->scale)); + } + break; + case CA_TWINSPIN: + if ((player->charability2 == CA2_MELEE) && (!(player->pflags & (PF_THOKKED|PF_USEDOWN)) || player->charflags & SF_MULTIABILITY)) + { + player->pflags |= PF_THOKKED; + S_StartSound(player->mo, sfx_s3k42); + player->mo->frame = 0; + P_SetPlayerMobjState(player->mo, S_PLAY_TWINSPIN); + } + break; + default: + break; + } } } @@ -5292,16 +5277,13 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd) if (cmd->buttons & BT_JUMP && !player->exiting && !P_PlayerInPain(player)) { -#ifdef HAVE_BLUA if (LUAh_JumpSpecial(player)) ; - else -#endif - if (player->pflags & PF_JUMPDOWN) // all situations below this require jump button not to be pressed already + // all situations below this require jump button not to be pressed already + else if (player->pflags & PF_JUMPDOWN) ; - else // Jump S3&K style while in quicksand. - if (P_InQuicksand(player->mo)) + else if (P_InQuicksand(player->mo)) { P_DoJump(player, true); player->secondjump = 0; @@ -5313,9 +5295,8 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd) P_SetTarget(&player->mo->tracer, NULL); player->powers[pw_flashing] = TICRATE/4; } - else // can't jump while in air, can't jump while jumping - if (onground || player->climbing || player->powers[pw_carry]) + else if (onground || player->climbing || player->powers[pw_carry]) { P_DoJump(player, true); player->secondjump = 0; @@ -5331,9 +5312,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd) }*/ else if (player->pflags & PF_JUMPED) { -#ifdef HAVE_BLUA if (!LUAh_AbilitySpecial(player)) -#endif switch (player->charability) { case CA_THOK: @@ -5528,30 +5507,28 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd) } else if (player->pflags & PF_THOKKED) { -#ifdef HAVE_BLUA if (!LUAh_AbilitySpecial(player)) -#endif - switch (player->charability) - { - case CA_FLY: - case CA_SWIM: // Swim - if (player->charability == CA_SWIM && !(player->mo->eflags & MFE_UNDERWATER)) - ; // Can't do anything if you're a fish out of water! - else if (player->powers[pw_tailsfly]) // If currently flying, give an ascend boost. - { - player->fly1 = 20; + switch (player->charability) + { + case CA_FLY: + case CA_SWIM: // Swim + if (player->charability == CA_SWIM && !(player->mo->eflags & MFE_UNDERWATER)) + ; // Can't do anything if you're a fish out of water! + else if (player->powers[pw_tailsfly]) // If currently flying, give an ascend boost. + { + player->fly1 = 20; - if (player->charability == CA_SWIM) - player->fly1 /= 2; + if (player->charability == CA_SWIM) + player->fly1 /= 2; - // Slow down! - if (player->speed > FixedMul(8*FRACUNIT, player->mo->scale) && player->speed > FixedMul(player->normalspeed>>1, player->mo->scale)) - P_Thrust(player->mo, R_PointToAngle2(0,0,player->mo->momx,player->mo->momy), FixedMul(-4*FRACUNIT, player->mo->scale)); - } - break; - default: - break; - } + // Slow down! + if (player->speed > FixedMul(8*FRACUNIT, player->mo->scale) && player->speed > FixedMul(player->normalspeed>>1, player->mo->scale)) + P_Thrust(player->mo, R_PointToAngle2(0,0,player->mo->momx,player->mo->momy), FixedMul(-4*FRACUNIT, player->mo->scale)); + } + break; + default: + break; + } } else if ((player->powers[pw_shield] & SH_NOSTACK) == SH_WHIRLWIND && !player->powers[pw_super]) P_DoJumpShield(player); @@ -10638,10 +10615,8 @@ boolean P_SpectatorJoinGame(player_t *player) else changeto = (P_RandomFixed() & 1) + 1; -#ifdef HAVE_BLUA if (!LUAh_TeamSwitch(player, changeto, true, false, false)) return false; -#endif if (player->mo) { @@ -10655,11 +10630,9 @@ boolean P_SpectatorJoinGame(player_t *player) //Reset away view if (P_IsLocalPlayer(player) && displayplayer != consoleplayer) { -#ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. LUAh_ViewpointSwitch(player, &players[consoleplayer], true); -#endif displayplayer = consoleplayer; } @@ -10677,10 +10650,8 @@ boolean P_SpectatorJoinGame(player_t *player) // respawn in place and sit there for the rest of the round. if (!((gametyperules & GTR_HIDEFROZEN) && leveltime > (hidetime * TICRATE))) { -#ifdef HAVE_BLUA if (!LUAh_TeamSwitch(player, 3, true, false, false)) return false; -#endif if (player->mo) { P_RemoveMobj(player->mo); @@ -10704,11 +10675,9 @@ boolean P_SpectatorJoinGame(player_t *player) //Reset away view if (P_IsLocalPlayer(player) && displayplayer != consoleplayer) { -#ifdef HAVE_BLUA // Call ViewpointSwitch hooks here. // The viewpoint was forcibly changed. LUAh_ViewpointSwitch(player, &players[consoleplayer], true); -#endif displayplayer = consoleplayer; } @@ -11631,9 +11600,7 @@ void P_PlayerThink(player_t *player) } if (player->playerstate == PST_REBORN) { -#ifdef HAVE_BLUA LUAh_PlayerThink(player); -#endif return; } } @@ -11737,9 +11704,7 @@ void P_PlayerThink(player_t *player) if (player->playerstate == PST_DEAD) { -#ifdef HAVE_BLUA LUAh_PlayerThink(player); -#endif return; } } @@ -11862,9 +11827,7 @@ void P_PlayerThink(player_t *player) { player->mo->flags2 &= ~MF2_SHADOW; P_DeathThink(player); -#ifdef HAVE_BLUA LUAh_PlayerThink(player); -#endif return; } @@ -11906,9 +11869,7 @@ void P_PlayerThink(player_t *player) { if (P_SpectatorJoinGame(player)) { -#ifdef HAVE_BLUA LUAh_PlayerThink(player); -#endif return; // player->mo was removed. } } @@ -12013,9 +11974,7 @@ void P_PlayerThink(player_t *player) if (!player->mo) { -#ifdef HAVE_BLUA LUAh_PlayerThink(player); -#endif return; // P_MovePlayer removed player->mo. } @@ -12457,9 +12416,7 @@ void P_PlayerThink(player_t *player) } #undef dashmode -#ifdef HAVE_BLUA LUAh_PlayerThink(player); -#endif /* // Colormap verification @@ -13009,11 +12966,9 @@ void P_PlayerAfterThink(player_t *player) if (player->followmobj) { -#ifdef HAVE_BLUA if (LUAh_FollowMobj(player, player->followmobj) || P_MobjWasRemoved(player->followmobj)) {;} else -#endif { switch (player->followmobj->type) { diff --git a/src/s_sound.c b/src/s_sound.c index 91345b3a2..0cc40a9ce 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -40,7 +40,7 @@ extern INT32 msg_id; #include "m_misc.h" // for tunes command #include "m_cond.h" // for conditionsets -#if defined(HAVE_BLUA) && defined(HAVE_LUA_MUSICPLUS) +#ifdef HAVE_LUA_MUSICPLUS #include "lua_hook.h" // MusicChange hook #endif @@ -2314,7 +2314,7 @@ void S_ChangeMusicEx(const char *mmusic, UINT16 mflags, boolean looping, UINT32 return; strncpy(newmusic, mmusic, 7); -#if defined(HAVE_BLUA) && defined(HAVE_LUA_MUSICPLUS) +#ifdef HAVE_LUA_MUSICPLUS if(LUAh_MusicChange(music_name, newmusic, &mflags, &looping, &position, &prefadems, &fadeinms)) return; #endif diff --git a/src/sdl/Srb2SDL-vc9.vcproj b/src/sdl/Srb2SDL-vc9.vcproj index 3898aeba4..9ef4301cc 100644 --- a/src/sdl/Srb2SDL-vc9.vcproj +++ b/src/sdl/Srb2SDL-vc9.vcproj @@ -50,7 +50,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="_DEBUG;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;USEASM;HAVE_PNG;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="_DEBUG;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;USEASM;HAVE_PNG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -145,7 +145,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="_DEBUG;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;HAVE_PNG;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="_DEBUG;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;HAVE_PNG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -248,7 +248,7 @@ FavorSizeOrSpeed="1" OmitFramePointers="true" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="NDEBUG;SDLMAIN;NO_STDIO_REDIRECT;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;USEASM;HAVE_PNG;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="NDEBUG;SDLMAIN;NO_STDIO_REDIRECT;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;USEASM;HAVE_PNG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" StringPooling="true" RuntimeLibrary="0" PrecompiledHeaderFile=".\..\..\objs\VC9\$(Platform)\$(Configuration)\SDL\Srb2SDL-vc9.pch" @@ -350,7 +350,7 @@ FavorSizeOrSpeed="1" OmitFramePointers="true" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="NDEBUG;SDLMAIN;NO_STDIO_REDIRECT;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;HAVE_PNG;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="NDEBUG;SDLMAIN;NO_STDIO_REDIRECT;USE_WGL_SWAP;DIRECTFULLSCREEN;HAVE_SDL;HWRENDER;HW3SOUND;HAVE_FILTER;HAVE_MIXER;HAVE_PNG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" StringPooling="true" RuntimeLibrary="0" PrecompiledHeaderFile=".\..\..\objs\VC9\$(Platform)\$(Configuration)\SDL\Srb2SDL-vc9.pch" diff --git a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj index b615bc1df..182220265 100644 --- a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj +++ b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj @@ -1272,7 +1272,6 @@ HAVE_SDL, HAVE_MIXER, HAVE_PNG, - HAVE_BLUA, LUA_USE_POSIX, COMPVERSION, HWRENDER, @@ -1395,7 +1394,6 @@ HAVE_SDL, HAVE_MIXER, HAVE_PNG, - HAVE_BLUA, LUA_USE_POSIX, COMPVERSION, HWRENDER, diff --git a/src/st_stuff.c b/src/st_stuff.c index 4864f2af6..ee7fc3f21 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -42,9 +42,7 @@ #include "hardware/hw_main.h" #endif -#ifdef HAVE_BLUA #include "lua_hud.h" -#endif UINT16 objectsdrawn = 0; @@ -969,11 +967,7 @@ static void ST_drawLivesArea(void) V_DrawThinString(hudinfo[HUD_LIVES].x+18, hudinfo[HUD_LIVES].y, v_colmap, skins[stplyr->skin].hudname); // Power Stones collected - if (G_RingSlingerGametype() -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_powerstones) -#endif - ) + if (G_RingSlingerGametype() && LUA_HudEnabled(hud_powerstones)) { INT32 workx = hudinfo[HUD_LIVES].x+1, j; if ((leveltime & 1) && stplyr->powers[pw_invulnerability] && (stplyr->powers[pw_sneakers] == stplyr->powers[pw_invulnerability])) // hack; extremely unlikely to be activated unintentionally @@ -1341,17 +1335,11 @@ void ST_drawTitleCard(void) if (!G_IsTitleCardAvailable()) return; -#ifdef HAVE_BLUA if (!LUA_HudEnabled(hud_stagetitle)) goto luahook; -#endif if (lt_ticker >= (lt_endtime + TICRATE)) -#ifdef HAVE_BLUA goto luahook; -#else - return; -#endif if ((lt_ticker-lt_lasttic) > 1) lt_ticker = lt_lasttic+1; @@ -1396,10 +1384,8 @@ void ST_drawTitleCard(void) lt_lasttic = lt_ticker; -#ifdef HAVE_BLUA luahook: LUAh_TitleCardHUD(stplyr); -#endif } // @@ -1444,7 +1430,7 @@ static void ST_drawPowerupHUD(void) if (stplyr->spectator || stplyr->playerstate != PST_LIVE) return; - + // --------- // Finish icon // --------- @@ -1785,11 +1771,7 @@ static void ST_drawNiGHTSHUD(void) const boolean oldspecialstage = (G_IsSpecialStage(gamemap) && !(maptol & TOL_NIGHTS)); // Drill meter - if ( -#ifdef HAVE_BLUA - LUA_HudEnabled(hud_nightsdrill) && -#endif - stplyr->powers[pw_carry] == CR_NIGHTSMODE) + if (LUA_HudEnabled(hud_nightsdrill) && stplyr->powers[pw_carry] == CR_NIGHTSMODE) { INT32 locx = 16, locy = 180; INT32 dfill; @@ -1831,9 +1813,7 @@ static void ST_drawNiGHTSHUD(void) if (!oldspecialstage // Don't display when the score is showing (it popping up for a split second when exiting a map is intentional) && !(stplyr->texttimer && stplyr->textvar == 4) -#ifdef HAVE_BLUA && LUA_HudEnabled(hud_nightslink) -#endif && ((cv_debug & DBG_NIGHTSBASIC) || stplyr->linkcount > 1)) // When debugging, show "0 Link". { ST_drawNiGHTSLink(); @@ -1847,10 +1827,8 @@ static void ST_drawNiGHTSHUD(void) } // Begin drawing brackets/chip display -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_nightsspheres)) { -#endif ST_DrawTopLeftOverlayPatch(16, 8, nbracket); if (G_IsSpecialStage(gamemap)) ST_DrawTopLeftOverlayPatch(24, 16, ( @@ -1987,24 +1965,14 @@ static void ST_drawNiGHTSHUD(void) V_DrawTallNum((total_spherecount >= 1000) ? 76 : 72, 8 + 11, V_PERPLAYER|V_SNAPTOTOP|V_SNAPTOLEFT|V_HUDTRANS, total_spherecount); else V_DrawTallNum(68, 8 + 11, V_PERPLAYER|V_SNAPTOTOP|V_SNAPTOLEFT|V_HUDTRANS, total_spherecount); -#ifdef HAVE_BLUA } -#endif // Score - if (!stplyr->exiting && !oldspecialstage -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_nightsscore) -#endif - ) + if (!stplyr->exiting && !oldspecialstage && LUA_HudEnabled(hud_nightsscore)) ST_DrawNightsOverlayNum(304<marescore, nightsnum, SKINCOLOR_AZURE); - if (!stplyr->exiting -#ifdef HAVE_BLUA // TODO give this its own section for Lua - && LUA_HudEnabled(hud_nightsscore) -#endif - ) + if (!stplyr->exiting && LUA_HudEnabled(hud_nightsscore)) { if (modeattacking == ATTACKING_NIGHTS) { @@ -2027,11 +1995,7 @@ static void ST_drawNiGHTSHUD(void) } // Ideya time remaining - if (!stplyr->exiting && stplyr->nightstime > 0 -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_nightstime) -#endif - ) + if (!stplyr->exiting && stplyr->nightstime > 0 && LUA_HudEnabled(hud_nightstime)) { INT32 realnightstime = stplyr->nightstime/TICRATE; INT32 numbersize; @@ -2122,10 +2086,8 @@ static void ST_drawNiGHTSHUD(void) } // Records/extra text -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_nightsrecords)) -#endif - ST_drawNightsRecords(); + ST_drawNightsRecords(); } } @@ -2403,20 +2365,16 @@ static void ST_drawTeamHUD(void) else p = bmatcico; -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_teamscores)) -#endif - V_DrawSmallScaledPatch(BASEVIDWIDTH/2 - SEP - SHORT(p->width)/4, 4, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, p); + V_DrawSmallScaledPatch(BASEVIDWIDTH/2 - SEP - SHORT(p->width)/4, 4, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, p); if (gametyperules & GTR_TEAMFLAGS) p = rflagico; else p = rmatcico; -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_teamscores)) -#endif - V_DrawSmallScaledPatch(BASEVIDWIDTH/2 + SEP - SHORT(p->width)/4, 4, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, p); + V_DrawSmallScaledPatch(BASEVIDWIDTH/2 + SEP - SHORT(p->width)/4, 4, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, p); if (!(gametyperules & GTR_TEAMFLAGS)) goto num; @@ -2427,18 +2385,12 @@ static void ST_drawTeamHUD(void) // Show which flags aren't at base. for (i = 0; i < MAXPLAYERS; i++) { - if (players[i].gotflag & GF_BLUEFLAG // Blue flag isn't at base -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_teamscores) -#endif - ) + // Blue flag isn't at base + if (players[i].gotflag & GF_BLUEFLAG && LUA_HudEnabled(hud_teamscores)) V_DrawScaledPatch(BASEVIDWIDTH/2 - SEP - SHORT(nonicon->width)/2, 0, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, nonicon); - if (players[i].gotflag & GF_REDFLAG // Red flag isn't at base -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_teamscores) -#endif - ) + // Red flag isn't at base + if (players[i].gotflag & GF_REDFLAG && LUA_HudEnabled(hud_teamscores)) V_DrawScaledPatch(BASEVIDWIDTH/2 + SEP - SHORT(nonicon2->width)/2, 0, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, nonicon2); whichflag |= players[i].gotflag; @@ -2449,32 +2401,20 @@ static void ST_drawTeamHUD(void) // Display a countdown timer showing how much time left until the flag returns to base. { - if (blueflag && blueflag->fuse > 1 -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_teamscores) -#endif - ) + if (blueflag && blueflag->fuse > 1 && LUA_HudEnabled(hud_teamscores)) V_DrawCenteredString(BASEVIDWIDTH/2 - SEP, 8, V_YELLOWMAP|V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, va("%u", (blueflag->fuse / TICRATE))); - if (redflag && redflag->fuse > 1 -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_teamscores) -#endif - ) + if (redflag && redflag->fuse > 1 && LUA_HudEnabled(hud_teamscores)) V_DrawCenteredString(BASEVIDWIDTH/2 + SEP, 8, V_YELLOWMAP|V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, va("%u", (redflag->fuse / TICRATE))); } } num: -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_teamscores)) -#endif - V_DrawCenteredString(BASEVIDWIDTH/2 - SEP, 16, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, va("%u", bluescore)); + V_DrawCenteredString(BASEVIDWIDTH/2 - SEP, 16, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, va("%u", bluescore)); -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_teamscores)) -#endif - V_DrawCenteredString(BASEVIDWIDTH/2 + SEP, 16, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, va("%u", redscore)); + V_DrawCenteredString(BASEVIDWIDTH/2 + SEP, 16, V_HUDTRANS|V_PERPLAYER|V_SNAPTOTOP, va("%u", redscore)); #undef SEP } @@ -2661,24 +2601,14 @@ static void ST_overlayDrawer(void) ST_drawNiGHTSHUD(); else { -#ifdef HAVE_BLUA if (LUA_HudEnabled(hud_score)) -#endif - ST_drawScore(); -#ifdef HAVE_BLUA + ST_drawScore(); if (LUA_HudEnabled(hud_time)) -#endif - ST_drawTime(); -#ifdef HAVE_BLUA + ST_drawTime(); if (LUA_HudEnabled(hud_rings)) -#endif - ST_drawRings(); + ST_drawRings(); - if (!modeattacking -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_lives) -#endif - ) + if (!modeattacking && LUA_HudEnabled(hud_lives)) ST_drawLivesArea(); } } @@ -2753,11 +2683,7 @@ static void ST_overlayDrawer(void) // Draw Match-related stuff //\note Match HUD is drawn no matter what gametype. // ... just not if you're a spectator. - if (!stplyr->spectator -#ifdef HAVE_BLUA - && (LUA_HudEnabled(hud_weaponrings)) -#endif - ) + if (!stplyr->spectator && LUA_HudEnabled(hud_weaponrings)) ST_drawMatchHUD(); // Race HUD Stuff @@ -2798,20 +2724,14 @@ static void ST_overlayDrawer(void) else if (!(netgame || multiplayer) && cv_powerupdisplay.value == 2) ST_drawPowerupHUD(); // same as it ever was... -#ifdef HAVE_BLUA if (!(netgame || multiplayer) || !hu_showscores) LUAh_GameHUD(stplyr); -#endif // draw level title Tails if (stagetitle && (!WipeInAction) && (!WipeStageTitle)) ST_drawTitleCard(); - if (!hu_showscores && (netgame || multiplayer) -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_textspectator) -#endif - ) + if (!hu_showscores && (netgame || multiplayer) && LUA_HudEnabled(hud_textspectator)) ST_drawTextHUD(); if (modeattacking && !(demoplayback && hu_showscores)) diff --git a/src/w_wad.c b/src/w_wad.c index e96afd050..f7ccc175b 100644 --- a/src/w_wad.c +++ b/src/w_wad.c @@ -189,7 +189,7 @@ FILE *W_OpenWadFile(const char **filename, boolean useerrors) static inline void W_LoadDehackedLumpsPK3(UINT16 wadnum, boolean mainfile) { UINT16 posStart, posEnd; -#ifdef HAVE_BLUA + posStart = W_CheckNumForFolderStartPK3("Lua/", wadnum, 0); if (posStart != INT16_MAX) { @@ -198,7 +198,7 @@ static inline void W_LoadDehackedLumpsPK3(UINT16 wadnum, boolean mainfile) for (; posStart < posEnd; posStart++) LUA_LoadLump(wadnum, posStart); } -#endif + posStart = W_CheckNumForFolderStartPK3("SOC/", wadnum, 0); if (posStart != INT16_MAX) { @@ -224,7 +224,6 @@ static inline void W_LoadDehackedLumps(UINT16 wadnum, boolean mainfile) { UINT16 lump; -#ifdef HAVE_BLUA // Find Lua scripts before SOCs to allow new A_Actions in SOC editing. { lumpinfo_t *lump_p = wadfiles[wadnum]->lumpinfo; @@ -232,7 +231,6 @@ static inline void W_LoadDehackedLumps(UINT16 wadnum, boolean mainfile) if (memcmp(lump_p->name,"LUA_",4)==0) LUA_LoadLump(wadnum, lump); } -#endif { lumpinfo_t *lump_p = wadfiles[wadnum]->lumpinfo; @@ -749,11 +747,9 @@ UINT16 W_InitFile(const char *filename, boolean mainfile, boolean startup) case RET_SOC: lumpinfo = ResGetLumpsStandalone(handle, &numlumps, "OBJCTCFG"); break; -#ifdef HAVE_BLUA case RET_LUA: lumpinfo = ResGetLumpsStandalone(handle, &numlumps, "LUA_INIT"); break; -#endif case RET_PK3: lumpinfo = ResGetLumpsZip(handle, &numlumps); break; @@ -818,11 +814,9 @@ UINT16 W_InitFile(const char *filename, boolean mainfile, boolean startup) CONS_Printf(M_GetText("Loading SOC from %s\n"), wadfile->filename); DEH_LoadDehackedLumpPwad(numwadfiles - 1, 0, mainfile); break; -#ifdef HAVE_BLUA case RET_LUA: LUA_LoadLump(numwadfiles - 1, 0); break; -#endif default: break; } @@ -1860,10 +1854,7 @@ static int W_VerifyFile(const char *filename, lumpchecklist_t *checklist, { // detect wad file by the absence of the other supported extensions if (stricmp(&filename[strlen(filename) - 4], ".soc") -#ifdef HAVE_BLUA - && stricmp(&filename[strlen(filename) - 4], ".lua") -#endif - ) + && stricmp(&filename[strlen(filename) - 4], ".lua")) { goodfile = W_VerifyWAD(handle, checklist, status); } diff --git a/src/win32/Srb2win-vc9.vcproj b/src/win32/Srb2win-vc9.vcproj index a64b8638c..4c17bb6f7 100644 --- a/src/win32/Srb2win-vc9.vcproj +++ b/src/win32/Srb2win-vc9.vcproj @@ -55,7 +55,7 @@ Optimization="0" OmitFramePointers="false" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="_DEBUG;_WINDOWS;USEASM;HAVE_PNG;COMPVERSION;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="_DEBUG;_WINDOWS;USEASM;HAVE_PNG;COMPVERSION;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" MinimalRebuild="true" RuntimeLibrary="1" EnableFunctionLevelLinking="true" @@ -153,7 +153,7 @@ Optimization="0" OmitFramePointers="false" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_PNG;COMPVERSION;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_PNG;COMPVERSION;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" MinimalRebuild="true" BasicRuntimeChecks="3" SmallerTypeCheck="true" @@ -256,7 +256,7 @@ FavorSizeOrSpeed="1" OmitFramePointers="true" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="NDEBUG;_WINDOWS;USEASM;HAVE_PNG;COMPVERSION;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="NDEBUG;_WINDOWS;USEASM;HAVE_PNG;COMPVERSION;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -356,7 +356,7 @@ FavorSizeOrSpeed="1" OmitFramePointers="true" AdditionalIncludeDirectories=""$(ProjectDir)..\..\libs\libpng-src";"$(ProjectDir)..\..\libs\zlib"" - PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_PNG;COMPVERSION;HAVE_BLUA;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_PNG;COMPVERSION;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" diff --git a/src/y_inter.c b/src/y_inter.c index 6f23ef1b1..94a289817 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -37,9 +37,7 @@ #include "m_cond.h" // condition sets #include "lua_hook.h" // IntermissionThinker hook -#ifdef HAVE_BLUA #include "lua_hud.h" -#endif #ifdef HWRENDER #include "hardware/hw_main.h" @@ -330,9 +328,7 @@ void Y_IntermissionDrawer(void) if (intertype == int_none) { -#ifdef HAVE_BLUA LUAh_IntermissionHUD(); -#endif return; } @@ -384,11 +380,9 @@ void Y_IntermissionDrawer(void) else V_DrawPatchFill(bgtile); -#ifdef HAVE_BLUA LUAh_IntermissionHUD(); if (!LUA_HudEnabled(hud_intermissiontally)) goto skiptallydrawer; -#endif dontdrawbg: if (intertype == int_coop) @@ -944,11 +938,9 @@ dontdrawbg: } } -#ifdef HAVE_BLUA skiptallydrawer: if (!LUA_HudEnabled(hud_intermissionmessages)) return; -#endif if (timer) V_DrawCenteredString(BASEVIDWIDTH/2, 188, V_YELLOWMAP, @@ -973,9 +965,7 @@ void Y_Ticker(void) if (paused || P_AutoPause()) return; -#ifdef HAVE_BLUA LUAh_IntermissionThinker(); -#endif intertic++; diff --git a/src/z_zone.c b/src/z_zone.c index 67bc2b519..96dcd0cba 100644 --- a/src/z_zone.c +++ b/src/z_zone.c @@ -217,11 +217,9 @@ void Z_Free(void *ptr) CONS_Debug(DBG_MEMORY, "Z_Free at %s:%d\n", file, line); #endif -#ifdef HAVE_BLUA // anything that isn't by lua gets passed to lua just in case. if (block->tag != PU_LUA) LUA_InvalidateUserdata(ptr); -#endif // TODO: if zdebugging, make sure no other block has a user // that is about to be freed. From a436ece941b9118565999b86eba97835a41fcc27 Mon Sep 17 00:00:00 2001 From: Louis-Antoine Date: Thu, 19 Mar 2020 19:26:46 +0100 Subject: [PATCH 41/41] Update CircleCI config --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 61e508e4d..8ecee2b19 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -51,8 +51,8 @@ jobs: - /var/cache/apt/archives - checkout - run: - name: Compile without network support and BLUA - command: make -C src LINUX=1 ERRORMODE=1 -k NONET=1 NO_LUA=1 + name: Compile without network support + command: make -C src LINUX=1 ERRORMODE=1 -k NONET=1 - run: name: wipe build command: make -C src LINUX=1 cleandep