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);
|
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->pendingkeyrounds + gamedata->pendingkeyroundoffset)/GDCONVERT_ROUNDSTOKEY) > gamedata->keyspending)
|
||||||
{
|
{
|
||||||
gamedata->keyspending++;
|
gamedata->keyspending++;
|
||||||
|
|
@ -1662,7 +1667,7 @@ UINT16 M_GetNextAchievedUnlock(void)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gamedata->keyspending > 0)
|
if (gamedata->keyspending != 0)
|
||||||
{
|
{
|
||||||
return PENDING_CHAOKEYS;
|
return PENDING_CHAOKEYS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -334,13 +334,17 @@ void M_ChallengesTick(void)
|
||||||
; // recreate the slight delay the unlock fades provide
|
; // recreate the slight delay the unlock fades provide
|
||||||
else if (gamedata->pendingkeyrounds == 0)
|
else if (gamedata->pendingkeyrounds == 0)
|
||||||
{
|
{
|
||||||
|
gamedata->keyspending = 0;
|
||||||
|
gamedata->pendingkeyroundoffset %= GDCONVERT_ROUNDSTOKEY;
|
||||||
|
|
||||||
challengesmenu.chaokeyadd = false;
|
challengesmenu.chaokeyadd = false;
|
||||||
challengesmenu.requestnew = true;
|
challengesmenu.requestnew = true;
|
||||||
}
|
}
|
||||||
else if ((gamedata->chaokeys + gamedata->usedkeys) >= GDMAX_CHAOKEYS)
|
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->pendingkeyrounds = 0;
|
||||||
|
gamedata->pendingkeyroundoffset = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue