Fix restoration of delayed linedef executors in P_NetUnArchiveThinkers for real

This commit is contained in:
MascaraSnake 2019-10-19 14:51:24 +02:00
parent c7fd22f98a
commit 73c39990f9

View file

@ -3612,21 +3612,21 @@ static void P_NetUnArchiveThinkers(void)
} }
CONS_Debug(DBG_NETPLAY, "%u thinkers loaded in list %d\n", numloaded, i); CONS_Debug(DBG_NETPLAY, "%u thinkers loaded in list %d\n", numloaded, i);
}
if (restoreNum) if (restoreNum)
{
executor_t *delay = NULL;
UINT32 mobjnum;
for (currentthinker = thlist[THINK_MAIN].next; currentthinker != &thlist[THINK_MAIN];
currentthinker = currentthinker->next)
{ {
executor_t *delay = NULL; if (currentthinker->function.acp1 != (actionf_p1)T_ExecutorDelay)
UINT32 mobjnum; continue;
for (currentthinker = thlist[i].next; currentthinker != &thlist[i]; delay = (void *)currentthinker;
currentthinker = currentthinker->next) if (!(mobjnum = (UINT32)(size_t)delay->caller))
{ continue;
if (currentthinker->function.acp1 != (actionf_p1)T_ExecutorDelay) delay->caller = P_FindNewPosition(mobjnum);
continue;
delay = (void *)currentthinker;
if (!(mobjnum = (UINT32)(size_t)delay->caller))
continue;
delay->caller = P_FindNewPosition(mobjnum);
}
} }
} }
} }