Fix up fake and mine to use the trail code correctly

This commit is contained in:
TehRealSalt 2018-06-16 20:42:47 -04:00
parent ee96b8c735
commit 3aed1df8eb
3 changed files with 25 additions and 22 deletions

View file

@ -3109,14 +3109,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->kartstuff[k_eggmanheld] = 1;
player->pflags |= PF_ATTACKDOWN;
newangle = player->mo->angle;
newx = player->mo->x + P_ReturnThrustX(player->mo, newangle + ANGLE_180, 64*FRACUNIT);
newy = player->mo->y + P_ReturnThrustY(player->mo, newangle + ANGLE_180, 64*FRACUNIT);
newx = player->mo->x + P_ReturnThrustX(player->mo, newangle + ANGLE_180, mobjinfo[MT_FAKESHIELD].radius);
newy = player->mo->y + P_ReturnThrustY(player->mo, newangle + ANGLE_180, mobjinfo[MT_FAKESHIELD].radius);
mo = P_SpawnMobj(newx, newy, player->mo->z, MT_FAKESHIELD);
mo->threshold = 10;
mo->movecount = 1;
mo->lastlook = 1;
if (mo)
{
mo->scale = FRACUNIT/2;
mo->threshold = 10;
P_SetTarget(&mo->target, player->mo);
P_SetTarget(&player->mo->hnext, mo);
}
@ -3272,10 +3272,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
player->kartstuff[k_itemheld] = 1;
player->pflags |= PF_ATTACKDOWN;
newangle = player->mo->angle;
newx = player->mo->x + P_ReturnThrustX(player->mo, newangle + ANGLE_180, 64*FRACUNIT);
newy = player->mo->y + P_ReturnThrustY(player->mo, newangle + ANGLE_180, 64*FRACUNIT);
newx = player->mo->x + P_ReturnThrustX(player->mo, newangle + ANGLE_180, mobjinfo[MT_SSMINE_SHIELD].radius);
newy = player->mo->y + P_ReturnThrustY(player->mo, newangle + ANGLE_180, mobjinfo[MT_SSMINE_SHIELD].radius);
mo = P_SpawnMobj(newx, newy, player->mo->z, MT_SSMINE_SHIELD);
mo->threshold = 10;
mo->movecount = 1;
mo->lastlook = 1;
if (mo)
{
P_SetTarget(&mo->target, player->mo);

View file

@ -2100,13 +2100,10 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source)
if (target->target->player->kartstuff[k_eggmanheld] && target->type == MT_FAKESHIELD)
target->target->player->kartstuff[k_eggmanheld] = 0;
if ((target->target->player->kartstuff[k_itemheld])
&& ((target->type == MT_GREENSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_ORBINAUT)
|| (target->type == MT_JAWZ_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_JAWZ)
|| (target->type == MT_BANANA_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_BANANA)
|| (target->type == MT_SSMINE_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_MINE)))
if (target->target->player->kartstuff[k_itemheld])
{
if ((target->type == MT_BANANA_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_BANANA)
if ((target->type == MT_BANANA_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_BANANA) // trail items
|| (target->type == MT_SSMINE_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_MINE))
{
if (target->lastlook != 0 && target->lastlook < target->target->player->kartstuff[k_itemamount])
@ -2117,17 +2114,21 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source)
}
else
target->target->player->kartstuff[k_itemamount]--;
if (!target->target->player->kartstuff[k_itemamount])
target->target->player->kartstuff[k_itemheld] = 0;
}
else
else if ((target->type == MT_GREENSHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_ORBINAUT) // orbit items
|| (target->type == MT_JAWZ_SHIELD && target->target->player->kartstuff[k_itemtype] == KITEM_JAWZ))
{
if (target->lastlook > 0)
target->target->player->kartstuff[k_itemamount] = target->lastlook-1;
else
target->target->player->kartstuff[k_itemamount]--;
}
if (!target->target->player->kartstuff[k_itemamount])
target->target->player->kartstuff[k_itemheld] = 0;
if (!target->target->player->kartstuff[k_itemamount])
target->target->player->kartstuff[k_itemheld] = 0;
}
}
}
//

View file

@ -6689,7 +6689,7 @@ void P_MobjThinker(mobj_t *mobj)
}
case MT_GREENSHIELD: // Kart orbit items
case MT_JAWZ_SHIELD:
if (mobj->health > 0 && mobj->target && mobj->target->player && mobj->target->player->mo
if (mobj->health > 0 && mobj->target && mobj->target->player
&& mobj->target->player->health > 0 && !mobj->target->player->spectator)
{
fixed_t z;
@ -6762,7 +6762,7 @@ void P_MobjThinker(mobj_t *mobj)
}
}
else if ((mobj->health > 0
&& (!mobj->target || !mobj->target->player || !mobj->target->player->mo || mobj->target->player->health <= 0 || mobj->target->player->spectator))
&& (!mobj->target || !mobj->target->player || mobj->target->player->health <= 0 || mobj->target->player->spectator))
|| (mobj->health <= 0 && mobj->z <= mobj->floorz)
|| P_CheckDeathPitCollide(mobj)) // When in death state
{
@ -6773,7 +6773,7 @@ void P_MobjThinker(mobj_t *mobj)
case MT_BANANA_SHIELD: // Kart trailing items
case MT_SSMINE_SHIELD:
case MT_FAKESHIELD:
if (mobj->health > 0 && mobj->target && mobj->target->player && mobj->target->player->mo
if (mobj->health > 0 && mobj->target && mobj->target->player
&& mobj->target->player->health > 0 && !mobj->target->player->spectator)
{
if (mobj->lastlook == 1)
@ -6822,15 +6822,15 @@ void P_MobjThinker(mobj_t *mobj)
if ((mobj->type == MT_BANANA_SHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_BANANA)
|| (mobj->type == MT_SSMINE_SHIELD && mobj->target->player->kartstuff[k_itemtype] != KITEM_MINE)
|| (mobj->type == MT_FAKESHIELD && !mobj->target->player->kartstuff[k_eggmanheld])
|| (mobj->type != MT_FAKESHIELD && !mobj->target->player->kartstuff[k_itemheld])
|| (mobj->lastlook > 0 && mobj->target->player->kartstuff[k_itemamount] < mobj->lastlook))
|| (mobj->type != MT_FAKESHIELD && (!mobj->target->player->kartstuff[k_itemheld]
|| (mobj->lastlook > 0 && mobj->target->player->kartstuff[k_itemamount] < mobj->lastlook))))
{
P_RemoveMobj(mobj);
return;
}
}
else if ((mobj->health > 0
&& (!mobj->target || !mobj->target->player || !mobj->target->player->mo || mobj->target->player->health <= 0 || mobj->target->player->spectator))
&& (!mobj->target || !mobj->target->player || mobj->target->player->health <= 0 || mobj->target->player->spectator))
|| (mobj->health <= 0 && mobj->z <= mobj->floorz)
|| P_CheckDeathPitCollide(mobj)) // When in death state
{