summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/port/Game.cpp8
-rw-r--r--src/racing/race_logic.c4
2 files changed, 12 insertions, 0 deletions
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<OLakitu>(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;