mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-01-13 05:11:01 +00:00
Make sure target sector's lightlist is reset whenever FOF flags are changed.
This fixes how removing certain flags (such as FF_EXISTS) from FOFs can cause HOMs on walls bordering their target sectors. Also fixes how the force-FOF-to-vanish linedef special can leave behind the FOF's shadow
This commit is contained in:
parent
6655e92410
commit
c7ba1d1532
2 changed files with 12 additions and 1 deletions
|
@ -1111,9 +1111,13 @@ static int ffloor_set(lua_State *L)
|
||||||
case ffloor_bottompic:
|
case ffloor_bottompic:
|
||||||
*ffloor->bottompic = P_AddLevelFlatRuntime(luaL_checkstring(L, 3));
|
*ffloor->bottompic = P_AddLevelFlatRuntime(luaL_checkstring(L, 3));
|
||||||
break;
|
break;
|
||||||
case ffloor_flags:
|
case ffloor_flags: {
|
||||||
|
ffloortype_e oldflags = ffloor->flags; // store FOF's old flags
|
||||||
ffloor->flags = luaL_checkinteger(L, 3);
|
ffloor->flags = luaL_checkinteger(L, 3);
|
||||||
|
if (ffloor->flags != oldflags)
|
||||||
|
ffloor->target->moved = true; // reset target sector's lightlist
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case ffloor_alpha:
|
case ffloor_alpha:
|
||||||
ffloor->alpha = (INT32)luaL_checkinteger(L, 3);
|
ffloor->alpha = (INT32)luaL_checkinteger(L, 3);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -3039,6 +3039,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
||||||
INT16 foftag = (INT16)(sides[line->sidenum[0]].rowoffset>>FRACBITS);
|
INT16 foftag = (INT16)(sides[line->sidenum[0]].rowoffset>>FRACBITS);
|
||||||
sector_t *sec; // Sector that the FOF is visible (or not visible) in
|
sector_t *sec; // Sector that the FOF is visible (or not visible) in
|
||||||
ffloor_t *rover; // FOF to vanish/un-vanish
|
ffloor_t *rover; // FOF to vanish/un-vanish
|
||||||
|
ffloortype_e oldflags; // store FOF's old flags
|
||||||
|
|
||||||
for (secnum = -1; (secnum = P_FindSectorFromTag(sectag, secnum)) >= 0 ;)
|
for (secnum = -1; (secnum = P_FindSectorFromTag(sectag, secnum)) >= 0 ;)
|
||||||
{
|
{
|
||||||
|
@ -3062,11 +3063,17 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oldflags = rover->flags;
|
||||||
|
|
||||||
// Abracadabra!
|
// Abracadabra!
|
||||||
if (line->flags & ML_NOCLIMB)
|
if (line->flags & ML_NOCLIMB)
|
||||||
rover->flags |= FF_EXISTS;
|
rover->flags |= FF_EXISTS;
|
||||||
else
|
else
|
||||||
rover->flags &= ~FF_EXISTS;
|
rover->flags &= ~FF_EXISTS;
|
||||||
|
|
||||||
|
// if flags changed, reset sector's light list
|
||||||
|
if (rover->flags != oldflags)
|
||||||
|
sec->moved = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue