- Fixed: When starting a level while the music has been paused S_Start has

to stop the old music so the new one always starts at the beginning.
- Fixed:: AActor::master was not serialized.
- Fixed: Sound targets pointing to dead players should be cleared before 
  respawning the player.
- Fixed: When the DONTMOVE flag is set A_Chase must not call P_NewChaseDir.
- Changed PowerupGiver initialization so that the actual powerup class is looked
  up during postprocessing.
- Gave Strife's instant death sector type its own damage type.


SVN r778 (trunk)
This commit is contained in:
Christoph Oelckers 2008-03-01 13:12:33 +00:00
commit 03617dc6f0
8 changed files with 77 additions and 19 deletions

View file

@ -320,6 +320,9 @@ void AActor::Serialize (FArchive &arc)
<< gravity
<< FastChaseStrafeCount;
if (SaveVersion >=778)
arc << master;
if (arc.IsStoring ())
{
int convnum = 0;
@ -3645,6 +3648,23 @@ void P_SpawnPlayer (mapthing2_t *mthing, bool tempplayer)
else if (state == PST_REBORN)
{
assert (oldactor != NULL);
// before relocating all pointers to the player all sound targets
// pointing to the old actor have to be NULLed. Otherwise all
// monsters who last targeted this player will wake up immediately
// after the player has respawned.
AActor *th;
TThinkerIterator<AActor> it;
while ((th = it.Next()))
{
if (th->LastHeard == oldactor) th->LastHeard = NULL;
}
for(int i = 0; i < numsectors; i++)
{
if (sectors[i].SoundTarget == oldactor) sectors[i].SoundTarget = NULL;
}
DObject::PointerSubstitution (oldactor, p->mo);
// PointerSubstitution() will also affect the bodyque, so undo that now.
for (int ii=0; ii < BODYQUESIZE; ++ii)