diff --git a/src/k_kart.c b/src/k_kart.c index a7e343550..46ef6c8b7 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3657,7 +3657,7 @@ angle_t K_MomentumAngleReal(const mobj_t *mo) } } -void K_AwardPlayerRings(player_t *player, INT32 rings, boolean overload) +void K_AwardPlayerRings(player_t *player, UINT16 rings, boolean overload) { UINT16 superring; @@ -3668,7 +3668,11 @@ void K_AwardPlayerRings(player_t *player, INT32 rings, boolean overload) /* capped at 20 rings */ if ((totalrings + rings) > 20) + { + if (totalrings >= 20) + return; // woah dont let that go negative buster rings = (20 - totalrings); + } } superring = player->superring + rings; diff --git a/src/k_kart.h b/src/k_kart.h index cbaf17554..7a4424f08 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -105,7 +105,7 @@ void K_KartPlayerAfterThink(player_t *player); angle_t K_MomentumAngleEx(const mobj_t *mo, const fixed_t threshold); angle_t K_MomentumAngleReal(const mobj_t *mo); #define K_MomentumAngle(mo) K_MomentumAngleEx(mo, 6 * mo->scale) -void K_AwardPlayerRings(player_t *player, INT32 rings, boolean overload); +void K_AwardPlayerRings(player_t *player, UINT16 rings, boolean overload); void K_DoInstashield(player_t *player); void K_DoPowerClash(mobj_t *t1, mobj_t *t2); void K_DoGuardBreak(mobj_t *t1, mobj_t *t2);