- Fixed: ActorFlagSetOrReset() wasn't receiving the + or - character from

ParseActorProperties().
- Fixed: The decorate FindFlag() function returned flags from ActorFlags
  instead of the passed flags set.
- Fixed: The CHT_CHAINSAW, CHT_POWER, CHT_HEALTH, and CHT_RESSURECT needed
  NULL player->mo checks.
- Fixed: The "give all" command didn't give the backpack in Doom, and it
  must give the backpack before giving ammo.
- Fixed: P_SetPsprite() must not call the action function if the player is
  not attached to an actor. This can happen, for instance, if the level is
  destroyed while the player is holding a powered-up Phoenix Rod. As part
  of its EndPowerup() function, it sets the psprite to the regular version,
  but the player actor has already been destroyed.
- Fixed: FinishThingdef() needs to check for valid names, because weapons
  could have inherited valid pointers from their superclass.
- Fixed: fuglyname didn't work.
- Fixed: Redefining $ambient sounds leaked memory.
- Added Jim's crashcatcher.c fix for better shell support.
- VC7.1 seems to have no trouble distinguishing between passing a (const
  TypeInfo *) reference to operator<< and the generic, templated (object *)
  version, so a few places that can benefit from it now use it. I believe
  VC6 had problems with this, which is why I didn't do it all along. The
  function's implementation was also moved out of dobject.cpp and into
  farchive.cpp.
- Fixed: UnpackPixels() unpacked all chunks in a byte, which is wrong for the
  last byte in a row if the image width is not an even multiple of the number
  pixels per byte.
- Fixed: P_TranslateLineDef() should only clear monster activation for secret
  useable lines, not crossable lines.
- Fixed: Some leftover P_IsHostile() calls still needed to be rewritten.
- Fixed: AWeaponHolder::Serialize() wrote the class type in all circumstances.


SVN r20 (trunk)
This commit is contained in:
Randy Heit 2006-03-14 06:11:39 +00:00
commit 09c28e5bf9
19 changed files with 176 additions and 103 deletions

View file

@ -1195,7 +1195,7 @@ bool AActor::OkayToSwitchTarget (AActor *other)
if ((master != NULL && other->IsA(master->GetClass())) || // don't attack your master (or others of its type)
(other->master != NULL && IsA(other->master->GetClass()))) // don't attack your minion (or those of others of your type)
{
if (!P_IsHostile(this, other) && // allow target switch if other is considered hostile
if (!IsHostile (other) && // allow target switch if other is considered hostile
(other->tid != TIDtoHate || TIDtoHate == 0) && // or has the tid we hate
other->TIDtoHate == TIDtoHate) // or has different hate information
{
@ -1205,7 +1205,7 @@ bool AActor::OkayToSwitchTarget (AActor *other)
if ((other->flags3 & MF3_NOTARGET) &&
(other->tid != TIDtoHate || TIDtoHate == 0) &&
!P_IsHostile (this, other))
!IsHostile (other))
return false;
if (threshold != 0 && !(flags4 & MF4_QUICKTORETALIATE))
return false;
@ -1214,7 +1214,7 @@ bool AActor::OkayToSwitchTarget (AActor *other)
return false;
}
if ((gameinfo.gametype == GAME_Strife || infighting < 0) &&
other->player == NULL && !P_IsHostile (this, other))
other->player == NULL && !IsHostile (other))
{
return false; // Strife & infighting off: Non-friendlies don't target other non-friendlies
}