From 7da83e3bd17a1de0028e3e047706526ce35c66a8 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Sat, 16 Jun 2018 20:42:47 -0400 Subject: [PATCH] Fix up fake and mine to use the trail code correctly --- src/k_kart.c | 14 ++++++++------ src/p_inter.c | 21 +++++++++++---------- src/p_mobj.c | 12 ++++++------ 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 357627d93..72ed4645c 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -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); diff --git a/src/p_inter.c b/src/p_inter.c index fd6264c32..2da571e63 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -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; + } } } // diff --git a/src/p_mobj.c b/src/p_mobj.c index 2880bd1c7..6e6c852b1 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -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 {