mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 23:01:50 +00:00
- fixed: Source for nailbomb damage in A_Explode should be the caller's target, if defined and the caller is a missile.
This commit is contained in:
parent
b9f7e0eb36
commit
5327055495
3 changed files with 6 additions and 3 deletions
|
@ -1286,9 +1286,9 @@ DEFINE_ACTION_FUNCTION(AActor, A_Explode)
|
||||||
{
|
{
|
||||||
ang = i*360./nails;
|
ang = i*360./nails;
|
||||||
// Comparing the results of a test wad with Eternity, it seems A_NailBomb does not aim
|
// Comparing the results of a test wad with Eternity, it seems A_NailBomb does not aim
|
||||||
P_LineAttack (self, ang, MISSILERANGE, 0.,
|
P_LineAttack(self, ang, MISSILERANGE, 0.,
|
||||||
//P_AimLineAttack (self, ang, MISSILERANGE),
|
//P_AimLineAttack (self, ang, MISSILERANGE),
|
||||||
naildamage, NAME_Hitscan, pufftype);
|
naildamage, NAME_Hitscan, pufftype, (self->flags & MF_MISSILE) ? LAF_TARGETISSOURCE : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -323,6 +323,7 @@ enum // P_LineAttack flags
|
||||||
LAF_NORANDOMPUFFZ = 2,
|
LAF_NORANDOMPUFFZ = 2,
|
||||||
LAF_NOIMPACTDECAL = 4,
|
LAF_NOIMPACTDECAL = 4,
|
||||||
LAF_NOINTERACT = 8,
|
LAF_NOINTERACT = 8,
|
||||||
|
LAF_TARGETISSOURCE = 16,
|
||||||
};
|
};
|
||||||
|
|
||||||
AActor *P_LineAttack(AActor *t1, DAngle angle, double distance, DAngle pitch, int damage, FName damageType, PClassActor *pufftype, int flags = 0, FTranslatedLineTarget *victim = NULL, int *actualdamage = NULL);
|
AActor *P_LineAttack(AActor *t1, DAngle angle, double distance, DAngle pitch, int damage, FName damageType, PClassActor *pufftype, int flags = 0, FTranslatedLineTarget *victim = NULL, int *actualdamage = NULL);
|
||||||
|
|
|
@ -4476,7 +4476,9 @@ AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
|
||||||
puff = P_SpawnPuff(t1, pufftype, bleedpos, 0., 0., 2, puffFlags | PF_HITTHING | PF_TEMPORARY);
|
puff = P_SpawnPuff(t1, pufftype, bleedpos, 0., 0., 2, puffFlags | PF_HITTHING | PF_TEMPORARY);
|
||||||
killPuff = true;
|
killPuff = true;
|
||||||
}
|
}
|
||||||
newdam = P_DamageMobj(trace.Actor, puff ? puff : t1, t1, damage, damageType, dmgflags|DMG_USEANGLE, trace.SrcAngleFromTarget);
|
auto src = t1;
|
||||||
|
if ((flags & LAF_TARGETISSOURCE) && t1 && t1->target) src = t1->target;
|
||||||
|
newdam = P_DamageMobj(trace.Actor, puff ? puff : t1, src, damage, damageType, dmgflags|DMG_USEANGLE, trace.SrcAngleFromTarget);
|
||||||
if (actualdamage != NULL)
|
if (actualdamage != NULL)
|
||||||
{
|
{
|
||||||
*actualdamage = newdam;
|
*actualdamage = newdam;
|
||||||
|
|
Loading…
Reference in a new issue