* Make music reset when game over is dealt with more consistent.
* Make setting steallives to true respawn every game overed spectator. * Make a minimum on the number of lives GetLives can get you. * Add "You'll steal a life on respawn" to spectator screen.
This commit is contained in:
parent
464699fce2
commit
3857b720cd
|
@ -85,6 +85,7 @@ static void NetTimeout_OnChange(void);
|
||||||
static void JoinTimeout_OnChange(void);
|
static void JoinTimeout_OnChange(void);
|
||||||
|
|
||||||
static void PlayStyle_OnChange(void);
|
static void PlayStyle_OnChange(void);
|
||||||
|
static void StealLives_OnChange(void);
|
||||||
|
|
||||||
static void Ringslinger_OnChange(void);
|
static void Ringslinger_OnChange(void);
|
||||||
static void Gravity_OnChange(void);
|
static void Gravity_OnChange(void);
|
||||||
|
@ -352,9 +353,9 @@ static CV_PossibleValue_t inttime_cons_t[] = {{0, "MIN"}, {3600, "MAX"}, {0, NUL
|
||||||
consvar_t cv_inttime = {"inttime", "10", CV_NETVAR, inttime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_inttime = {"inttime", "10", CV_NETVAR, inttime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
static CV_PossibleValue_t playstyle_cons_t[] = {{0, "Individual"}, {1, "Sharing"}, {2, "Together"}, {0, NULL}};
|
static CV_PossibleValue_t playstyle_cons_t[] = {{0, "Individual"}, {1, "Sharing"}, {2, "Together"}, {0, NULL}};
|
||||||
consvar_t cv_playstyle = {"playstyle", "Together", CV_NETVAR|CV_CHEAT|CV_CALL, playstyle_cons_t, PlayStyle_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_playstyle = {"playstyle", "Together", CV_NETVAR|CV_CALL|CV_CHEAT, playstyle_cons_t, PlayStyle_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
consvar_t cv_steallives = {"steallives", "Yes", CV_NETVAR, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_steallives = {"steallives", "Yes", CV_NETVAR|CV_CALL, CV_YesNo, StealLives_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
static CV_PossibleValue_t advancemap_cons_t[] = {{0, "Off"}, {1, "Next"}, {2, "Random"}, {0, NULL}};
|
static CV_PossibleValue_t advancemap_cons_t[] = {{0, "Off"}, {1, "Next"}, {2, "Random"}, {0, NULL}};
|
||||||
consvar_t cv_advancemap = {"advancemap", "Next", CV_NETVAR, advancemap_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_advancemap = {"advancemap", "Next", CV_NETVAR, advancemap_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
@ -3419,7 +3420,30 @@ static void PlayStyle_OnChange(void)
|
||||||
if (!players[i].spectator)
|
if (!players[i].spectator)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (players[i].lives <= 0)
|
if (players[i].lives <= 0 && !cv_steallives.value)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
players[i].playerstate = PST_REBORN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StealLives_OnChange(void)
|
||||||
|
{
|
||||||
|
if (!(netgame || multiplayer) || gametype != GT_COOP)
|
||||||
|
return;
|
||||||
|
if (cv_playstyle.value != 2 && cv_steallives.value)
|
||||||
|
{
|
||||||
|
INT32 i;
|
||||||
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
{
|
||||||
|
if (!playeringame[i])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!players[i].spectator)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (players[i].lives > 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
players[i].playerstate = PST_REBORN;
|
players[i].playerstate = PST_REBORN;
|
||||||
|
|
|
@ -2592,6 +2592,10 @@ void G_DoReborn(INT32 playernum)
|
||||||
// respawn at the start
|
// respawn at the start
|
||||||
mobj_t *oldmo = NULL;
|
mobj_t *oldmo = NULL;
|
||||||
|
|
||||||
|
// Return to level music
|
||||||
|
if (player->lives <= 0)
|
||||||
|
P_RestoreMultiMusic(player);
|
||||||
|
|
||||||
if (gametype == GT_COOP && (netgame || multiplayer))
|
if (gametype == GT_COOP && (netgame || multiplayer))
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
|
|
|
@ -201,6 +201,7 @@ void P_PlayLivesJingle(player_t *player);
|
||||||
|
|
||||||
boolean P_GetLives(player_t *player);
|
boolean P_GetLives(player_t *player);
|
||||||
boolean P_SpectatorJoinGame(player_t *player);
|
boolean P_SpectatorJoinGame(player_t *player);
|
||||||
|
void P_RestoreMultiMusic(player_t *player);
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_MOBJ
|
// P_MOBJ
|
||||||
|
|
81
src/p_user.c
81
src/p_user.c
|
@ -8132,11 +8132,9 @@ boolean P_GetLives(player_t *player)
|
||||||
if (players[maxlivesplayer].mo)
|
if (players[maxlivesplayer].mo)
|
||||||
S_StartSound(players[maxlivesplayer].mo, sfx_jshard); // placeholder
|
S_StartSound(players[maxlivesplayer].mo, sfx_jshard); // placeholder
|
||||||
players[maxlivesplayer].lives--;
|
players[maxlivesplayer].lives--;
|
||||||
|
player->lives++;
|
||||||
|
if (player->lives < 1)
|
||||||
player->lives = 1;
|
player->lives = 1;
|
||||||
if (netgame && P_IsLocalPlayer(player))
|
|
||||||
S_ChangeMusic(mapmusname, mapmusflags, true);
|
|
||||||
else if (player == &players[displayplayer] || player == &players[secondarydisplayplayer])
|
|
||||||
P_RestoreMusic(player);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -8177,6 +8175,24 @@ static void P_ConsiderAllGone(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void P_RestoreMultiMusic(player_t *player)
|
||||||
|
{
|
||||||
|
if (netgame)
|
||||||
|
{
|
||||||
|
if (P_IsLocalPlayer(player))
|
||||||
|
S_ChangeMusic(mapmusname, mapmusflags, true);
|
||||||
|
}
|
||||||
|
else if (multiplayer) // local multiplayer only
|
||||||
|
{
|
||||||
|
// Restore the other player's music once we're dead for long enough
|
||||||
|
// -- that is, as long as they aren't dead too
|
||||||
|
if (player == &players[displayplayer] && players[secondarydisplayplayer].lives > 0)
|
||||||
|
P_RestoreMusic(&players[secondarydisplayplayer]);
|
||||||
|
else if (player == &players[secondarydisplayplayer] && players[displayplayer].lives > 0)
|
||||||
|
P_RestoreMusic(&players[displayplayer]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_DeathThink
|
// P_DeathThink
|
||||||
// Fall on your face when dying.
|
// Fall on your face when dying.
|
||||||
|
@ -8287,42 +8303,10 @@ static void P_DeathThink(player_t *player)
|
||||||
countdown2 = 1*TICRATE;
|
countdown2 = 1*TICRATE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// In a coop game, and out of lives
|
//else if (gametype == GT_COOP) -- moved to G_DoReborn
|
||||||
/*else if (gametype == GT_COOP)
|
|
||||||
{
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
|
||||||
{
|
|
||||||
if (!playeringame[i])
|
|
||||||
continue;
|
|
||||||
if (players[i].exiting || players[i].lives)
|
|
||||||
break;
|
|
||||||
if (players[i].playerstate == PST_DEAD && players[i].deadtimer < deadtimercheck)
|
|
||||||
deadtimercheck = players[i].deadtimer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == MAXPLAYERS && deadtimercheck == 8*TICRATE)
|
if (gametype == GT_COOP && (player->lives <= 0) && (player->deadtimer >= 8*TICRATE || ((cmd->buttons & BT_JUMP) && (player->deadtimer > TICRATE))))
|
||||||
{
|
|
||||||
// They're dead, Jim.
|
|
||||||
//nextmapoverride = spstage_start;
|
|
||||||
nextmapoverride = gamemap;
|
|
||||||
countdown2 = 1*TICRATE;
|
|
||||||
skipstats = true;
|
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
|
||||||
{
|
|
||||||
if (playeringame[i])
|
|
||||||
players[i].score = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//emeralds = 0;
|
|
||||||
tokenbits = 0;
|
|
||||||
tokenlist = 0;
|
|
||||||
token = 0;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gametype == GT_COOP && (player->lives <= 0) && (player->deadtimer > gameovertics || ((cmd->buttons & BT_JUMP) && (player->deadtimer > TICRATE))))
|
|
||||||
{
|
{
|
||||||
player->spectator = true;
|
player->spectator = true;
|
||||||
player->playerstate = PST_REBORN;
|
player->playerstate = PST_REBORN;
|
||||||
|
@ -8345,25 +8329,8 @@ static void P_DeathThink(player_t *player)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return to level music
|
// Return to level music
|
||||||
if (player->lives <= 0)
|
if (player->lives <= 0 && player->deadtimer == gameovertics)
|
||||||
{
|
P_RestoreMultiMusic(player);
|
||||||
if (netgame)
|
|
||||||
{
|
|
||||||
if (player->deadtimer == gameovertics && P_IsLocalPlayer(player))
|
|
||||||
S_ChangeMusic(mapmusname, mapmusflags, true);
|
|
||||||
}
|
|
||||||
else if (multiplayer) // local multiplayer only
|
|
||||||
{
|
|
||||||
if (player->deadtimer != gameovertics)
|
|
||||||
;
|
|
||||||
// Restore the other player's music once we're dead for long enough
|
|
||||||
// -- that is, as long as they aren't dead too
|
|
||||||
else if (player == &players[displayplayer] && players[secondarydisplayplayer].lives > 0)
|
|
||||||
P_RestoreMusic(&players[secondarydisplayplayer]);
|
|
||||||
else if (player == &players[secondarydisplayplayer] && players[displayplayer].lives > 0)
|
|
||||||
P_RestoreMusic(&players[displayplayer]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!player->mo)
|
if (!player->mo)
|
||||||
|
|
|
@ -1982,6 +1982,28 @@ static void ST_overlayDrawer(void)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(132), V_HUDTRANSHALF, M_GetText("Press Fire to be assigned to a team."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(132), V_HUDTRANSHALF, M_GetText("Press Fire to be assigned to a team."));
|
||||||
else if (G_IsSpecialStage(gamemap) && useNightsSS)
|
else if (G_IsSpecialStage(gamemap) && useNightsSS)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(132), V_HUDTRANSHALF, M_GetText("You cannot join the game until the stage has ended."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(132), V_HUDTRANSHALF, M_GetText("You cannot join the game until the stage has ended."));
|
||||||
|
else if (gametype == GT_COOP)
|
||||||
|
{
|
||||||
|
if (cv_steallives.value
|
||||||
|
&& (netgame || multiplayer))
|
||||||
|
{
|
||||||
|
INT32 i;
|
||||||
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
{
|
||||||
|
if (!playeringame[i])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (&players[i] == stplyr)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (players[i].lives > 1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i != MAXPLAYERS)
|
||||||
|
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(132), V_HUDTRANSHALF, M_GetText("You'll steal a life on respawn."));
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (!gametype == GT_COOP)
|
else if (!gametype == GT_COOP)
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(132), V_HUDTRANSHALF, M_GetText("Press Fire to enter the game."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(132), V_HUDTRANSHALF, M_GetText("Press Fire to enter the game."));
|
||||||
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(148), V_HUDTRANSHALF, M_GetText("Press F12 to watch another player."));
|
V_DrawCenteredString(BASEVIDWIDTH/2, STRINGY(148), V_HUDTRANSHALF, M_GetText("Press F12 to watch another player."));
|
||||||
|
|
Loading…
Reference in New Issue