K_BananaBallhogCollide: Handle use after deletes

- Return early if t1 was removed
- Don't call K_GetCollideAngle if t2 is removed
    - Only relevant here because this is one of the few contexts that causes a pre-K_GetCollideAngle deletion, other circumstances should be fine..?
This commit is contained in:
toaster 2023-03-21 18:31:07 +00:00
parent 7868f21dd0
commit bf64d7a0c1

View file

@ -113,15 +113,25 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2)
damageitem = true;
}
if (damageitem)
if (damageitem && P_MobjWasRemoved(t1) == false)
{
// This Item Damage
angle_t bounceangle = K_GetCollideAngle(t2, t1);
angle_t bounceangle;
if (P_MobjWasRemoved(t2) == false)
{
bounceangle = K_GetCollideAngle(t2, t1);
}
else
{
bounceangle = K_MomentumAngle(t1) + ANGLE_90;
}
// This Item Damage
S_StartSound(t1, t1->info->deathsound);
P_KillMobj(t1, t2, t2, DMG_NORMAL);
P_SetObjectMomZ(t1, 24*FRACUNIT, false);
P_InstaThrust(t1, bounceangle, 16*FRACUNIT);
}