Move the fireball despawn to later so its target/tracer isn't nulled until AFTER the enemy it touches is killed, allowing for correct point delivery (resolves #373).

This commit is contained in:
toaster 2019-11-26 17:56:42 +00:00
parent 05ee9c8a21
commit fa01a32a7f

View file

@ -1303,11 +1303,6 @@ static boolean PIT_CheckThing(mobj_t *thing)
return false;
}
// Fireball touched an enemy
// Don't bounce though, just despawn right there
if ((tmthing->type == MT_FIREBALL) && (thing->flags & MF_ENEMY))
P_KillMobj(tmthing, NULL, NULL, 0);
// damage / explode
if (tmthing->flags & MF_ENEMY) // An actual ENEMY! (Like the deton, for example)
P_DamageMobj(thing, tmthing, tmthing, 1, 0);
@ -1356,6 +1351,11 @@ static boolean PIT_CheckThing(mobj_t *thing)
P_DamageMobj(thing, tmthing, tmthing->target, 1, damagetype);
}
// Fireball touched an enemy
// Don't bounce though, just despawn right there
if ((tmthing->type == MT_FIREBALL) && (thing->flags & MF_ENEMY))
P_KillMobj(tmthing, NULL, NULL, 0);
// don't traverse any more
if (tmthing->type == MT_SHELL)