mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-26 04:11:18 +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;
|
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
|
#ifdef PARANOIA
|
||||||
if (currentindice == -1)
|
if (currentindice == -1)
|
||||||
I_Error("CV_AddValue: current value %d not found in possible value\n",
|
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)
|
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 (G_RaceGametype())
|
||||||
{
|
{
|
||||||
if ((UINT8)cv_kartspeed.value != gamespeed && gamestate == GS_LEVEL && leveltime > starttime)
|
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;
|
unlockables[num].type = SECRET_ENCORE;
|
||||||
else if (fastcmp(word2, "HELLATTACK"))
|
else if (fastcmp(word2, "HELLATTACK"))
|
||||||
unlockables[num].type = SECRET_HELLATTACK;
|
unlockables[num].type = SECRET_HELLATTACK;
|
||||||
|
else if (fastcmp(word2, "HARDSPEED"))
|
||||||
|
unlockables[num].type = SECRET_HARDSPEED;
|
||||||
else
|
else
|
||||||
unlockables[num].type = (INT16)i;
|
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},
|
/* 02 */ {"SMK Cup", "", -1, 2, SECRET_NONE, 0, false, false, 0},
|
||||||
/* 03 */ {"Chao Cup", "", -1, 3, 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},
|
/* 04 */ {"Hard Game Speed", "", -1, 4, SECRET_HARDSPEED, 0, false, false, 0},
|
||||||
/* 05 */ {"Hell Attack", "", 5, 5, SECRET_HELLATTACK, 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
|
// 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, 1, UC_TOTALEMBLEMS, 5, 0, 0);
|
||||||
M_AddRawCondition(1, 2, UC_MATCHESPLAYED, 10, 0, 0);
|
M_AddRawCondition(1, 2, UC_MATCHESPLAYED, 10, 0, 0);
|
||||||
|
|
||||||
// -- 2: Collect 15 emblems OR play 25 matches
|
// -- 2: Collect 10 emblems OR play 25 matches
|
||||||
M_AddRawCondition(2, 1, UC_TOTALEMBLEMS, 15, 0, 0);
|
M_AddRawCondition(2, 1, UC_TOTALEMBLEMS, 10, 0, 0);
|
||||||
M_AddRawCondition(2, 2, UC_MATCHESPLAYED, 25, 0, 0);
|
M_AddRawCondition(2, 2, UC_MATCHESPLAYED, 25, 0, 0);
|
||||||
|
|
||||||
// -- 3: Collect 30 emblems OR play 50 matches
|
// -- 3: Collect 20 emblems OR play 50 matches
|
||||||
M_AddRawCondition(3, 1, UC_TOTALEMBLEMS, 30, 0, 0);
|
M_AddRawCondition(3, 1, UC_TOTALEMBLEMS, 20, 0, 0);
|
||||||
M_AddRawCondition(3, 2, UC_MATCHESPLAYED, 50, 0, 0);
|
M_AddRawCondition(3, 2, UC_MATCHESPLAYED, 50, 0, 0);
|
||||||
|
|
||||||
// -- 4: Collect 40 emblems OR play 150 matches
|
// -- 4: Collect 30 emblems OR play 100 matches
|
||||||
M_AddRawCondition(4, 1, UC_TOTALEMBLEMS, 40, 0, 0);
|
M_AddRawCondition(4, 1, UC_TOTALEMBLEMS, 30, 0, 0);
|
||||||
M_AddRawCondition(4, 2, UC_MATCHESPLAYED, 150, 0, 0);
|
M_AddRawCondition(4, 2, UC_MATCHESPLAYED, 100, 0, 0);
|
||||||
|
|
||||||
// -- 5: Collect 50 emblems ONLY
|
// -- 5: Collect 40 emblems OR play 150 matches
|
||||||
M_AddRawCondition(5, 1, UC_TOTALEMBLEMS, 50, 0, 0);
|
M_AddRawCondition(5, 1, UC_TOTALEMBLEMS, 40, 0, 0);
|
||||||
|
M_AddRawCondition(5, 2, UC_MATCHESPLAYED, 150, 0, 0);
|
||||||
|
|
||||||
// -- 10: Play 100 matches
|
// -- 6: Collect 50 emblems ONLY
|
||||||
M_AddRawCondition(10, 1, UC_MATCHESPLAYED, 100, 0, 0);
|
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)
|
void M_AddRawCondition(UINT8 set, UINT8 id, conditiontype_t c, INT32 r, INT16 x1, INT16 x2)
|
||||||
|
|
|
@ -113,7 +113,7 @@ typedef struct
|
||||||
} unlockable_t;
|
} unlockable_t;
|
||||||
|
|
||||||
// I have NO idea why these are going negative, but whatever.
|
// 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_ITEMFINDER -5 // Enables Item Finder/Emblem Radar
|
||||||
#define SECRET_EMBLEMHINTS -4 // Enables Emblem Hints
|
#define SECRET_EMBLEMHINTS -4 // Enables Emblem Hints
|
||||||
#define SECRET_PANDORA -3 // Enables Pandora's Box
|
#define SECRET_PANDORA -3 // Enables Pandora's Box
|
||||||
|
@ -124,8 +124,9 @@ typedef struct
|
||||||
#define SECRET_WARP 2 // Selectable warp
|
#define SECRET_WARP 2 // Selectable warp
|
||||||
#define SECRET_SOUNDTEST 3 // Sound Test
|
#define SECRET_SOUNDTEST 3 // Sound Test
|
||||||
#define SECRET_CREDITS 4 // Enables Credits
|
#define SECRET_CREDITS 4 // Enables Credits
|
||||||
#define SECRET_ENCORE 5 // Enables Encore mode cvar
|
#define SECRET_ENCORE 5 // Enables Encore mode cvar
|
||||||
#define SECRET_HELLATTACK 6 // Map Hell in record attack
|
#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,
|
// If you have more secrets than these variables allow in your game,
|
||||||
// you seriously need to get a life.
|
// you seriously need to get a life.
|
||||||
|
|
Loading…
Reference in a new issue