- Fixed: Resurrecting a player must set mo->special1 to 0 because it is used
as a counter by the Hexen fighter's fist weapon. - Fixed: The Wraithwerge's spirits shouldn't attack friends. - Fixed: The Heresiarch's balls must not adjust their z-position after the Heresiarch dies. - Added damage type specific pain chances and an MF5_NOPAIN flag that can be used to suppress entering the pain state altogether. - Changed font initialization so that you can define replacements for the default fonts in FONTDEFS. - Removed the 'add a bot' menu option since bots are beyond repair and therefore mostly useless. - Fixed: Hitscan attacks must always spawn a puff so that it and its properties can be used as damage inflictor. SVN r534 (trunk)
This commit is contained in:
parent
73f96e1df6
commit
87383a32c6
13 changed files with 114 additions and 34 deletions
|
|
@ -2782,6 +2782,8 @@ void P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
|
|||
angle_t srcangle = angle;
|
||||
int srcpitch = pitch;
|
||||
bool hitGhosts;
|
||||
bool killPuff = false;
|
||||
AActor *puff = NULL;
|
||||
|
||||
angle >>= ANGLETOFINESHIFT;
|
||||
pitch = (angle_t)(pitch) >> ANGLETOFINESHIFT;
|
||||
|
|
@ -2827,7 +2829,6 @@ void P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
|
|||
else
|
||||
{
|
||||
fixed_t hitx = 0, hity = 0, hitz = 0;
|
||||
AActor *puff = NULL;
|
||||
|
||||
if (trace.HitType != TRACE_HitActor)
|
||||
{
|
||||
|
|
@ -2917,12 +2918,18 @@ void P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
|
|||
flags |= DMG_NO_ARMOR;
|
||||
}
|
||||
|
||||
if (puff == NULL)
|
||||
{
|
||||
// Since the puff is the damage inflictor we need it here
|
||||
// regardless of whether it is displayed or not.
|
||||
puff = P_SpawnPuff (pufftype, hitx, hity, hitz, angle - ANG180, 2, true);
|
||||
killPuff = true;
|
||||
}
|
||||
P_DamageMobj (trace.Actor, puff ? puff : t1, t1, damage, damageType, flags);
|
||||
}
|
||||
}
|
||||
if (trace.CrossedWater)
|
||||
{
|
||||
bool killPuff = false;
|
||||
|
||||
if (puff == NULL)
|
||||
{ // Spawn puff just to get a mass for the splash
|
||||
|
|
@ -2930,12 +2937,12 @@ void P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
|
|||
killPuff = true;
|
||||
}
|
||||
SpawnDeepSplash (t1, trace, puff, vx, vy, vz);
|
||||
if (killPuff)
|
||||
{
|
||||
puff->Destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (killPuff && puff != NULL)
|
||||
{
|
||||
puff->Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
void P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue