diff --git a/src/port/Game.cpp b/src/port/Game.cpp index 9a492f6b3..e5ac7f45c 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -669,6 +669,14 @@ void CM_SpawnStarterLakitu() { } for (size_t i = 0; i < gPlayerCountSelection1; i++) { + // Retry does not respawn actors, therefore, re-use lakitu. + if (auto it = GetWorld()->Lakitus.find(i); it != GetWorld()->Lakitus.end()) { + if (it->second) { + it->second->Activate(OLakitu::STARTER); + } + continue; // Already exists, skip spawning + } + auto lakitu = std::make_unique(i, OLakitu::LakituType::STARTER); GetWorld()->Lakitus[i] = lakitu.get(); GetWorld()->AddObject(std::move(lakitu)); diff --git a/src/racing/race_logic.c b/src/racing/race_logic.c index ff95ecc88..2cfda0cea 100644 --- a/src/racing/race_logic.c +++ b/src/racing/race_logic.c @@ -1054,6 +1054,7 @@ UNUSED void func_80290314(void) { gTourComplete = false; } +// Quit void func_80290338(void) { gIsInQuitToMenuTransition = 1; gQuitToMenuTransitionCounter = 5; @@ -1061,6 +1062,7 @@ void func_80290338(void) { gTourComplete = false; } +// Driver Change void func_80290360(void) { gIsInQuitToMenuTransition = 1; gQuitToMenuTransitionCounter = 5; @@ -1068,6 +1070,7 @@ void func_80290360(void) { gTourComplete = false; } +// Course Change void func_80290388(void) { gIsInQuitToMenuTransition = 1; gQuitToMenuTransitionCounter = 5; @@ -1075,6 +1078,7 @@ void func_80290388(void) { gTourComplete = false; } +// Retry void func_802903B0(void) { gIsInQuitToMenuTransition = 1; gQuitToMenuTransitionCounter = 5;