- 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:
Christoph Oelckers 2007-05-26 10:50:32 +00:00
commit 87383a32c6
13 changed files with 114 additions and 34 deletions

View file

@ -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,