- Added Gez's RandomSpawner patch: If a randomspawner is given a Z-height in the map editor, and the spawned object has a spawn height flag, it is ignored by the spawned object. This little patch fixes that.

SVN r2304 (trunk)
This commit is contained in:
Randy Heit 2010-04-26 01:49:29 +00:00
parent 5fc654dac2
commit 4e693e1c98
1 changed files with 4 additions and 2 deletions

View File

@ -114,6 +114,7 @@ class ARandomSpawner : public AActor
{ {
// copy everything relevant // copy everything relevant
newmobj->SpawnAngle = newmobj->angle = angle; newmobj->SpawnAngle = newmobj->angle = angle;
newmobj->SpawnPoint[2] = SpawnPoint[2];
newmobj->special = special; newmobj->special = special;
newmobj->args[0] = args[0]; newmobj->args[0] = args[0];
newmobj->args[1] = args[1]; newmobj->args[1] = args[1];
@ -137,10 +138,10 @@ class ARandomSpawner : public AActor
// a health set to -2 after spawning, for internal reasons. // a health set to -2 after spawning, for internal reasons.
if (health != SpawnHealth()) newmobj->health = health; if (health != SpawnHealth()) newmobj->health = health;
if (!(flags & MF_DROPPED)) newmobj->flags &= ~MF_DROPPED; if (!(flags & MF_DROPPED)) newmobj->flags &= ~MF_DROPPED;
// Handle special altitude flags // Handle special altitude flags
if (newmobj->flags & MF_SPAWNCEILING) if (newmobj->flags & MF_SPAWNCEILING)
{ {
newmobj->z = newmobj->ceilingz - newmobj->height; newmobj->z = newmobj->ceilingz - newmobj->height - SpawnPoint[2];
} }
else if (newmobj->flags2 & MF2_SPAWNFLOAT) else if (newmobj->flags2 & MF2_SPAWNFLOAT)
{ {
@ -150,6 +151,7 @@ class ARandomSpawner : public AActor
space -= 40*FRACUNIT; space -= 40*FRACUNIT;
newmobj->z = MulScale8 (space, pr_randomspawn()) + newmobj->floorz + 40*FRACUNIT; newmobj->z = MulScale8 (space, pr_randomspawn()) + newmobj->floorz + 40*FRACUNIT;
} }
newmobj->z += SpawnPoint[2];
} }
if (newmobj->flags & MF_MISSILE) if (newmobj->flags & MF_MISSILE)
P_CheckMissileSpawn(newmobj); P_CheckMissileSpawn(newmobj);