Reimplement ringloss on bump. Also fix some shield issues.
This commit is contained in:
parent
2399cb4f70
commit
a1c3c6b9e1
5 changed files with 29 additions and 13 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue