Fix magnet & star

This commit is contained in:
TehRealSalt 2017-11-11 22:29:38 -05:00
parent 3eb3a74b5d
commit 005e01850d
2 changed files with 6 additions and 3 deletions

View file

@ -8091,7 +8091,7 @@ void A_ItemPop(mobj_t *actor)
{ {
mobj_t *remains; mobj_t *remains;
if (!(actor->target && actor->target->player && P_CanPickupItem(actor->target->player, false))) if (!(actor->target && actor->target->player))
{ {
if (cv_debug && !(actor->target && actor->target->player)) if (cv_debug && !(actor->target && actor->target->player))
CONS_Printf("ERROR: Powerup has no target!\n"); CONS_Printf("ERROR: Powerup has no target!\n");

View file

@ -153,6 +153,9 @@ boolean P_CanPickupItem(player_t *player, boolean weapon)
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // No balloons in Match if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // No balloons in Match
return false; return false;
if (player->kartstuff[k_magnettimer]) // You should probably collect stuff when you're attracting it :V
return true;
if (player->kartstuff[k_bootaketimer] || player->kartstuff[k_boostolentimer] if (player->kartstuff[k_bootaketimer] || player->kartstuff[k_boostolentimer]
|| player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_goldshroomtimer]) // Item-specific timer going off || player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_goldshroomtimer]) // Item-specific timer going off
return false; return false;
@ -407,7 +410,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
{ {
case MT_RANDOMITEM: // SRB2kart case MT_RANDOMITEM: // SRB2kart
case MT_FLINGRANDOMITEM: case MT_FLINGRANDOMITEM:
if (!(P_CanPickupItem(player, false))) if (!P_CanPickupItem(player, false) && special->tracer != toucher)
return; return;
special->momx = special->momy = special->momz = 0; special->momx = special->momy = special->momz = 0;
P_SetTarget(&special->target, toucher); P_SetTarget(&special->target, toucher);
@ -3164,7 +3167,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
return false; return false;
else else
{ {
if (inflictor && (inflictor->type == MT_GREENITEM || inflictor->type == MT_REDITEM || inflictor->type == MT_REDITEMDUD)) if (inflictor && (inflictor->type == MT_GREENITEM || inflictor->type == MT_REDITEM || inflictor->type == MT_REDITEMDUD || inflictor->player))
{ {
player->kartstuff[k_spinouttype] = 1; player->kartstuff[k_spinouttype] = 1;
K_SpinPlayer(player, source); K_SpinPlayer(player, source);