- added a NULL pointer check to fog spawning in unmorphing code.

- fixed: frozen corpses need to be treated as solid by z-movement code.
- fixed previous commit.


SVN r1903 (trunk)
This commit is contained in:
Christoph Oelckers 2009-10-09 20:18:31 +00:00
parent 18c1b2685f
commit 19ef8399a8
4 changed files with 26 additions and 6 deletions

View file

@ -1,4 +1,6 @@
October 9, 2009 (Changes by Graf Zahl) October 9, 2009 (Changes by Graf Zahl)
- added a NULL pointer check to fog spawning in unmorphing code.
- fixed: frozen corpses need to be treated as solid by z-movement code.
- fixed: AAmbientSound::Serialize was adjusting its timer value for savegames - fixed: AAmbientSound::Serialize was adjusting its timer value for savegames
even when it was set to a 'don't check' value. even when it was set to a 'don't check' value.

View file

@ -314,7 +314,10 @@ bool P_UndoPlayerMorph (player_t *activator, player_t *player, int unmorphflag,
} }
angle = mo->angle >> ANGLETOFINESHIFT; angle = mo->angle >> ANGLETOFINESHIFT;
Spawn(exit_flash, pmo->x + 20*finecosine[angle], pmo->y + 20*finesine[angle], pmo->z + TELEFOGHEIGHT, ALLOW_REPLACE); if (exit_flash != NULL)
{
Spawn(exit_flash, pmo->x + 20*finecosine[angle], pmo->y + 20*finesine[angle], pmo->z + TELEFOGHEIGHT, ALLOW_REPLACE);
}
mo->SetupWeaponSlots(); // Use original class's weapon slots. mo->SetupWeaponSlots(); // Use original class's weapon slots.
beastweap = player->ReadyWeapon; beastweap = player->ReadyWeapon;
if (player->PremorphWeapon != NULL) if (player->PremorphWeapon != NULL)

View file

@ -1441,10 +1441,15 @@ bool P_TestMobjZ (AActor *actor, bool quick, AActor **pOnmobj)
{ // Can't hit thing { // Can't hit thing
continue; continue;
} }
if (thing->flags & (MF_SPECIAL|MF_NOCLIP|MF_CORPSE)) if (thing->flags & (MF_SPECIAL|MF_NOCLIP))
{ // [RH] Corpses and specials and noclippers don't block moves { // [RH] Specials and noclippers don't block moves
continue; continue;
} }
if (thing->flags & (MF_CORPSE))
{ // Corpses need a few more checks
if (!(actor->flags & MF_ICECORPSE))
continue;
}
if (!(thing->flags4 & MF4_ACTLIKEBRIDGE) && (actor->flags & MF_SPECIAL)) if (!(thing->flags4 & MF4_ACTLIKEBRIDGE) && (actor->flags & MF_SPECIAL))
{ // [RH] Only bridges block pickup items { // [RH] Only bridges block pickup items
continue; continue;
@ -4315,10 +4320,15 @@ void P_FindAboveIntersectors (AActor *actor)
{ // Can't hit thing { // Can't hit thing
continue; continue;
} }
if (thing->flags & (MF_CORPSE|MF_SPECIAL)) if (thing->flags & (MF_SPECIAL))
{ // [RH] Corpses and specials don't block moves { // [RH] Corpses and specials don't block moves
continue; continue;
} }
if (thing->flags & (MF_CORPSE))
{ // Corpses need a few more checks
if (!(actor->flags & MF_ICECORPSE))
continue;
}
if (thing == actor) if (thing == actor)
{ // Don't clip against self { // Don't clip against self
continue; continue;
@ -4364,10 +4374,15 @@ void P_FindBelowIntersectors (AActor *actor)
{ // Can't hit thing { // Can't hit thing
continue; continue;
} }
if (thing->flags & (MF_CORPSE|MF_SPECIAL)) if (thing->flags & (MF_SPECIAL))
{ // [RH] Corpses and specials don't block moves { // [RH] Corpses and specials don't block moves
continue; continue;
} }
if (thing->flags & (MF_CORPSE))
{ // Corpses need a few more checks
if (!(actor->flags & MF_ICECORPSE))
continue;
}
if (thing == actor) if (thing == actor)
{ // Don't clip against self { // Don't clip against self
continue; continue;

View file

@ -1940,7 +1940,7 @@ void AAmbientSound::Serialize (FArchive &arc)
else else
{ {
arc << NextCheck; arc << NextCheck;
if (checktime != INT_MAX) if (NextCheck != INT_MAX)
{ {
NextCheck += gametic; NextCheck += gametic;
} }