Add expert speed
This commit is contained in:
parent
d34a40601c
commit
a3367858b8
11 changed files with 67 additions and 9 deletions
|
|
@ -85,6 +85,7 @@ CV_PossibleValue_t kartspeed_cons_t[] = {
|
|||
{KARTSPEED_EASY, "Easy"},
|
||||
{KARTSPEED_NORMAL, "Normal"},
|
||||
{KARTSPEED_HARD, "Hard"},
|
||||
{KARTSPEED_EXPERT, "Expert"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
|
|
@ -2268,7 +2269,7 @@ void CV_AddValue(consvar_t *var, INT32 increment)
|
|||
}
|
||||
if ((var == &cv_kartspeed || var == &cv_kartbattlespeed) && !M_SecretUnlocked(SECRET_HARDSPEED))
|
||||
{
|
||||
max = (M_SecretUnlocked(SECRET_HARDSPEED) ? 4 : 3);
|
||||
max = (M_SecretUnlocked(SECRET_HARDSPEED) ? 5 : 3);
|
||||
}
|
||||
#ifdef PARANOIA
|
||||
if (currentindice == -1)
|
||||
|
|
|
|||
|
|
@ -179,7 +179,9 @@ extern CV_PossibleValue_t CV_Natural[];
|
|||
#define KARTSPEED_EASY 0
|
||||
#define KARTSPEED_NORMAL 1
|
||||
#define KARTSPEED_HARD 2
|
||||
#define KARTGP_MASTER 3 // Not a speed setting, gives the hardest speed with maxed out bots
|
||||
#define KARTSPEED_EXPERT 3
|
||||
#define KARTGP_MASTER 4 // Not a speed setting, gives hard speed with maxed out bots
|
||||
#define KARTGP_NIGHTMARE 5 // Not a speed setting, gives expert speed with maxed out bots
|
||||
extern CV_PossibleValue_t kartspeed_cons_t[];
|
||||
|
||||
extern consvar_t cv_execversion;
|
||||
|
|
|
|||
|
|
@ -1675,7 +1675,7 @@ void D_SRB2Main(void)
|
|||
// Start up a "minor" grand prix session
|
||||
memset(&grandprixinfo, 0, sizeof(struct grandprixinfo));
|
||||
|
||||
grandprixinfo.gamespeed = KARTSPEED_NORMAL;
|
||||
grandprixinfo.gamespeed = KARTSPEED_HARD;
|
||||
grandprixinfo.encore = false;
|
||||
grandprixinfo.masterbots = false;
|
||||
|
||||
|
|
@ -1833,11 +1833,16 @@ void D_SRB2Main(void)
|
|||
const char *sskill = M_GetNextParm();
|
||||
|
||||
const char *masterstr = "Master";
|
||||
const char *nightmarestr = "NIGHTMARE";
|
||||
|
||||
if (!strcasecmp(masterstr, sskill))
|
||||
{
|
||||
newskill = KARTGP_MASTER;
|
||||
}
|
||||
else if (!strcasecmp(nightmarestr, sskill))
|
||||
{
|
||||
newskill = KARTGP_NIGHTMARE;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (j = 0; kartspeed_cons_t[j].strvalue; j++)
|
||||
|
|
@ -1852,7 +1857,7 @@ void D_SRB2Main(void)
|
|||
if (!kartspeed_cons_t[j].strvalue) // reached end of the list with no match
|
||||
{
|
||||
j = atoi(sskill); // assume they gave us a skill number, which is okay too
|
||||
if (j >= KARTSPEED_EASY && j <= KARTGP_MASTER)
|
||||
if (j >= KARTSPEED_EASY && j <= KARTGP_NIGHTMARE)
|
||||
newskill = (INT16)j;
|
||||
}
|
||||
}
|
||||
|
|
@ -1864,6 +1869,11 @@ void D_SRB2Main(void)
|
|||
grandprixinfo.masterbots = true;
|
||||
newskill = KARTSPEED_HARD;
|
||||
}
|
||||
else if (newskill == KARTGP_NIGHTMARE)
|
||||
{
|
||||
grandprixinfo.masterbots = true;
|
||||
newskill = KARTSPEED_EXPERT;
|
||||
}
|
||||
|
||||
grandprixinfo.gamespeed = newskill;
|
||||
}
|
||||
|
|
@ -1871,6 +1881,10 @@ void D_SRB2Main(void)
|
|||
{
|
||||
newskill = KARTSPEED_HARD;
|
||||
}
|
||||
else if (newskill == KARTGP_NIGHTMARE)
|
||||
{
|
||||
newskill = KARTSPEED_EXPERT;
|
||||
}
|
||||
|
||||
if (newskill != -1)
|
||||
CV_SetValue(&cv_kartspeed, newskill);
|
||||
|
|
|
|||
|
|
@ -457,6 +457,7 @@ consvar_t cv_kartstacking_accelstack = CVAR_INIT ("kartstacking_accelstack", "Of
|
|||
consvar_t cv_kartstacking_sneaker_easyspeedboost = CVAR_INIT ("vanillaboost_sneaker_easyspeedboost", "0.8317", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL);
|
||||
consvar_t cv_kartstacking_sneaker_normalspeedboost = CVAR_INIT ("vanillaboost_sneaker_normalspeedboost", "0.5", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL);
|
||||
consvar_t cv_kartstacking_sneaker_hardspeedboost = CVAR_INIT ("vanillaboost_sneaker_hardspeedboost", "0.2756", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL);
|
||||
consvar_t cv_kartstacking_sneaker_expertspeedboost = CVAR_INIT ("vanillaboost_sneaker_expertspeedboost", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL);
|
||||
consvar_t cv_kartstacking_sneaker_accelboost = CVAR_INIT ("vanillaboost_sneaker_accelboost", "8.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL);
|
||||
consvar_t cv_kartstacking_sneaker_maxgrade = CVAR_INIT ("vanillaboost_sneaker_maxgrade", "3", CV_NETVAR|CV_CHEAT, CV_Natural, NULL);
|
||||
consvar_t cv_kartstacking_sneaker_stackable = CVAR_INIT ("vanillaboost_sneaker_stackable", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
|
|
@ -3137,6 +3138,7 @@ static void Command_Map_f(void)
|
|||
if (option_skill)
|
||||
{
|
||||
const char *masterstr = "Master";
|
||||
const char *nightmarestr = "NIGHTMARE";
|
||||
const char *skillname = COM_Argv(option_skill + 1);
|
||||
INT32 newskill = -1;
|
||||
INT32 j;
|
||||
|
|
@ -3145,6 +3147,10 @@ static void Command_Map_f(void)
|
|||
{
|
||||
newskill = KARTGP_MASTER;
|
||||
}
|
||||
else if (!strcasecmp(nightmarestr, skillname))
|
||||
{
|
||||
newskill = KARTGP_NIGHTMARE;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (j = 0; kartspeed_cons_t[j].strvalue; j++)
|
||||
|
|
@ -3159,7 +3165,7 @@ static void Command_Map_f(void)
|
|||
if (!kartspeed_cons_t[j].strvalue) // reached end of the list with no match
|
||||
{
|
||||
INT32 num = atoi(COM_Argv(option_skill + 1)); // assume they gave us a skill number, which is okay too
|
||||
if (num >= KARTSPEED_EASY && num <= KARTGP_MASTER)
|
||||
if (num >= KARTSPEED_EASY && num <= KARTGP_NIGHTMARE)
|
||||
newskill = (INT16)num;
|
||||
}
|
||||
}
|
||||
|
|
@ -3171,6 +3177,11 @@ static void Command_Map_f(void)
|
|||
grandprixinfo.gamespeed = KARTSPEED_HARD;
|
||||
grandprixinfo.masterbots = true;
|
||||
}
|
||||
else if (newskill == KARTGP_NIGHTMARE)
|
||||
{
|
||||
grandprixinfo.gamespeed = KARTSPEED_EXPERT;
|
||||
grandprixinfo.masterbots = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
grandprixinfo.gamespeed = newskill;
|
||||
|
|
@ -7031,7 +7042,7 @@ static void KartFrantic_OnChange(void)
|
|||
|
||||
static void KartSpeed_OnChange(void)
|
||||
{
|
||||
if (!M_SecretUnlocked(SECRET_HARDSPEED) && cv_kartspeed.value == KARTSPEED_HARD)
|
||||
if (!M_SecretUnlocked(SECRET_HARDSPEED) && (cv_kartspeed.value == KARTSPEED_HARD || cv_kartspeed.value == KARTSPEED_EXPERT))
|
||||
{
|
||||
CONS_Printf(M_GetText("You haven't earned this yet.\n"));
|
||||
CV_StealthSet(&cv_kartspeed, cv_kartspeed.defaultvalue);
|
||||
|
|
@ -7056,7 +7067,7 @@ static void KartSpeed_OnChange(void)
|
|||
|
||||
static void KartBattleSpeed_OnChange(void)
|
||||
{
|
||||
if (!M_SecretUnlocked(SECRET_HARDSPEED) && cv_kartbattlespeed.value == KARTSPEED_HARD)
|
||||
if (!M_SecretUnlocked(SECRET_HARDSPEED) && ((cv_kartbattlespeed.value == KARTSPEED_HARD) || (cv_kartbattlespeed.value == KARTSPEED_EXPERT)))
|
||||
{
|
||||
CONS_Printf(M_GetText("You haven't earned this yet.\n"));
|
||||
CV_StealthSet(&cv_kartspeed, cv_kartspeed.defaultvalue);
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ extern consvar_t cv_kartstacking_accelstack;
|
|||
extern consvar_t cv_kartstacking_sneaker_easyspeedboost;
|
||||
extern consvar_t cv_kartstacking_sneaker_normalspeedboost;
|
||||
extern consvar_t cv_kartstacking_sneaker_hardspeedboost;
|
||||
extern consvar_t cv_kartstacking_sneaker_expertspeedboost;
|
||||
extern consvar_t cv_kartstacking_sneaker_accelboost;
|
||||
extern consvar_t cv_kartstacking_sneaker_maxgrade;
|
||||
extern consvar_t cv_kartstacking_sneaker_stackable;
|
||||
|
|
|
|||
|
|
@ -1545,6 +1545,7 @@ struct int_const_s const INT_CONST[] = {
|
|||
{"KARTSPEED_EASY", KARTSPEED_EASY},
|
||||
{"KARTSPEED_NORMAL", KARTSPEED_NORMAL},
|
||||
{"KARTSPEED_HARD", KARTSPEED_HARD},
|
||||
{"KARTSPEED_EXPERT", KARTSPEED_EXPERT},
|
||||
|
||||
// Custom client features exposed to lua
|
||||
{"FEATURE_INTERMISSIONHUD",1}, // This is to trick kart luas that look for this since its already here.
|
||||
|
|
|
|||
|
|
@ -297,6 +297,7 @@ void K_RegisterKartStuff(void)
|
|||
CV_RegisterVar(&cv_kartstacking_sneaker_easyspeedboost);
|
||||
CV_RegisterVar(&cv_kartstacking_sneaker_normalspeedboost);
|
||||
CV_RegisterVar(&cv_kartstacking_sneaker_hardspeedboost);
|
||||
CV_RegisterVar(&cv_kartstacking_sneaker_expertspeedboost);
|
||||
CV_RegisterVar(&cv_kartstacking_sneaker_accelboost);
|
||||
CV_RegisterVar(&cv_kartstacking_sneaker_maxgrade);
|
||||
CV_RegisterVar(&cv_kartstacking_sneaker_stackable);
|
||||
|
|
@ -3495,6 +3496,9 @@ static inline fixed_t K_GetProjectileSpeed(void)
|
|||
case KARTSPEED_HARD:
|
||||
return 96*mapobjectscale; // Avg Speed is 48
|
||||
break;
|
||||
case KARTSPEED_EXPERT:
|
||||
return 110*mapobjectscale; // Avg Speed is 62
|
||||
break;
|
||||
default:
|
||||
return 82*mapobjectscale; // Avg Speed is 41
|
||||
break;
|
||||
|
|
@ -3511,6 +3515,9 @@ static inline fixed_t K_GetSneakerBoostSpeed(void)
|
|||
case KARTSPEED_HARD:
|
||||
return HARDSNEAKERSPEEDBOOST;
|
||||
break;
|
||||
case KARTSPEED_EXPERT:
|
||||
return EXPERTSNEAKERSPEEDBOOST;
|
||||
break;
|
||||
default:
|
||||
return NORMALSNEAKERSPEEDBOOST;
|
||||
break;
|
||||
|
|
@ -5040,6 +5047,8 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing,
|
|||
PROJSPEED = FixedMul(PROJSPEED, FRACUNIT-FRACUNIT/4);
|
||||
else if (gamespeed == KARTSPEED_HARD)
|
||||
PROJSPEED = FixedMul(PROJSPEED, FRACUNIT+FRACUNIT/4);
|
||||
else if (gamespeed == KARTSPEED_EXPERT)
|
||||
PROJSPEED = FixedMul(PROJSPEED, FRACUNIT+FRACUNIT/2);
|
||||
PROJSPEED = FixedMul(PROJSPEED, mapobjectscale);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ Make sure this matches the actual number of states
|
|||
#define EASYSNEAKERSPEEDBOOST K_RAGuard(cv_kartstacking_sneaker_easyspeedboost)
|
||||
#define NORMALSNEAKERSPEEDBOOST K_RAGuard(cv_kartstacking_sneaker_normalspeedboost)
|
||||
#define HARDSNEAKERSPEEDBOOST K_RAGuard(cv_kartstacking_sneaker_hardspeedboost)
|
||||
#define EXPERTSNEAKERSPEEDBOOST K_RAGuard(cv_kartstacking_sneaker_expertspeedboost)
|
||||
#define SNEAKERACCELBOOST K_RAGuard(cv_kartstacking_sneaker_accelboost)
|
||||
#define MAXSNEAKERSTACK K_RAGuard(cv_kartstacking_sneaker_maxgrade)
|
||||
#define SNEAKERSTACKABLE K_RAGuard(cv_kartstacking_sneaker_stackable)
|
||||
|
|
|
|||
|
|
@ -473,7 +473,14 @@ void K_SetPowerLevelScrambles(SINT8 powertype)
|
|||
return;
|
||||
}
|
||||
|
||||
if (min >= 7800)
|
||||
if (min >= 8200)
|
||||
{
|
||||
if (avg >= 8500)
|
||||
t = 6;
|
||||
else
|
||||
t = 5;
|
||||
}
|
||||
else if (min >= 7800)
|
||||
{
|
||||
if (avg >= 8200)
|
||||
t = 5;
|
||||
|
|
@ -520,6 +527,10 @@ void K_SetPowerLevelScrambles(SINT8 powertype)
|
|||
|
||||
switch (t)
|
||||
{
|
||||
case 6:
|
||||
speed = KARTSPEED_EXPERT;
|
||||
encore = P_RandomChance(FRACUNIT>>1);
|
||||
break;
|
||||
case 5:
|
||||
speed = KARTSPEED_HARD;
|
||||
encore = P_RandomChance(FRACUNIT>>1);
|
||||
|
|
|
|||
|
|
@ -361,7 +361,7 @@ consvar_t cv_dummyattackingchaining = CVAR_INIT ("dummyattackingchaining", "Off"
|
|||
consvar_t cv_dummyattackingslipdash = CVAR_INIT ("dummyattackingslipdash", "Off", CV_HIDEN|CV_CALL|CV_NOINIT, CV_OnOff, Nextmap_OnChange);
|
||||
consvar_t cv_dummyattackingpurpledrift = CVAR_INIT ("dummyattackingpurpledrift", "Off", CV_HIDEN|CV_CALL|CV_NOINIT, CV_OnOff, Nextmap_OnChange);
|
||||
|
||||
static CV_PossibleValue_t dummygpdifficulty_cons_t[] = {{0, "Easy"}, {1, "Normal"}, {2, "Hard"}, {3, "Master"}, {0, NULL}};
|
||||
static CV_PossibleValue_t dummygpdifficulty_cons_t[] = {{KARTSPEED_EASY, "Easy"}, {KARTSPEED_NORMAL, "Normal"}, {KARTSPEED_HARD, "Hard"}, {KARTSPEED_EXPERT, "Expert"}, {KARTGP_MASTER, "Master"}, {KARTGP_NIGHTMARE, "Nightmare"}, {0, NULL}};
|
||||
static CV_PossibleValue_t dummygpcup_cons_t[50] = {{1, "TEMP"}}; // A REALLY BIG NUMBER, SINCE THIS IS TEMP UNTIL NEW MENUS
|
||||
|
||||
consvar_t cv_dummygpdifficulty = CVAR_INIT ("dummygpdifficulty", "Normal", CV_HIDEN, dummygpdifficulty_cons_t, NULL);
|
||||
|
|
@ -5648,12 +5648,17 @@ void M_StartGrandPrix(INT32 choice)
|
|||
case KARTSPEED_EASY:
|
||||
case KARTSPEED_NORMAL:
|
||||
case KARTSPEED_HARD:
|
||||
case KARTSPEED_EXPERT:
|
||||
grandprixinfo.gamespeed = cv_dummygpdifficulty.value;
|
||||
break;
|
||||
case KARTGP_MASTER:
|
||||
grandprixinfo.gamespeed = KARTSPEED_HARD;
|
||||
grandprixinfo.masterbots = true;
|
||||
break;
|
||||
case KARTGP_NIGHTMARE:
|
||||
grandprixinfo.gamespeed = KARTSPEED_EXPERT;
|
||||
grandprixinfo.masterbots = true;
|
||||
break;
|
||||
default:
|
||||
CONS_Alert(CONS_WARNING, "Invalid GP difficulty\n");
|
||||
grandprixinfo.gamespeed = KARTSPEED_NORMAL;
|
||||
|
|
|
|||
|
|
@ -8377,6 +8377,8 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
distbarrier = FixedMul(distbarrier, FRACUNIT-FRACUNIT/4);
|
||||
else if (gamespeed == KARTSPEED_HARD)
|
||||
distbarrier = FixedMul(distbarrier, FRACUNIT+FRACUNIT/4);
|
||||
else if (gamespeed == KARTSPEED_EXPERT)
|
||||
distbarrier = FixedMul(distbarrier, FRACUNIT+FRACUNIT/2);
|
||||
|
||||
if ((gametyperules & GTR_CIRCUIT) && mobj->tracer)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue