Goner setup polish

- Checkpoint sound for reaching a new option
- Fix header text for Video and Sound menus
- Reset password field access when menu is reset by gamedata wipe
This commit is contained in:
toaster 2023-12-04 12:09:22 +00:00
parent e91115a8fa
commit 36c3dbfc0e

View file

@ -14,9 +14,7 @@
menuitem_t MAIN_Goner[] = menuitem_t MAIN_Goner[] =
{ {
{IT_STRING | IT_CVAR | IT_CV_STRING, ". . .", {IT_STRING | IT_CALL, NULL, NULL, NULL, {.routine = M_QuitSRB2}, 0, 0}, // will be replaced
"ATTEMPT ADMINISTRATOR ACCESS.", NULL,
{.cvar = &cv_dummyextraspassword}, 0, 0},
{IT_STRING | IT_CALL, "VIDEO OPTIONS", {IT_STRING | IT_CALL, "VIDEO OPTIONS",
"CONFIGURE OCULAR PATHWAYS.", NULL, "CONFIGURE OCULAR PATHWAYS.", NULL,
@ -153,7 +151,6 @@ std::forward_list<GonerChatLine> LinesToDigest;
std::forward_list<GonerChatLine> LinesOutput; std::forward_list<GonerChatLine> LinesOutput;
int goner_levelworking = GDGONER_INIT; int goner_levelworking = GDGONER_INIT;
bool goner_nicetry = false;
bool goner_gdq = false; bool goner_gdq = false;
void M_AddGonerLines(void) void M_AddGonerLines(void)
@ -169,7 +166,7 @@ void M_AddGonerLines(void)
// This one always plays, so it checks the levelworking instead of gamedata. // This one always plays, so it checks the levelworking instead of gamedata.
if (goner_levelworking == GDGONER_INTRO) if (goner_levelworking == GDGONER_INTRO)
{ {
if (!goner_nicetry) if (!currentMenu->menuitems[0].mvar2)
{ {
LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, 0, LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, 0,
"Metal Sonic. Are you online?"); "Metal Sonic. Are you online?");
@ -261,12 +258,12 @@ void M_AddGonerLines(void)
LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE/4, LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE/4,
"We made a machine together, Tails and I. "\ "We made a machine together, Tails and I. "\
"It's called a \"""\x82""Ring Racer""\x80""\"."); "It's called a \"""\x82""Ring Racer""\x80""\".");
LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE/2, LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE,
"At its core, it is designed to utilise the boundless potential "\ "At its core, it is designed to utilise the boundless potential "\
"of the ""\x83""High Voltage Ring""\x80""."); "of the ""\x83""High Voltage Ring""\x80"".");
LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE, LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE,
"We made this special Ring by combining the power of tens of "\ "We made this special ""\x83""Ring""\x80"" by combining the power of tens of "\
"thousands of ordinary ""\x82""Rings""\x80""."); "thousands of ordinary ""\x82""Rings""\x80"".");
LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE/2, LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE/2,
"We recorded some of our testing for you, MS-1. Maybe your neural "\ "We recorded some of our testing for you, MS-1. Maybe your neural "\
@ -293,11 +290,11 @@ void M_AddGonerLines(void)
"Bragging rights. My idea!"); "Bragging rights. My idea!");
LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE/2, LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE/2,
"You can make the name on there anything you want."); "You can make the ID and player tag on there anything you want.");
LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE/2, LinesToDigest.emplace_front(GONERSPEAKER_TAILS, TICRATE/2,
"Mine says \"Nine Tails\". That's the name of my original character! "\ "Mine says \"Nine Tails\". That's the name of my original character! "\
"He's like me if I never met my ""\x84""brother""\x80"". He'd have to become stronger "\ "He's like me if I never met my ""\x84""brother""\x80"". He'd use cool "\
"with robotics, and kind of mean and cool to protect himself..."); "robotics, but be kind of mean to protect himself...");
LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE/5, LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE/5,
"Mine says \"Robotnik\". You can't beat a classic."); "Mine says \"Robotnik\". You can't beat a classic.");
@ -356,7 +353,7 @@ void M_GonerRailroad(bool set)
return; return;
itemOn = destsize-1; itemOn = destsize-1;
S_StartSound(NULL, sfx_s3k5b); S_StartSound(NULL, sfx_s3k63);
} }
void M_GonerHidePassword(void) void M_GonerHidePassword(void)
@ -368,6 +365,8 @@ void M_GonerHidePassword(void)
{IT_STRING | IT_CALL, "EXIT PROGRAM", {IT_STRING | IT_CALL, "EXIT PROGRAM",
"CONCLUDE OBSERVATIONS NOW.", NULL, "CONCLUDE OBSERVATIONS NOW.", NULL,
{.routine = M_QuitSRB2}, 0, 1}; {.routine = M_QuitSRB2}, 0, 1};
S_StartSound(NULL, sfx_s3k5b);
} }
}; // namespace }; // namespace
@ -385,6 +384,12 @@ void M_GonerResetLooking(int type)
goner_lasttypelooking = static_cast<gdgoner_t>(type); goner_lasttypelooking = static_cast<gdgoner_t>(type);
goner_youactuallylooked = 0; goner_youactuallylooked = 0;
if (type == GDGONER_VIDEO)
OPTIONS_MainDef.lastOn = mopt_video;
else if (type == GDGONER_SOUND)
OPTIONS_MainDef.lastOn = mopt_sound;
else
OPTIONS_MainDef.lastOn = mopt_profiles;
} }
void M_GonerCheckLooking(void) void M_GonerCheckLooking(void)
@ -422,7 +427,12 @@ void M_GonerTick(void)
if (first) if (first)
{ {
first = false; first = goner_gdq = false;
currentMenu->menuitems[0] =
{IT_STRING | IT_CVAR | IT_CV_STRING, ". . .",
"ATTEMPT ADMINISTRATOR ACCESS.", NULL,
{.cvar = &cv_dummyextraspassword}, 0, 0};
if (gamedata->gonerlevel < GDGONER_INTRO) if (gamedata->gonerlevel < GDGONER_INTRO)
gamedata->gonerlevel = GDGONER_INTRO; gamedata->gonerlevel = GDGONER_INTRO;
@ -446,7 +456,6 @@ void M_GonerTick(void)
LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE, LinesToDigest.emplace_front(GONERSPEAKER_EGGMAN, TICRATE,
"Aha! Nice try. You're tricky enough WITHOUT admin access, thank you."); "Aha! Nice try. You're tricky enough WITHOUT admin access, thank you.");
M_GonerHidePassword(); M_GonerHidePassword();
goner_nicetry = true;
} }
CV_StealthSet(&cv_dummyextraspassword, ""); CV_StealthSet(&cv_dummyextraspassword, "");
@ -612,7 +621,7 @@ void M_GonerTutorial(INT32 choice)
&M_QuitResponse, MM_YESNO, "I agree", "Cancel"); &M_QuitResponse, MM_YESNO, "I agree", "Cancel");
} }
gamedata->gonerlevel = GDGONER_DONE; goner_levelworking = gamedata->gonerlevel = GDGONER_DONE;
} }
void M_GonerGDQ(boolean opinion) void M_GonerGDQ(boolean opinion)