- fixed: When A_SpawnProjectile got fixed, this fix broke the old A_CustomMissile function because the added workaround was overlooked.

This now separates the code more clearly into the twp paths to make the differences easier to see and compare.
This commit is contained in:
Christoph Oelckers 2019-01-27 14:00:23 +01:00
parent cf7e6cc532
commit 1ab3d4dd09

View file

@ -972,13 +972,26 @@ DEFINE_ACTION_FUNCTION(AActor, A_SpawnProjectile)
if ( (CMF_ABSOLUTEPITCH|CMF_OFFSETPITCH) & flags) if ( (CMF_ABSOLUTEPITCH|CMF_OFFSETPITCH) & flags)
{ {
if (CMF_OFFSETPITCH & flags) if (!(flags & CMF_BADPITCH))
{ {
Pitch += missile->Vel.Pitch(); if (CMF_OFFSETPITCH & flags)
{
Pitch += missile->Vel.Pitch();
}
missilespeed = fabs(Pitch.Cos() * missile->Speed);
missile->Vel.Z = -Pitch.Sin() * missile->Speed;
}
else
{
// Replicate the bogus calculation from A_CustomMissile in its entirety.
// This tried to do the right thing but in the process effectively inverted the base pitch.
if (CMF_OFFSETPITCH & flags)
{
Pitch -= missile->Vel.Pitch();
}
missilespeed = fabs(Pitch.Cos() * missile->Speed);
missile->Vel.Z = Pitch.Sin() * missile->Speed;
} }
missilespeed = fabs(Pitch.Cos() * missile->Speed);
missile->Vel.Z = Pitch.Sin() * missile->Speed;
if (!(flags & CMF_BADPITCH)) missile->Vel.Z *= -1;
} }
else else
{ {