mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Fix some softlock circumstances caused by the Chao Key system
- Nonzero keys pending, but zero pending rounds - Nonzero keys pending, but too many keys already earned
This commit is contained in:
parent
5b48c52b65
commit
107acf34d3
2 changed files with 12 additions and 3 deletions
|
|
@ -1569,7 +1569,12 @@ boolean M_UpdateUnlockablesAndExtraEmblems(boolean loud, boolean doall)
|
|||
{
|
||||
response = M_CheckUnlockConditions(NULL);
|
||||
|
||||
while ((gamedata->keyspending + gamedata->chaokeys + gamedata->usedkeys) < GDMAX_CHAOKEYS
|
||||
if (gamedata->pendingkeyrounds == 0
|
||||
|| ((gamedata->chaokeys + gamedata->usedkeys) >= GDMAX_CHAOKEYS))
|
||||
{
|
||||
gamedata->keyspending = 0;
|
||||
}
|
||||
else while ((gamedata->keyspending + gamedata->chaokeys + gamedata->usedkeys) < GDMAX_CHAOKEYS
|
||||
&& ((gamedata->pendingkeyrounds + gamedata->pendingkeyroundoffset)/GDCONVERT_ROUNDSTOKEY) > gamedata->keyspending)
|
||||
{
|
||||
gamedata->keyspending++;
|
||||
|
|
@ -1662,7 +1667,7 @@ UINT16 M_GetNextAchievedUnlock(void)
|
|||
return i;
|
||||
}
|
||||
|
||||
if (gamedata->keyspending > 0)
|
||||
if (gamedata->keyspending != 0)
|
||||
{
|
||||
return PENDING_CHAOKEYS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -334,13 +334,17 @@ void M_ChallengesTick(void)
|
|||
; // recreate the slight delay the unlock fades provide
|
||||
else if (gamedata->pendingkeyrounds == 0)
|
||||
{
|
||||
gamedata->keyspending = 0;
|
||||
gamedata->pendingkeyroundoffset %= GDCONVERT_ROUNDSTOKEY;
|
||||
|
||||
challengesmenu.chaokeyadd = false;
|
||||
challengesmenu.requestnew = true;
|
||||
}
|
||||
else if ((gamedata->chaokeys + gamedata->usedkeys) >= GDMAX_CHAOKEYS)
|
||||
{
|
||||
gamedata->keyspending = 0;
|
||||
// The above condition will run on the next tic because of this set
|
||||
gamedata->pendingkeyrounds = 0;
|
||||
gamedata->pendingkeyroundoffset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue