diff --git a/src/k_collide.c b/src/k_collide.c index 52df67007..51dd64b98 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -870,7 +870,7 @@ boolean K_BubbleShieldReflect(mobj_t *t1, mobj_t *t2) t2->player->attractionattack = 0; t2->player->attractionattack_hipower = 0; t2->player->attractionboost = 0; - t2->player->itemflags &= ~(IF_SEEKING|IF_PASSIVESEEKING); + K_DisableSeekingReticule(t2->player); } S_StartSound(t1, sfx_s3k44); diff --git a/src/k_items.c b/src/k_items.c index 31ded342a..d9e79495e 100644 --- a/src/k_items.c +++ b/src/k_items.c @@ -2309,6 +2309,7 @@ void K_PlayerItemThink(player_t *player, boolean onground) //K_PlayAttackTaunt(player->mo); K_SetItemOut(player, KITEM_JAWZ, IF_ITEMOUT|IF_SEEKING); S_StartSound(player->mo, sfx_s3k3a); + K_EnableSeekingReticule(player, false); for (moloop = 0; moloop < player->itemamount; moloop++) { @@ -2344,7 +2345,7 @@ void K_PlayerItemThink(player_t *player, boolean onground) if (player->itemamount <= 0) { - player->itemflags &= ~IF_SEEKING; + K_DisableSeekingReticule(player); } } break; @@ -2485,16 +2486,16 @@ void K_PlayerItemThink(player_t *player, boolean onground) { S_StopSoundByID(player->mo, sfx_vwre); } - player->itemflags |= IF_SEEKING; + K_EnableSeekingReticule(player, false); player->bananadrag += 4; } else { - player->itemflags |= IF_SEEKING; effectscale = Easing_Linear(CLAMP(FixedDiv(player->attractioncharge, ATTRACTIONCHARGETIME), 0, FRACUNIT), player->mo->scale/4, player->mo->scale/2 ); + K_EnableSeekingReticule(player, false); } // stolen from machine water breathing @@ -2565,7 +2566,7 @@ void K_PlayerItemThink(player_t *player, boolean onground) K_BotResetItemConfirm(player, false); } - player->itemflags |= (IF_SEEKING|IF_PASSIVESEEKING); + K_EnableSeekingReticule(player, true); } player->attractioncharge = 0; } @@ -2870,6 +2871,20 @@ void K_DoEggMineStrip(mobj_t *tmo, mobj_t *inflictor, mobj_t *source) } } +void K_EnableSeekingReticule(player_t *player, boolean passive) +{ + player->itemflags |= IF_SEEKING; + if (passive) + { + player->itemflags |= IF_PASSIVESEEKING; + } +} + +void K_DisableSeekingReticule(player_t *player) +{ + player->itemflags &= ~(IF_SEEKING|IF_PASSIVESEEKING); +} + void K_KartSeekingReticule(player_t *player) { // seeking item reticule diff --git a/src/k_items.h b/src/k_items.h index 2653c6314..ab234bb3e 100644 --- a/src/k_items.h +++ b/src/k_items.h @@ -228,6 +228,8 @@ void K_AltShrinkPityIncrease(player_t *player); void K_SpawnEggMineBumpEffect(mobj_t *mo); void K_DoEggMineStrip(mobj_t *tmo, mobj_t *inflictor, mobj_t *source); +void K_EnableSeekingReticule(player_t *player, boolean passive); +void K_DisableSeekingReticule(player_t *player); void K_KartSeekingReticule(player_t *player); player_t *K_FindJawzTarget(mobj_t *actor, player_t *source); diff --git a/src/k_kart.c b/src/k_kart.c index 26b20c36b..9da0b8323 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -791,7 +791,7 @@ static void K_SetPlayerBumped(player_t *player, mobj_t *comparemobj) comparemobj->player->attractionattack = 0; comparemobj->player->attractionattack_hipower = 0; comparemobj->player->attractionboost = 0; - comparemobj->player->itemflags &= ~(IF_SEEKING|IF_PASSIVESEEKING); + K_DisableSeekingReticule(comparemobj->player); } } else if (pshield == KSHIELD_NONE) @@ -5454,9 +5454,9 @@ void K_DropHnextList(player_t *player) else if ((player->itemflags & IF_ITEMOUT) && (dropall || (--player->itemamount <= 0))) { + K_DisableSeekingReticule(player); player->itemamount = 0; K_UnsetItemOut(player); - player->itemflags &= ~(IF_SEEKING|IF_PASSIVESEEKING); player->itemtype = KITEM_NONE; } } @@ -5487,7 +5487,7 @@ void K_PopPlayerShield(player_t *player) player->attractionattack = 0; player->attractionattack_hipower = 0; player->attractionboost = 0; - player->itemflags &= ~(IF_SEEKING|IF_PASSIVESEEKING); + K_DisableSeekingReticule(player); break; case KSHIELD_BUBBLE: K_BreakBubbleShield(player); @@ -11906,7 +11906,7 @@ void K_KartAttractHomingAttack(player_t *player) player->attractionattack = 0; player->attractionattack_hipower = false; player->attractionboost = 0; - player->itemflags &= ~(IF_SEEKING|IF_PASSIVESEEKING); + K_DisableSeekingReticule(player); } } #undef TargetThreshold