mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-04 07:52:22 +00:00
"TutorialDone" unlockable condition
Replace all instances of `MapBeaten RR_SunbeamParadiseSprings` with `TutorialDone`, for the new early exits to work.
This commit is contained in:
parent
8ae80a58b9
commit
2c5caf582b
6 changed files with 39 additions and 18 deletions
|
|
@ -2952,7 +2952,8 @@ static void readcondition(UINT16 set, UINT32 id, char *word2)
|
||||||
|| (++offset && fastcmp(params[0], "CREDITS"))
|
|| (++offset && fastcmp(params[0], "CREDITS"))
|
||||||
|| (++offset && fastcmp(params[0], "REPLAY"))
|
|| (++offset && fastcmp(params[0], "REPLAY"))
|
||||||
|| (++offset && fastcmp(params[0], "CRASH"))
|
|| (++offset && fastcmp(params[0], "CRASH"))
|
||||||
|| (++offset && fastcmp(params[0], "TUTORIALSKIP")))
|
|| (++offset && fastcmp(params[0], "TUTORIALSKIP"))
|
||||||
|
|| (++offset && fastcmp(params[0], "TUTORIALDONE")))
|
||||||
{
|
{
|
||||||
//PARAMCHECK(1);
|
//PARAMCHECK(1);
|
||||||
ty = UC_ADDON + offset;
|
ty = UC_ADDON + offset;
|
||||||
|
|
|
||||||
41
src/g_game.c
41
src/g_game.c
|
|
@ -4853,27 +4853,36 @@ void G_EndGame(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only do evaluation and credits in singleplayer contexts
|
// Only do evaluation and credits in singleplayer contexts
|
||||||
if (!netgame && grandprixinfo.gp == true)
|
if (!netgame)
|
||||||
{
|
{
|
||||||
G_HandleSaveLevel(true);
|
if (gametype == GT_TUTORIAL)
|
||||||
|
|
||||||
if (nextmap == NEXTMAP_CEREMONY) // end game with ceremony
|
|
||||||
{
|
{
|
||||||
if (K_StartCeremony() == true)
|
// Tutorial was finished
|
||||||
|
gamedata->tutorialdone = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grandprixinfo.gp == true)
|
||||||
|
{
|
||||||
|
G_HandleSaveLevel(true);
|
||||||
|
|
||||||
|
if (nextmap == NEXTMAP_CEREMONY) // end game with ceremony
|
||||||
{
|
{
|
||||||
|
if (K_StartCeremony() == true)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nextmap == NEXTMAP_CREDITS) // end game with credits
|
||||||
|
{
|
||||||
|
F_StartCredits();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (nextmap == NEXTMAP_EVALUATION) // end game with evaluation
|
||||||
|
{
|
||||||
|
F_InitGameEvaluation();
|
||||||
|
F_StartGameEvaluation();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (nextmap == NEXTMAP_CREDITS) // end game with credits
|
|
||||||
{
|
|
||||||
F_StartCredits();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (nextmap == NEXTMAP_EVALUATION) // end game with evaluation
|
|
||||||
{
|
|
||||||
F_InitGameEvaluation();
|
|
||||||
F_StartGameEvaluation();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ void srb2::save_ng_gamedata()
|
||||||
ng.milestones.finishedtutorialchallenge = gamedata->finishedtutorialchallenge;
|
ng.milestones.finishedtutorialchallenge = gamedata->finishedtutorialchallenge;
|
||||||
ng.milestones.enteredtutorialchallenge = gamedata->enteredtutorialchallenge;
|
ng.milestones.enteredtutorialchallenge = gamedata->enteredtutorialchallenge;
|
||||||
ng.milestones.sealedswapalerted = gamedata->sealedswapalerted;
|
ng.milestones.sealedswapalerted = gamedata->sealedswapalerted;
|
||||||
|
ng.milestones.tutorialdone = gamedata->tutorialdone;
|
||||||
ng.milestones.gonerlevel = gamedata->gonerlevel;
|
ng.milestones.gonerlevel = gamedata->gonerlevel;
|
||||||
ng.prisons.thisprisoneggpickup = gamedata->thisprisoneggpickup;
|
ng.prisons.thisprisoneggpickup = gamedata->thisprisoneggpickup;
|
||||||
ng.prisons.prisoneggstothispickup = gamedata->prisoneggstothispickup;
|
ng.prisons.prisoneggstothispickup = gamedata->prisoneggstothispickup;
|
||||||
|
|
@ -480,6 +481,7 @@ void srb2::load_ng_gamedata()
|
||||||
gamedata->finishedtutorialchallenge = js.milestones.finishedtutorialchallenge;
|
gamedata->finishedtutorialchallenge = js.milestones.finishedtutorialchallenge;
|
||||||
gamedata->enteredtutorialchallenge = js.milestones.enteredtutorialchallenge;
|
gamedata->enteredtutorialchallenge = js.milestones.enteredtutorialchallenge;
|
||||||
gamedata->sealedswapalerted = js.milestones.sealedswapalerted;
|
gamedata->sealedswapalerted = js.milestones.sealedswapalerted;
|
||||||
|
gamedata->tutorialdone = js.milestones.tutorialdone;
|
||||||
gamedata->gonerlevel = js.milestones.gonerlevel;
|
gamedata->gonerlevel = js.milestones.gonerlevel;
|
||||||
gamedata->thisprisoneggpickup = js.prisons.thisprisoneggpickup;
|
gamedata->thisprisoneggpickup = js.prisons.thisprisoneggpickup;
|
||||||
gamedata->prisoneggstothispickup = js.prisons.prisoneggstothispickup;
|
gamedata->prisoneggstothispickup = js.prisons.prisoneggstothispickup;
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ struct GamedataMilestonesJson final
|
||||||
bool finishedtutorialchallenge;
|
bool finishedtutorialchallenge;
|
||||||
bool enteredtutorialchallenge;
|
bool enteredtutorialchallenge;
|
||||||
bool sealedswapalerted;
|
bool sealedswapalerted;
|
||||||
|
bool tutorialdone;
|
||||||
|
|
||||||
NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(
|
||||||
GamedataMilestonesJson,
|
GamedataMilestonesJson,
|
||||||
|
|
@ -108,7 +109,8 @@ struct GamedataMilestonesJson final
|
||||||
majorkeyskipattempted,
|
majorkeyskipattempted,
|
||||||
finishedtutorialchallenge,
|
finishedtutorialchallenge,
|
||||||
enteredtutorialchallenge,
|
enteredtutorialchallenge,
|
||||||
sealedswapalerted
|
sealedswapalerted,
|
||||||
|
tutorialdone
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -676,6 +676,7 @@ void M_ClearStats(void)
|
||||||
gamedata->enteredtutorialchallenge = false;
|
gamedata->enteredtutorialchallenge = false;
|
||||||
gamedata->finishedtutorialchallenge = false;
|
gamedata->finishedtutorialchallenge = false;
|
||||||
gamedata->sealedswapalerted = false;
|
gamedata->sealedswapalerted = false;
|
||||||
|
gamedata->tutorialdone = false;
|
||||||
gamedata->musicstate = GDMUSIC_NONE;
|
gamedata->musicstate = GDMUSIC_NONE;
|
||||||
|
|
||||||
gamedata->importprofilewins = false;
|
gamedata->importprofilewins = false;
|
||||||
|
|
@ -1726,6 +1727,8 @@ boolean M_CheckCondition(condition_t *cn, player_t *player)
|
||||||
return false;
|
return false;
|
||||||
case UC_TUTORIALSKIP:
|
case UC_TUTORIALSKIP:
|
||||||
return (gamedata->finishedtutorialchallenge == true);
|
return (gamedata->finishedtutorialchallenge == true);
|
||||||
|
case UC_TUTORIALDONE:
|
||||||
|
return (gamedata->tutorialdone == true);
|
||||||
case UC_PASSWORD:
|
case UC_PASSWORD:
|
||||||
return (cn->stringvar == NULL);
|
return (cn->stringvar == NULL);
|
||||||
|
|
||||||
|
|
@ -2605,6 +2608,8 @@ static const char *M_GetConditionString(condition_t *cn)
|
||||||
return NULL;
|
return NULL;
|
||||||
case UC_TUTORIALSKIP:
|
case UC_TUTORIALSKIP:
|
||||||
return "successfully skip the Tutorial";
|
return "successfully skip the Tutorial";
|
||||||
|
case UC_TUTORIALDONE:
|
||||||
|
return "complete the Tutorial";
|
||||||
case UC_PASSWORD:
|
case UC_PASSWORD:
|
||||||
return "enter a secret password";
|
return "enter a secret password";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ typedef enum
|
||||||
UC_REPLAY, // Save a replay
|
UC_REPLAY, // Save a replay
|
||||||
UC_CRASH, // Hee ho !
|
UC_CRASH, // Hee ho !
|
||||||
UC_TUTORIALSKIP, // Complete the Tutorial Challenge
|
UC_TUTORIALSKIP, // Complete the Tutorial Challenge
|
||||||
|
UC_TUTORIALDONE, // Complete the Tutorial at all
|
||||||
|
|
||||||
UC_PASSWORD, // Type in something funny
|
UC_PASSWORD, // Type in something funny
|
||||||
|
|
||||||
|
|
@ -393,6 +394,7 @@ struct gamedata_t
|
||||||
boolean enteredtutorialchallenge;
|
boolean enteredtutorialchallenge;
|
||||||
boolean finishedtutorialchallenge;
|
boolean finishedtutorialchallenge;
|
||||||
boolean sealedswapalerted;
|
boolean sealedswapalerted;
|
||||||
|
boolean tutorialdone;
|
||||||
gdmusic_t musicstate;
|
gdmusic_t musicstate;
|
||||||
|
|
||||||
UINT8 gonerlevel;
|
UINT8 gonerlevel;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue