diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c index c094243c6..1d17faf5c 100644 --- a/polymer/eduke32/source/gamedef.c +++ b/polymer/eduke32/source/gamedef.c @@ -4514,8 +4514,10 @@ static int32_t C_ParseCommand(int32_t loop) g_scriptPtr--; j = *g_scriptPtr; - C_GetNextValue(LABEL_DEFINE); - g_scriptPtr--; + int32_t flags = 0; + do + C_BitOrNextValue(&flags); + while (C_GetKeyword() == -1); if (EDUKE32_PREDICT_FALSE((unsigned)j >= MAXTILES)) { @@ -4524,7 +4526,7 @@ static int32_t C_ParseCommand(int32_t loop) continue; } - g_tile[j].flags = *g_scriptPtr; + g_tile[j].flags = flags; continue; } diff --git a/polymer/eduke32/source/lunatic/lunacon.lua b/polymer/eduke32/source/lunatic/lunacon.lua index 1f5ee04a3..f185aec7b 100644 --- a/polymer/eduke32/source/lunatic/lunacon.lua +++ b/polymer/eduke32/source/lunatic/lunacon.lua @@ -1305,6 +1305,7 @@ function Cmd.xspriteflags(tilenum, flags, override) contprintf(false, "at %s %d:%d", loc[1], loc[2], loc[3]) end + -- Mark the last 'spriteflags' or 'sprite*' directive for the given actor. g_code.aflagsloc[tilenum] = getLocation(format("'%s' for actor", g_lastkw), pos) if (ffi and ok) then @@ -1840,8 +1841,8 @@ local Couter = { spriteshadow = cmd(D) / function(tilenum, flags) Cmd.xspriteflags(tilenum, conl.SFLAG.SFLAG_SHADOW) end, - spriteflags = cmd(D,D) -- also see inner - / function(tilenum, flags) Cmd.xspriteflags(tilenum, flags, true) end, + spriteflags = (sp1 * tok.define)^2 -- also see inner + / function(tilenum, ...) Cmd.xspriteflags(tilenum, bit.bor(...), true) end, --- 4. Game Variables / Arrays gamevar = cmd(I,D,D)