From 9ba5a97aa445258b30137adcd88914e6cc50caf0 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sun, 18 Dec 2022 01:00:28 -0500 Subject: [PATCH] Set actual firstDist for Special Stages Fixes wild roulette speed --- src/k_roulette.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/k_roulette.c b/src/k_roulette.c index 4b1897de4..e0bc3c325 100644 --- a/src/k_roulette.c +++ b/src/k_roulette.c @@ -897,19 +897,36 @@ static void K_InitRoulette(itemroulette_t *const roulette) roulette->exiting++; } - if (players[i].position == 1) + if (specialStage.active == true) { - roulette->firstDist = K_UndoMapScaling(players[i].distancetofinish); + UINT32 dis = K_UndoMapScaling(players[i].distancetofinish); + if (dis < roulette->secondDist) + { + roulette->secondDist = dis; + } } - - if (players[i].position == 2) + else { - roulette->secondDist = K_UndoMapScaling(players[i].distancetofinish); + if (players[i].position == 1) + { + roulette->firstDist = K_UndoMapScaling(players[i].distancetofinish); + } + + if (players[i].position == 2) + { + roulette->secondDist = K_UndoMapScaling(players[i].distancetofinish); + } } } + if (specialStage.active == true) + { + roulette->firstDist = K_UndoMapScaling(K_GetSpecialUFODistance()); + } + // Calculate 2nd's distance from 1st, for SPB - if (roulette->firstDist != UINT32_MAX && roulette->secondDist != UINT32_MAX) + if (roulette->firstDist != UINT32_MAX && roulette->secondDist != UINT32_MAX + && roulette->secondDist > roulette->firstDist) { roulette->secondToFirst = roulette->secondDist - roulette->firstDist; roulette->secondToFirst = K_ScaleItemDistance(roulette->secondToFirst, 16 - roulette->playing); // Reversed scaling