mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Dumb post alert: Ease off the horn
If we're bringing the spice we have to bring the whole pepper
This commit is contained in:
parent
2618232260
commit
2f6d7230f0
8 changed files with 81 additions and 15 deletions
|
|
@ -1048,7 +1048,14 @@ static void SendNameAndColor(const UINT8 n)
|
||||||
WRITESTRINGN(p, cv_playername[n].zstring, MAXPLAYERNAME);
|
WRITESTRINGN(p, cv_playername[n].zstring, MAXPLAYERNAME);
|
||||||
WRITEUINT16(p, sendColor);
|
WRITEUINT16(p, sendColor);
|
||||||
WRITEUINT8(p, (UINT8)cv_skin[n].value);
|
WRITEUINT8(p, (UINT8)cv_skin[n].value);
|
||||||
WRITEINT16(p, (INT16)cv_follower[n].value);
|
if (horngoner)
|
||||||
|
{
|
||||||
|
WRITEINT16(p, (-1));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WRITEINT16(p, (INT16)cv_follower[n].value);
|
||||||
|
}
|
||||||
//CONS_Printf("Sending follower id %d\n", (INT16)cv_follower[n].value);
|
//CONS_Printf("Sending follower id %d\n", (INT16)cv_follower[n].value);
|
||||||
WRITEUINT16(p, sendFollowerColor);
|
WRITEUINT16(p, sendFollowerColor);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,8 @@ follower_t followers[MAXFOLLOWERS];
|
||||||
INT32 numfollowercategories;
|
INT32 numfollowercategories;
|
||||||
followercategory_t followercategories[MAXFOLLOWERCATEGORIES];
|
followercategory_t followercategories[MAXFOLLOWERCATEGORIES];
|
||||||
|
|
||||||
|
boolean horngoner = false;
|
||||||
|
|
||||||
CV_PossibleValue_t Followercolor_cons_t[MAXSKINCOLORS+3]; // +3 to account for "Match", "Opposite" & NULL
|
CV_PossibleValue_t Followercolor_cons_t[MAXSKINCOLORS+3]; // +3 to account for "Match", "Opposite" & NULL
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,8 @@ struct followercategory_t
|
||||||
extern INT32 numfollowercategories;
|
extern INT32 numfollowercategories;
|
||||||
extern followercategory_t followercategories[MAXFOLLOWERCATEGORIES];
|
extern followercategory_t followercategories[MAXFOLLOWERCATEGORIES];
|
||||||
|
|
||||||
|
extern boolean horngoner;
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
INT32 K_FollowerAvailable(const char *name)
|
INT32 K_FollowerAvailable(const char *name)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1428,6 +1428,8 @@ typedef enum
|
||||||
#define CHAOHOLD_END (3)
|
#define CHAOHOLD_END (3)
|
||||||
#define CHAOHOLD_PADDING (CHAOHOLD_BEGIN + CHAOHOLD_END)
|
#define CHAOHOLD_PADDING (CHAOHOLD_BEGIN + CHAOHOLD_END)
|
||||||
|
|
||||||
|
#define EASEOFFHORN 50
|
||||||
|
|
||||||
extern struct timeattackmenu_s {
|
extern struct timeattackmenu_s {
|
||||||
|
|
||||||
tic_t ticker; // How long the menu's been open for
|
tic_t ticker; // How long the menu's been open for
|
||||||
|
|
|
||||||
|
|
@ -1862,6 +1862,9 @@ static boolean M_DrawFollowerSprite(INT16 x, INT16 y, INT32 num, boolean charfli
|
||||||
follower_t *fl;
|
follower_t *fl;
|
||||||
UINT8 rotation = (charflip ? 1 : 7);
|
UINT8 rotation = (charflip ? 1 : 7);
|
||||||
|
|
||||||
|
if (horngoner)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
followernum = p->followern;
|
followernum = p->followern;
|
||||||
else
|
else
|
||||||
|
|
@ -2406,7 +2409,7 @@ void M_DrawProfileCard(INT32 x, INT32 y, boolean greyedout, profile_t *p)
|
||||||
V_DrawMappedPatch(x+14, y+66, 0, faceprefix[skinnum][FACE_RANK], ccolormap);
|
V_DrawMappedPatch(x+14, y+66, 0, faceprefix[skinnum][FACE_RANK], ccolormap);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fln >= 0)
|
if (!horngoner && fln >= 0)
|
||||||
{
|
{
|
||||||
UINT16 fcol = K_GetEffectiveFollowerColor(
|
UINT16 fcol = K_GetEffectiveFollowerColor(
|
||||||
p->followercolor,
|
p->followercolor,
|
||||||
|
|
@ -6827,8 +6830,15 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, UINT8 *flash
|
||||||
iconid = 1;
|
iconid = 1;
|
||||||
break;
|
break;
|
||||||
case SECRET_FOLLOWER:
|
case SECRET_FOLLOWER:
|
||||||
bcol = SKINCOLOR_SAPPHIRE;
|
if (horngoner)
|
||||||
iconid = 2;
|
{
|
||||||
|
bcol = SKINCOLOR_BLACK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bcol = SKINCOLOR_SAPPHIRE;
|
||||||
|
iconid = 2;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SECRET_COLOR:
|
case SECRET_COLOR:
|
||||||
//bcol = SKINCOLOR_SILVER;
|
//bcol = SKINCOLOR_SILVER;
|
||||||
|
|
@ -6890,7 +6900,9 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, UINT8 *flash
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (categoryside)
|
if (horngoner && ref->type == SECRET_FOLLOWER)
|
||||||
|
goto drawborder;
|
||||||
|
else if (categoryside)
|
||||||
{
|
{
|
||||||
colormap = R_GetTranslationColormap(TC_DEFAULT, SKINCOLOR_SILVER, GTC_MENUCACHE);
|
colormap = R_GetTranslationColormap(TC_DEFAULT, SKINCOLOR_SILVER, GTC_MENUCACHE);
|
||||||
|
|
||||||
|
|
@ -7305,6 +7317,11 @@ static const char* M_DrawChallengePreview(INT32 x, INT32 y)
|
||||||
colormap = R_GetTranslationColormap(TC_BLINK, SKINCOLOR_BLACK, GTC_MENUCACHE);
|
colormap = R_GetTranslationColormap(TC_BLINK, SKINCOLOR_BLACK, GTC_MENUCACHE);
|
||||||
M_DrawCharacterSprite(x, y, skin, SPR2_STIN, 7, 0, 0, colormap);
|
M_DrawCharacterSprite(x, y, skin, SPR2_STIN, 7, 0, 0, colormap);
|
||||||
|
|
||||||
|
if (horngoner)
|
||||||
|
{
|
||||||
|
return "<a_pressed> <gray>MISSING.";
|
||||||
|
}
|
||||||
|
|
||||||
// Draw follower next to them
|
// Draw follower next to them
|
||||||
if (fskin != -1)
|
if (fskin != -1)
|
||||||
{
|
{
|
||||||
|
|
@ -7332,6 +7349,27 @@ static const char* M_DrawChallengePreview(INT32 x, INT32 y)
|
||||||
{
|
{
|
||||||
actiontext = "<a_animated> <aqua>Play Ancient Melody?";
|
actiontext = "<a_animated> <aqua>Play Ancient Melody?";
|
||||||
}
|
}
|
||||||
|
else if (challengesmenu.hornposting >= EASEOFFHORN)
|
||||||
|
actiontext = "<a> <red>Time to die";
|
||||||
|
else if (challengesmenu.hornposting >= (EASEOFFHORN-5))
|
||||||
|
{
|
||||||
|
if (challengesmenu.hornposting == EASEOFFHORN)
|
||||||
|
actiontext = "Time to die";
|
||||||
|
else
|
||||||
|
actiontext = "I asked politely";
|
||||||
|
actiontext = va("%s%s",
|
||||||
|
(M_MenuConfirmPressed(0)
|
||||||
|
? "<a_pressed> <yellow>"
|
||||||
|
: "<a> <red>"
|
||||||
|
), actiontext
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else if (challengesmenu.hornposting >= (EASEOFFHORN-10))
|
||||||
|
{
|
||||||
|
actiontext = M_MenuConfirmPressed(0)
|
||||||
|
? "<a_pressed> <yellow>Ease off the horn"
|
||||||
|
: "<a> <orange>Ease off the horn";
|
||||||
|
}
|
||||||
else switch (challengesmenu.hornposting % 4)
|
else switch (challengesmenu.hornposting % 4)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -1252,7 +1252,7 @@ boolean M_ChallengesInputs(INT32 ch)
|
||||||
}
|
}
|
||||||
case SECRET_FOLLOWER:
|
case SECRET_FOLLOWER:
|
||||||
{
|
{
|
||||||
if (M_MenuConfirmPressed(pid))
|
if (!horngoner && M_MenuConfirmPressed(pid))
|
||||||
{
|
{
|
||||||
INT32 fskin = M_UnlockableFollowerNum(ref);
|
INT32 fskin = M_UnlockableFollowerNum(ref);
|
||||||
if (fskin != -1)
|
if (fskin != -1)
|
||||||
|
|
@ -1274,11 +1274,19 @@ boolean M_ChallengesInputs(INT32 ch)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!forceflip)
|
if (!forceflip)
|
||||||
{
|
|
||||||
challengesmenu.hornposting++;
|
challengesmenu.hornposting++;
|
||||||
|
|
||||||
|
if (challengesmenu.hornposting > EASEOFFHORN)
|
||||||
|
{
|
||||||
|
challengesmenu.hornposting = 0;
|
||||||
|
horngoner = true;
|
||||||
|
S_StartSound(NULL, sfx_s3k72);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
S_StartSound(NULL, followers[fskin].hornsound);
|
||||||
}
|
}
|
||||||
|
|
||||||
S_StartSound(NULL, followers[fskin].hornsound);
|
|
||||||
M_SetMenuDelay(pid);
|
M_SetMenuDelay(pid);
|
||||||
|
|
||||||
forceflip = true;
|
forceflip = true;
|
||||||
|
|
|
||||||
|
|
@ -777,7 +777,7 @@ static boolean M_HandleBeginningColors(setup_player_t *p)
|
||||||
|
|
||||||
static void M_HandleBeginningFollowers(setup_player_t *p)
|
static void M_HandleBeginningFollowers(setup_player_t *p)
|
||||||
{
|
{
|
||||||
if (setup_numfollowercategories == 0)
|
if (horngoner || setup_numfollowercategories == 0)
|
||||||
{
|
{
|
||||||
p->followern = -1;
|
p->followern = -1;
|
||||||
M_HandlePlayerFinalise(p);
|
M_HandlePlayerFinalise(p);
|
||||||
|
|
@ -1392,7 +1392,9 @@ static void M_MPConfirmCharacterSelection(void)
|
||||||
CV_StealthSetValue(&cv_playercolor[i], col);
|
CV_StealthSetValue(&cv_playercolor[i], col);
|
||||||
|
|
||||||
// follower
|
// follower
|
||||||
if (setup_player[i].followern < 0)
|
if (horngoner)
|
||||||
|
;
|
||||||
|
else if (setup_player[i].followern < 0)
|
||||||
CV_StealthSet(&cv_follower[i], "None");
|
CV_StealthSet(&cv_follower[i], "None");
|
||||||
else
|
else
|
||||||
CV_StealthSet(&cv_follower[i], followers[setup_player[i].followern].name);
|
CV_StealthSet(&cv_follower[i], followers[setup_player[i].followern].name);
|
||||||
|
|
@ -1457,9 +1459,12 @@ void M_CharacterSelectTick(void)
|
||||||
strcpy(optionsmenu.profile->skinname, skins[setup_player[0].skin]->name);
|
strcpy(optionsmenu.profile->skinname, skins[setup_player[0].skin]->name);
|
||||||
optionsmenu.profile->color = setup_player[0].color;
|
optionsmenu.profile->color = setup_player[0].color;
|
||||||
|
|
||||||
// save follower
|
if (!horngoner) // so you don't lose your choice after annoying the game
|
||||||
strcpy(optionsmenu.profile->follower, followers[setup_player[0].followern].name);
|
{
|
||||||
optionsmenu.profile->followercolor = setup_player[0].followercolor;
|
// save follower
|
||||||
|
strcpy(optionsmenu.profile->follower, followers[setup_player[0].followern].name);
|
||||||
|
optionsmenu.profile->followercolor = setup_player[0].followercolor;
|
||||||
|
}
|
||||||
|
|
||||||
// reset setup_player
|
// reset setup_player
|
||||||
memset(setup_player, 0, sizeof(setup_player));
|
memset(setup_player, 0, sizeof(setup_player));
|
||||||
|
|
@ -1475,7 +1480,9 @@ void M_CharacterSelectTick(void)
|
||||||
CV_StealthSet(&cv_skin[i], skins[setup_player[i].skin]->name);
|
CV_StealthSet(&cv_skin[i], skins[setup_player[i].skin]->name);
|
||||||
CV_StealthSetValue(&cv_playercolor[i], setup_player[i].color);
|
CV_StealthSetValue(&cv_playercolor[i], setup_player[i].color);
|
||||||
|
|
||||||
if (setup_player[i].followern < 0)
|
if (horngoner)
|
||||||
|
;
|
||||||
|
else if (setup_player[i].followern < 0)
|
||||||
CV_StealthSet(&cv_follower[i], "None");
|
CV_StealthSet(&cv_follower[i], "None");
|
||||||
else
|
else
|
||||||
CV_StealthSet(&cv_follower[i], followers[setup_player[i].followern].name);
|
CV_StealthSet(&cv_follower[i], followers[setup_player[i].followern].name);
|
||||||
|
|
|
||||||
|
|
@ -8099,7 +8099,7 @@ static void P_InitPlayers(void)
|
||||||
skin = 0;
|
skin = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (netgame)
|
if (netgame || horngoner)
|
||||||
; // shouldn't happen but at least attempt to sync if it does
|
; // shouldn't happen but at least attempt to sync if it does
|
||||||
else for (i = 0; i < numfollowers; i++)
|
else for (i = 0; i < numfollowers; i++)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue