mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-25 03:41:02 +00:00
Hard Mode is an unlockable
Unlocks at 30 emblems, or 100 matches played
This commit is contained in:
parent
6a0b1526b9
commit
001e2aa42c
5 changed files with 57 additions and 17 deletions
|
@ -1600,6 +1600,31 @@ void CV_AddValue(consvar_t *var, INT32 increment)
|
|||
return;
|
||||
}
|
||||
}
|
||||
else if (var == &cv_kartspeed)
|
||||
{
|
||||
INT32 maxspeed = (M_SecretUnlocked(SECRET_HARDSPEED) ? 2 : 1);
|
||||
// Special case for the kartspeed variable, used only directly from the menu to prevent selecting hard mode
|
||||
if (increment > 0) // Going up!
|
||||
{
|
||||
newvalue = var->value + 1;
|
||||
if (newvalue > maxspeed)
|
||||
newvalue = 0;
|
||||
var->value = newvalue;
|
||||
var->string = var->PossibleValue[var->value].strvalue;
|
||||
var->func();
|
||||
return;
|
||||
}
|
||||
else if (increment < 0) // Going down!
|
||||
{
|
||||
newvalue = var->value - 1;
|
||||
if (newvalue < 0)
|
||||
newvalue = maxspeed;
|
||||
var->value = newvalue;
|
||||
var->string = var->PossibleValue[var->value].strvalue;
|
||||
var->func();
|
||||
return;
|
||||
}
|
||||
}
|
||||
#ifdef PARANOIA
|
||||
if (currentindice == -1)
|
||||
I_Error("CV_AddValue: current value %d not found in possible value\n",
|
||||
|
|
|
@ -5233,6 +5233,13 @@ static void KartFrantic_OnChange(void)
|
|||
|
||||
static void KartSpeed_OnChange(void)
|
||||
{
|
||||
if (!M_SecretUnlocked(SECRET_HARDSPEED) && cv_kartspeed.value == 2)
|
||||
{
|
||||
CONS_Printf(M_GetText("You haven't earned this yet.\n"));
|
||||
CV_StealthSetValue(&cv_kartspeed, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (G_RaceGametype())
|
||||
{
|
||||
if ((UINT8)cv_kartspeed.value != gamespeed && gamestate == GS_LEVEL && leveltime > starttime)
|
||||
|
|
|
@ -2430,6 +2430,8 @@ static void readunlockable(MYFILE *f, INT32 num)
|
|||
unlockables[num].type = SECRET_ENCORE;
|
||||
else if (fastcmp(word2, "HELLATTACK"))
|
||||
unlockables[num].type = SECRET_HELLATTACK;
|
||||
else if (fastcmp(word2, "HARDSPEED"))
|
||||
unlockables[num].type = SECRET_HARDSPEED;
|
||||
else
|
||||
unlockables[num].type = (INT16)i;
|
||||
}
|
||||
|
|
33
src/m_cond.c
33
src/m_cond.c
|
@ -101,10 +101,11 @@ unlockable_t unlockables[MAXUNLOCKABLES] =
|
|||
/* 02 */ {"SMK Cup", "", -1, 2, SECRET_NONE, 0, false, false, 0},
|
||||
/* 03 */ {"Chao Cup", "", -1, 3, SECRET_NONE, 0, false, false, 0},
|
||||
|
||||
/* 04 */ {"Encore Mode", "", 3, 4, SECRET_ENCORE, 0, false, false, 0},
|
||||
/* 05 */ {"Hell Attack", "", 5, 5, SECRET_HELLATTACK, 0, false, false, 0},
|
||||
/* 04 */ {"Hard Game Speed", "", -1, 4, SECRET_HARDSPEED, 0, false, false, 0},
|
||||
/* 05 */ {"Encore Mode", "", 4, 5, SECRET_ENCORE, 0, false, false, 0},
|
||||
/* 06 */ {"Hell Attack", "", 6, 6, SECRET_HELLATTACK, 0, false, false, 0},
|
||||
|
||||
/* 06 */ {"Record Attack", "", -1, -1, SECRET_RECORDATTACK, 0, true, true, 0},
|
||||
/* 07 */ {"Record Attack", "", -1, -1, SECRET_RECORDATTACK, 0, true, true, 0},
|
||||
};
|
||||
|
||||
// Default number of emblems and extra emblems
|
||||
|
@ -120,23 +121,27 @@ void M_SetupDefaultConditionSets(void)
|
|||
M_AddRawCondition(1, 1, UC_TOTALEMBLEMS, 5, 0, 0);
|
||||
M_AddRawCondition(1, 2, UC_MATCHESPLAYED, 10, 0, 0);
|
||||
|
||||
// -- 2: Collect 15 emblems OR play 25 matches
|
||||
M_AddRawCondition(2, 1, UC_TOTALEMBLEMS, 15, 0, 0);
|
||||
// -- 2: Collect 10 emblems OR play 25 matches
|
||||
M_AddRawCondition(2, 1, UC_TOTALEMBLEMS, 10, 0, 0);
|
||||
M_AddRawCondition(2, 2, UC_MATCHESPLAYED, 25, 0, 0);
|
||||
|
||||
// -- 3: Collect 30 emblems OR play 50 matches
|
||||
M_AddRawCondition(3, 1, UC_TOTALEMBLEMS, 30, 0, 0);
|
||||
// -- 3: Collect 20 emblems OR play 50 matches
|
||||
M_AddRawCondition(3, 1, UC_TOTALEMBLEMS, 20, 0, 0);
|
||||
M_AddRawCondition(3, 2, UC_MATCHESPLAYED, 50, 0, 0);
|
||||
|
||||
// -- 4: Collect 40 emblems OR play 150 matches
|
||||
M_AddRawCondition(4, 1, UC_TOTALEMBLEMS, 40, 0, 0);
|
||||
M_AddRawCondition(4, 2, UC_MATCHESPLAYED, 150, 0, 0);
|
||||
// -- 4: Collect 30 emblems OR play 100 matches
|
||||
M_AddRawCondition(4, 1, UC_TOTALEMBLEMS, 30, 0, 0);
|
||||
M_AddRawCondition(4, 2, UC_MATCHESPLAYED, 100, 0, 0);
|
||||
|
||||
// -- 5: Collect 50 emblems ONLY
|
||||
M_AddRawCondition(5, 1, UC_TOTALEMBLEMS, 50, 0, 0);
|
||||
// -- 5: Collect 40 emblems OR play 150 matches
|
||||
M_AddRawCondition(5, 1, UC_TOTALEMBLEMS, 40, 0, 0);
|
||||
M_AddRawCondition(5, 2, UC_MATCHESPLAYED, 150, 0, 0);
|
||||
|
||||
// -- 10: Play 100 matches
|
||||
M_AddRawCondition(10, 1, UC_MATCHESPLAYED, 100, 0, 0);
|
||||
// -- 6: Collect 50 emblems ONLY
|
||||
M_AddRawCondition(6, 1, UC_TOTALEMBLEMS, 50, 0, 0);
|
||||
|
||||
// -- 10: Play 300 matches
|
||||
M_AddRawCondition(10, 1, UC_MATCHESPLAYED, 300, 0, 0);
|
||||
}
|
||||
|
||||
void M_AddRawCondition(UINT8 set, UINT8 id, conditiontype_t c, INT32 r, INT16 x1, INT16 x2)
|
||||
|
|
|
@ -113,7 +113,7 @@ typedef struct
|
|||
} unlockable_t;
|
||||
|
||||
// I have NO idea why these are going negative, but whatever.
|
||||
#define SECRET_NONE -6 // Does nil. Use with levels locked by UnlockRequired
|
||||
#define SECRET_NONE -6 // Does nil. Use with levels locked by UnlockRequired
|
||||
#define SECRET_ITEMFINDER -5 // Enables Item Finder/Emblem Radar
|
||||
#define SECRET_EMBLEMHINTS -4 // Enables Emblem Hints
|
||||
#define SECRET_PANDORA -3 // Enables Pandora's Box
|
||||
|
@ -124,8 +124,9 @@ typedef struct
|
|||
#define SECRET_WARP 2 // Selectable warp
|
||||
#define SECRET_SOUNDTEST 3 // Sound Test
|
||||
#define SECRET_CREDITS 4 // Enables Credits
|
||||
#define SECRET_ENCORE 5 // Enables Encore mode cvar
|
||||
#define SECRET_HELLATTACK 6 // Map Hell in record attack
|
||||
#define SECRET_ENCORE 5 // Enables Encore mode cvar
|
||||
#define SECRET_HELLATTACK 6 // Map Hell in record attack
|
||||
#define SECRET_HARDSPEED 7 // Enables Hard gamespeed
|
||||
|
||||
// If you have more secrets than these variables allow in your game,
|
||||
// you seriously need to get a life.
|
||||
|
|
Loading…
Reference in a new issue