diff --git a/src/k_collide.c b/src/k_collide.c index ddda7694d..447f5eb40 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -60,7 +60,7 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) if (t2->player->hyudorotimer) return true; // no interaction - if (t2->player->flamestore && t2->player->itemtype == KITEM_FLAMESHIELD) + if (t2->player->flamedash && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -154,7 +154,9 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) if (t1->type == MT_BANANA && t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->flamestore && t2->player->itemtype == KITEM_FLAMESHIELD) + damageitem = true; + + if (t2->player->flamedash && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -163,8 +165,6 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) { P_DamageMobj(t2, t1, t1->target, 1, DMG_NORMAL); } - - damageitem = true; } else if (t2->type == MT_BANANA || t2->type == MT_BANANA_SHIELD || t2->type == MT_ORBINAUT || t2->type == MT_ORBINAUT_SHIELD @@ -246,7 +246,7 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) t2->player->roulettetype = KROULETTETYPE_EGGMAN; } - if (t2->player->flamestore && t2->player->itemtype == KITEM_FLAMESHIELD) + if (t2->player->flamedash && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -378,7 +378,7 @@ boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2) if (t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->flamestore && t2->player->itemtype == KITEM_FLAMESHIELD) + if (t2->player->flamedash && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -689,8 +689,8 @@ boolean K_SMKIceBlockCollide(mobj_t *t1, mobj_t *t2) boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) { - const boolean flameT1 = ((t1->player->flamestore > 0) && (t1->player->flametimer > 0)); - const boolean flameT2 = ((t2->player->flamestore > 0) && (t2->player->flametimer > 0)); + const boolean flameT1 = ((t1->player->flamedash > 0) && (t1->player->flametimer > 0)); + const boolean flameT2 = ((t2->player->flamedash > 0) && (t2->player->flametimer > 0)); boolean t1Condition = false; boolean t2Condition = false; @@ -768,6 +768,20 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) return true; } } + + // Ring Loss on bump. + t1Condition = ((t2->player->rings > 0) && (K_GetShieldFromPlayer(t2->player) == KSHIELD_NONE)); + t2Condition = ((t1->player->rings > 0) && (K_GetShieldFromPlayer(t1->player) == KSHIELD_NONE)); + + if (t1Condition == true) + { + P_PlayerRingBurst(t2->player, 1); + } + + if (t2Condition == true) + { + P_PlayerRingBurst(t1->player, 1); + } return false; } diff --git a/src/k_hud.c b/src/k_hud.c index 5428bea48..5ab80eba9 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -1247,7 +1247,7 @@ static void K_drawKartItem(void) else localpatch = kp_nodraw; } - else if (stplyr->curshield == KSHIELD_BUBBLE) + else if ((K_GetShieldFromPlayer(stplyr) == KSHIELD_BUBBLE)) { localpatch = kp_bubbleshield[offset]; diff --git a/src/k_kart.c b/src/k_kart.c index 3fae3ca82..465e3676a 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -744,7 +744,8 @@ INT32 K_KartGetItemOdds( if (players[i].exiting) pexiting++; - if (shieldtype != KSHIELD_NONE && shieldtype == K_GetShieldFromPlayer(&players[i])) + if ((shieldtype == K_GetShieldFromItem(players[i].itemtype)) + || (shieldtype == K_GetShieldFromPlayer(&players[i]))) { // Don't allow more than one of each shield type at a time return 0; @@ -956,7 +957,8 @@ INT32 K_KartGetLegacyItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean spb if (players[i].exiting) pexiting++; - if (shieldtype != KSHIELD_NONE && shieldtype == K_GetShieldFromItem(players[i].itemtype)) + if ((shieldtype == K_GetShieldFromItem(players[i].itemtype)) + || (shieldtype == K_GetShieldFromPlayer(&players[i]))) { // Don't allow more than one of each shield type at a time return 0; diff --git a/src/p_inter.c b/src/p_inter.c index 6be5136b3..edb5ad082 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -573,7 +573,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) // kill if (player->invincibilitytimer > 0 || player->growshrinktimer > 0 - || player->flamestore > 0) + || player->flamedash > 0) { P_KillMobj(special, toucher, toucher, DMG_NORMAL); return; diff --git a/src/p_user.c b/src/p_user.c index b102c747d..60be74b7c 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1731,7 +1731,7 @@ static void P_DoBubbleBreath(player_t *player) fixed_t z = player->mo->z; mobj_t *bubble = NULL; - if (!(player->mo->eflags & MFE_UNDERWATER) || player->spectator || player->curshield == KSHIELD_BUBBLE) + if (!(player->mo->eflags & MFE_UNDERWATER) || player->spectator || (K_GetShieldFromPlayer(player) == KSHIELD_BUBBLE)) return; if (player->charflags & SF_MACHINE)