mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'ring-sting-fixes' into 'master'
Fix ringsting and hitlag Closes #111 See merge request KartKrew/Kart!511
This commit is contained in:
commit
d54cfcdc7b
2 changed files with 40 additions and 9 deletions
|
|
@ -17,6 +17,9 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2)
|
||||||
boolean damageitem = false;
|
boolean damageitem = false;
|
||||||
boolean sprung = false;
|
boolean sprung = false;
|
||||||
|
|
||||||
|
if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
@ -108,6 +111,9 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2)
|
||||||
{
|
{
|
||||||
boolean damageitem = false;
|
boolean damageitem = false;
|
||||||
|
|
||||||
|
if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
@ -186,6 +192,9 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2)
|
||||||
|
|
||||||
boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2)
|
boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2)
|
||||||
{
|
{
|
||||||
|
if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
// Push fakes out of other item boxes
|
// Push fakes out of other item boxes
|
||||||
if (t2->type == MT_RANDOMITEM || t2->type == MT_EGGMANITEM)
|
if (t2->type == MT_RANDOMITEM || t2->type == MT_EGGMANITEM)
|
||||||
{
|
{
|
||||||
|
|
@ -258,6 +267,9 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2)
|
||||||
|
|
||||||
boolean K_MineCollide(mobj_t *t1, mobj_t *t2)
|
boolean K_MineCollide(mobj_t *t1, mobj_t *t2)
|
||||||
{
|
{
|
||||||
|
if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
@ -331,6 +343,9 @@ boolean K_MineExplosionCollide(mobj_t *t1, mobj_t *t2)
|
||||||
|
|
||||||
boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2)
|
boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2)
|
||||||
{
|
{
|
||||||
|
if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
@ -398,6 +413,9 @@ boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2)
|
||||||
|
|
||||||
boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2)
|
boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2)
|
||||||
{
|
{
|
||||||
|
if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
@ -465,7 +483,8 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2)
|
||||||
{
|
{
|
||||||
boolean t1Condition = false;
|
boolean t1Condition = false;
|
||||||
boolean t2Condition = false;
|
boolean t2Condition = false;
|
||||||
boolean stung = false;
|
boolean stungT1 = false;
|
||||||
|
boolean stungT2 = false;
|
||||||
|
|
||||||
// Grow damage
|
// Grow damage
|
||||||
t1Condition = (t1->scale > t2->scale + (mapobjectscale/8));
|
t1Condition = (t1->scale > t2->scale + (mapobjectscale/8));
|
||||||
|
|
@ -537,25 +556,35 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2)
|
||||||
|
|
||||||
if (t1Condition == true)
|
if (t1Condition == true)
|
||||||
{
|
{
|
||||||
P_PlayerRingBurst(t2->player, 1);
|
|
||||||
|
|
||||||
if (t2->player->rings <= 0)
|
if (t2->player->rings <= 0)
|
||||||
{
|
{
|
||||||
P_DamageMobj(t2, t1, t1, 1, DMG_STING);
|
P_DamageMobj(t2, t1, t1, 1, DMG_STING);
|
||||||
stung = true;
|
stungT2 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_PlayerRingBurst(t2->player, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t2Condition == true)
|
if (t2Condition == true)
|
||||||
{
|
{
|
||||||
P_PlayerRingBurst(t1->player, 1);
|
|
||||||
|
|
||||||
if (t1->player->rings <= 0)
|
if (t1->player->rings <= 0)
|
||||||
{
|
{
|
||||||
P_DamageMobj(t1, t2, t2, 1, DMG_STING);
|
P_DamageMobj(t1, t2, t2, 1, DMG_STING);
|
||||||
stung = true;
|
stungT1 = true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return stung;
|
P_PlayerRingBurst(t1->player, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// No damage hitlag for stinging.
|
||||||
|
if (stungT1 == true && stungT2 == false)
|
||||||
|
{
|
||||||
|
t2->eflags &= ~MFE_DAMAGEHITLAG;
|
||||||
|
}
|
||||||
|
else if (stungT2 == true && stungT1 == false)
|
||||||
|
{
|
||||||
|
t1->eflags &= ~MFE_DAMAGEHITLAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (stungT1 || stungT2);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1844,8 +1844,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
||||||
if (!(target->flags & MF_SHOOTABLE))
|
if (!(target->flags & MF_SHOOTABLE))
|
||||||
return false; // shouldn't happen...
|
return false; // shouldn't happen...
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (!(damagetype & DMG_DEATHMASK) && target->hitlag > 0)
|
if (!(damagetype & DMG_DEATHMASK) && target->hitlag > 0)
|
||||||
return false;
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target->flags2 & MF2_SKULLFLY)
|
if (target->flags2 & MF2_SKULLFLY)
|
||||||
|
|
@ -1928,7 +1930,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
||||||
|
|
||||||
if (combo == false)
|
if (combo == false)
|
||||||
{
|
{
|
||||||
if (player->flashing > 0)
|
if (player->mo->hitlag == 0 && player->flashing > 0)
|
||||||
{
|
{
|
||||||
// Post-hit invincibility
|
// Post-hit invincibility
|
||||||
K_DoInstashield(player);
|
K_DoInstashield(player);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue