- let Dehacked set the implicit missile flags.

This commit is contained in:
Christoph Oelckers 2023-09-14 23:08:59 +02:00
parent 79ef78e2b5
commit 04815f9db4

View file

@ -1622,6 +1622,11 @@ static int PatchThing (int thingy)
value[0] &= ~MF_TRANSLUCENT; // clean the slot
vchanged[2] = true; value[2] |= 2; // let the TRANSLUCxx code below handle it
}
if (value[0] & MF_MISSILE)
{
// all missiles in Doom are NOTELEPORT, the other flags are for consistency.
info->flags2 |= MF2_IMPACT | MF2_PCROSS | MF2_NOTELEPORT;
}
if ((info->flags & MF_MISSILE) && (info->flags2 & MF2_NOTELEPORT)
&& !(value[0] & MF_MISSILE))
{
@ -4031,12 +4036,14 @@ void ClearBounces(AActor* info)
void SetMissile(AActor* info)
{
info->flags |= MF_MISSILE;
info->flags2 |= MF2_NOTELEPORT | MF2_PCROSS | MF2_IMPACT;
if (info->BounceFlags & BOUNCE_DEH) info->BounceFlags = BOUNCE_Classic | BOUNCE_DEH;
}
void ClearMissile(AActor* info)
{
info->flags &= ~MF_MISSILE;
info->flags2 &= ~(MF2_NOTELEPORT | MF2_PCROSS | MF2_IMPACT);
if (info->BounceFlags & BOUNCE_DEH) info->BounceFlags = BOUNCE_Grenade | BOUNCE_DEH;
}