Rings should ALWAYS be reset to map start's value on true death

Plugs a game design oversight that thankfully was completely sidestepped by all but one Attack replay
Replaces the reset that happened on lightsnake at -20.
This commit is contained in:
toaster 2024-03-30 20:52:28 +00:00
parent 193c85a418
commit b33c65e118
2 changed files with 18 additions and 20 deletions

View file

@ -2249,13 +2249,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
memcpy(&public_key, &players[player].public_key, sizeof(public_key));
if (betweenmaps || leveltime < introtime)
{
K_StopRoulette(&itemRoulette);
itemtype = 0;
itemamount = 0;
growshrinktimer = 0;
// "Real death should always bring you back to the map starting count for rings" - :japanese_ogre:
if (gametyperules & GTR_SPHERES)
{
rings = 0;
@ -2272,6 +2266,14 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
{
rings = 5;
}
if (betweenmaps || leveltime < introtime)
{
K_StopRoulette(&itemRoulette);
itemtype = 0;
itemamount = 0;
growshrinktimer = 0;
spheres = 0;
kickstartaccel = 0;
khudfault = 0;
@ -2308,7 +2310,6 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
else
growshrinktimer = 0;
rings = players[player].rings;
spheres = players[player].spheres;
kickstartaccel = players[player].kickstartaccel;

View file

@ -4425,9 +4425,6 @@ void P_PlayerThink(player_t *player)
{
// Allows some turning
P_MovePlayer(player);
if (player->rings <= -20) // We got here from death, so give the player a fresh start.
player->rings = 5;
}
}
else if (player->mo->reactiontime)