From e9205e19d67e64a05e3400b5a2a42fc2a9238e96 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 30 Mar 2024 15:56:44 +0000 Subject: [PATCH] ACS_RunPlayerEnterScript: If betweenmaps, defer until P_PostLoadLevel Guarantees that the ENTER script actually consistently runs, since previously it was happening before ACS scope invalidation --- src/g_game.c | 13 ++----------- src/p_setup.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index 03e286d80..7f421ddf8 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2519,9 +2519,9 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) } } - if (p->spectator == false) + if (p->spectator == false && !betweenmaps) { - if (betweenmaps || enteredGame == true) + if (enteredGame == true) { ACS_RunPlayerEnterScript(p); } @@ -2530,15 +2530,6 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) ACS_RunPlayerRespawnScript(p); } } - - if (betweenmaps) - return; - - if (leveltime < starttime) - return; - - if (exiting) - return; } // diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 180e6fc39..78927211b 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -8892,6 +8892,16 @@ void P_PostLoadLevel(void) ACS_RunLevelStartScripts(); LUA_HookInt(gamemap, HOOK(MapLoad)); + UINT8 i; + for (i = 0; i < MAXPLAYERS; i++) + { + if (!playeringame[i]) + continue; + if (players[i].spectator) + continue; + ACS_RunPlayerEnterScript(&players[i]); + } + P_MapEnd(); // We're now done loading the level.