diff --git a/src/g_game.c b/src/g_game.c index cbb7d4058..71ebb2161 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -463,15 +463,15 @@ SINT8 G_RecordPresetIndex(void) boolean purpledrift = cv_dummyattackingpurpledrift.value; if (!rings && !stacking && !chaining && !slipdash && !purpledrift) - return 0; + return RP_KART; if (stacking && chaining && !rings && !slipdash && !purpledrift) - return 1; + return RP_TECH; if (rings && stacking && chaining && slipdash && purpledrift) - return 2; + return RP_BLAN; - return 3; + return RP_CUST; } // Allocation for time and nights data @@ -621,7 +621,7 @@ static void G_UpdateRecordReplays(void) } free(gpath); - free(gamemode); + Z_Free(gamemode); // Check emblems when level data is updated if ((earnedEmblems = M_CheckLevelEmblems())) diff --git a/src/g_game.h b/src/g_game.h index cb12230bf..16bab824a 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -249,6 +249,13 @@ void G_SetGamestate(gamestate_t newstate); boolean G_GamestateUsesLevel(void); // Gamedata record shit +typedef enum +{ + RP_KART = 0, + RP_TECH, + RP_BLAN, + RP_CUST, +} recordpreset_e; SINT8 G_RecordPresetIndex(void); void G_AllocMainRecordData(INT16 i, SINT8 preset); void G_ClearRecords(void); diff --git a/src/k_kart.c b/src/k_kart.c index 23ed8eadf..a8b6bdf55 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1621,6 +1621,13 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) if (P_IsDisplayPlayer(player)) S_StartSound(NULL, sfx_itrolf); } + else if (itembreaker) + { + K_KartGetItemResult(player, KITEM_SNEAKER); + player->itemblinkmode = 1; + if (P_IsDisplayPlayer(player)) + S_StartSound(NULL, sfx_itrolm); + } } player->itemblink = TICRATE; diff --git a/src/m_menu.c b/src/m_menu.c index a1cb6a236..4d1c369db 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -564,7 +564,7 @@ void Nextmap_OnChange(void) leveltitle = cv_nextmap.value ? G_BuildMapTitle(cv_nextmap.value) : Z_StrDup("Random"); cv_nextmap.string = cv_nextmap.zstring = leveltitle; - if (menustack[0] == MN_SP_TIMEATTACK || menustack[0] == MN_SP_MODS) + if (menustack[0] == MN_SP_TIMEATTACK || menustack[0] == MN_SP_MODS || menustack[0] == MN_SP_PRES) { // see also p_setup.c's P_LoadRecordGhosts char *gamemode = M_AppendGametypeAndModName(); diff --git a/src/p_map.c b/src/p_map.c index 18f0edde2..d717adb38 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -3710,13 +3710,13 @@ static void P_BouncePlayerMove(mobj_t *mo, TryMoveResult_t *result) mmomx = mo->player->rmomx; mmomy = mo->player->rmomy; - if (!cv_kartbumpspark.value) + if (!cv_kartbumpspark.value || modeattacking != ATTACKING_NONE) { mo->player->drift = 0; mo->player->driftcharge = 0; } - if (!cv_kartbumpspring.value) + if (!cv_kartbumpspring.value || modeattacking != ATTACKING_NONE) { mo->player->pogospring = 0; }