From b8db9581c2aa763389018877cfbcda4cf200df87 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Wed, 10 Oct 2018 14:56:50 -0400 Subject: [PATCH] Last batch of tweaks - Rocket sneaker meter depletes more slowly when idle, but depletes much more when using it. This balances out to give it a couple more boosts when you use it well, but allows you to waste it more quickly when you don't want it anymore. Also demonstrates better to new players to not spam it like a gold shroom! - Vibrating frames on sneakers when they aren't being used. - Shoe weight is less strong. --- src/dehacked.c | 2 ++ src/info.c | 2 ++ src/info.h | 2 ++ src/k_kart.c | 20 ++++++++------------ 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index f01f874c7..0d42ae77d 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6314,6 +6314,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit // Rocket sneaker "S_ROCKETSNEAKER_L", "S_ROCKETSNEAKER_R", + "S_ROCKETSNEAKER_LVIBRATE", + "S_ROCKETSNEAKER_RVIBRATE", //{ Eggman Monitor "S_FAKEITEM1", diff --git a/src/info.c b/src/info.c index 7ef8dc719..fafd09d70 100644 --- a/src/info.c +++ b/src/info.c @@ -2625,6 +2625,8 @@ state_t states[NUMSTATES] = {SPR_RSHE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_ROCKETSNEAKER_L {SPR_RSHE, 1, -1, {NULL}, 0, 0, S_NULL}, // S_ROCKETSNEAKER_R + {SPR_RSHE, 2, -1, {NULL}, 0, 0, S_NULL}, // S_ROCKETSNEAKER_LVIBRATE + {SPR_RSHE, 3, -1, {NULL}, 0, 0, S_NULL}, // S_ROCKETSNEAKER_RVIBRATE {SPR_FITM, FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FAKEITEM2}, // S_FAKEITEM1 {SPR_FITM, 1|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FAKEITEM3}, // S_FAKEITEM2 diff --git a/src/info.h b/src/info.h index 687d87147..f14d21212 100644 --- a/src/info.h +++ b/src/info.h @@ -3159,6 +3159,8 @@ typedef enum state // Rocket sneaker S_ROCKETSNEAKER_L, S_ROCKETSNEAKER_R, + S_ROCKETSNEAKER_LVIBRATE, + S_ROCKETSNEAKER_RVIBRATE, //{ Eggman Monitor S_FAKEITEM1, diff --git a/src/k_kart.c b/src/k_kart.c index 172c7d759..5c7d22ee5 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -997,14 +997,9 @@ static fixed_t K_GetMobjWeight(mobj_t *mobj, mobj_t *against) weight = (against->player->kartweight)<player) - weight = (against->player->kartweight*2)<player) weight = (against->player->kartweight)<kartstuff[k_floorboost] || player->kartstuff[k_floorboost] == 3) { S_StartSound(player->mo, sfx_cdfm01); + K_SpawnDashDustRelease(player); if (intendedboost > player->kartstuff[k_speedboost]) player->kartstuff[k_destboostcam] = FixedMul(FRACUNIT, FixedDiv((intendedboost - player->kartstuff[k_speedboost]), intendedboost)); - K_SpawnDashDustRelease(player); } if (!player->kartstuff[k_sneakertimer]) @@ -3599,6 +3594,7 @@ static void K_MoveHeldObjects(player_t *player) while (cur && !P_MobjWasRemoved(cur)) { const fixed_t radius = FixedHypot(player->mo->radius, player->mo->radius) + FixedHypot(cur->radius, cur->radius); + boolean vibrate = ((leveltime & 1) && !cur->tracer); angle_t angoffset; fixed_t targx, targy, targz; @@ -3610,9 +3606,9 @@ static void K_MoveHeldObjects(player_t *player) cur->flags2 &= ~MF2_DONTDRAW; if (num & 1) - P_SetMobjStateNF(cur, S_ROCKETSNEAKER_L); + P_SetMobjStateNF(cur, (vibrate ? S_ROCKETSNEAKER_LVIBRATE : S_ROCKETSNEAKER_L)); else - P_SetMobjStateNF(cur, S_ROCKETSNEAKER_R); + P_SetMobjStateNF(cur, (vibrate ? S_ROCKETSNEAKER_RVIBRATE : S_ROCKETSNEAKER_R)); if (!player->kartstuff[k_rocketsneakertimer] || cur->extravalue2 || !cur->health) { @@ -4690,7 +4686,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { K_DoSneaker(player, 2); K_PlayBoostTaunt(player->mo); - player->kartstuff[k_rocketsneakertimer] -= 5; + player->kartstuff[k_rocketsneakertimer] -= 2*TICRATE; if (player->kartstuff[k_rocketsneakertimer] < 1) player->kartstuff[k_rocketsneakertimer] = 1; } @@ -4724,7 +4720,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) //K_DoSneaker(player, 2); - player->kartstuff[k_rocketsneakertimer] = itemtime; + player->kartstuff[k_rocketsneakertimer] = itemtime*3; player->kartstuff[k_itemamount]--; K_UpdateHnextList(player, true); @@ -6157,7 +6153,7 @@ static void K_drawKartItem(void) if (itembar && hudtrans) { const INT32 barlength = (splitscreen > 1 ? 12 : 24); - const INT32 max = itemtime; // timer's normal highest value + const INT32 max = itemtime*3; // timer's normal highest value const INT32 length = min(barlength, (itembar * barlength) / max); const INT32 height = (offset ? 1 : 2); const INT32 x = (offset ? 17 : 11), y = (offset ? 27 : 35);