diff --git a/src/g_game.c b/src/g_game.c index 569d777ab..44aaf7b12 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2755,6 +2755,8 @@ void G_DoReborn(INT32 playernum) LUAh_MapChange(gamemap); #endif G_DoLoadLevel(true); + if (metalrecording) + G_BeginMetal(); return; } } @@ -2922,7 +2924,7 @@ boolean G_GametypeUsesLives(void) { // Coop, Competitive if ((gametype == GT_COOP || gametype == GT_COMPETITION) - && !modeattacking // No lives in Time Attack + && !(modeattacking || metalrecording) // No lives in Time Attack //&& !G_IsSpecialStage(gamemap) && !(maptol & TOL_NIGHTS)) // No lives in NiGHTS return true; @@ -5510,8 +5512,10 @@ void G_BeginMetal(void) { mobj_t *mo = players[consoleplayer].mo; +#if 0 if (demo_p) return; +#endif demo_p = demobuffer; diff --git a/src/p_user.c b/src/p_user.c index 7ac9b34ed..3849dd199 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -11463,6 +11463,13 @@ void P_PlayerThink(player_t *player) player->drawangle = player->mo->angle; else if (P_PlayerInPain(player)) ; + else if (player->powers[pw_justsprung]) // restricted, potentially by lua + { +#ifdef SPRINGSPIN + if (player->powers[pw_justsprung] & (1<<15)) + player->drawangle += (player->powers[pw_justsprung] & ~(1<<15))*(ANG2+ANG1); +#endif + } else if (player->powers[pw_carry] && player->mo->tracer) // carry { switch (player->powers[pw_carry]) @@ -11500,13 +11507,6 @@ void P_PlayerThink(player_t *player) break; } } - else if (player->powers[pw_justsprung]) - { -#ifdef SPRINGSPIN - if (player->powers[pw_justsprung] & (1<<15)) - player->drawangle += (player->powers[pw_justsprung] & ~(1<<15))*(ANG2+ANG1); -#endif - } else if ((player->skidtime > (TICRATE/2 - 2) || ((player->pflags & (PF_SPINNING|PF_STARTDASH)) == PF_SPINNING)) && (abs(player->rmomx) > 5*player->mo->scale || abs(player->rmomy) > 5*player->mo->scale)) // spin/skid force player->drawangle = R_PointToAngle2(0, 0, player->rmomx, player->rmomy); else if (((player->charability2 == CA2_GUNSLINGER || player->charability2 == CA2_MELEE) && player->panim == PA_ABILITY2) || player->pflags & PF_STASIS || player->skidtime) @@ -11578,7 +11578,7 @@ void P_PlayerThink(player_t *player) statenum_t stat = player->mo->state-states; if (stat == S_PLAY_WAIT) P_SetPlayerMobjState(player->mo, S_PLAY_STND); - else if (stat == S_PLAY_STND) + else if (stat == S_PLAY_STND && player->mo->tics != -1) player->mo->tics++; } } diff --git a/src/st_stuff.c b/src/st_stuff.c index 392cb1c03..139303fbb 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -837,7 +837,13 @@ static void ST_drawLivesArea(void) } // Lives number - if (G_GametypeUsesLives() || gametype == GT_RACE) + if (metalrecording) + { + if (((2*leveltime)/TICRATE) & 1) + V_DrawRightAlignedString(hudinfo[HUD_LIVES].x+58, hudinfo[HUD_LIVES].y+8, + hudinfo[HUD_LIVES].f|V_PERPLAYER|V_REDMAP|V_HUDTRANS, "REC"); + } + else if (G_GametypeUsesLives() || gametype == GT_RACE) { // x V_DrawScaledPatch(hudinfo[HUD_LIVES].x+22, hudinfo[HUD_LIVES].y+10,