diff --git a/src/k_tally.cpp b/src/k_tally.cpp index 877e39dd1..4f3886d1c 100644 --- a/src/k_tally.cpp +++ b/src/k_tally.cpp @@ -37,6 +37,7 @@ #include "g_party.h" #include "g_input.h" #include "k_objects.h" +#include "k_director.h" boolean level_tally_t::UseBonuses(void) { @@ -781,6 +782,24 @@ void level_tally_t::Tick(void) return; } + if (done == true) + { + if (directorWait < TALLY_DIRECTOR_TIME) + { + directorWait++; + + if (directorWait == TALLY_DIRECTOR_TIME && G_IsPartyLocal(owner - players) == true) + { + // Finished tally, go to director while we wait for others to finish. + K_ToggleDirector(G_PartyPosition(owner - players), true); + } + } + } + else + { + directorWait = 0; + } + if (transition < FRACUNIT) { if (transitionTime <= 0) diff --git a/src/k_tally.h b/src/k_tally.h index 335a74979..1fcac8919 100644 --- a/src/k_tally.h +++ b/src/k_tally.h @@ -57,6 +57,8 @@ typedef enum TALLY_ST_GAMEOVER_DONE, } tally_state_e; +#define TALLY_DIRECTOR_TIME (2 * TICRATE) + struct level_tally_t { boolean active; @@ -97,6 +99,7 @@ struct level_tally_t boolean showGrade; boolean done; boolean releasedFastForward; + INT32 directorWait; #ifdef __cplusplus boolean UseBonuses(void);