- Fixed: A_SorcOffense2 depended on args being bytes and overflowing.

- Fixed: Even though P_DamageMobj checked an attack's originator
  for MF2_NODMGTHRUST the same check was missing from P_RadiusAttack.
- Fixed: A_MinotaurRoam should not assume without check that it was
  called by a MinotaurFriend.
- Fixed: The Minotaur declared A_MntrFloorFire which it did not use.
- Fixed: All Spawnspot functions did not check for a spot tid of 0 as
  the script's activator.
- Fixed: Friendly monsters ignored team association of their owning
  players.


SVN r1770 (trunk)
This commit is contained in:
Christoph Oelckers 2009-08-12 18:57:31 +00:00
commit 385350efae
9 changed files with 83 additions and 48 deletions

View file

@ -2276,26 +2276,42 @@ int DLevelScript::DoSpawn (int type, fixed_t x, fixed_t y, fixed_t z, int tid, i
int DLevelScript::DoSpawnSpot (int type, int spot, int tid, int angle, bool force)
{
FActorIterator iterator (spot);
AActor *aspot;
int spawned = 0;
while ( (aspot = iterator.Next ()) )
if (spot != 0)
{
spawned += DoSpawn (type, aspot->x, aspot->y, aspot->z, tid, angle, force);
FActorIterator iterator (spot);
AActor *aspot;
while ( (aspot = iterator.Next ()) )
{
spawned += DoSpawn (type, aspot->x, aspot->y, aspot->z, tid, angle, force);
}
}
else if (activator != NULL)
{
spawned += DoSpawn (type, activator->x, activator->y, activator->z, tid, angle, force);
}
return spawned;
}
int DLevelScript::DoSpawnSpotFacing (int type, int spot, int tid, bool force)
{
FActorIterator iterator (spot);
AActor *aspot;
int spawned = 0;
while ( (aspot = iterator.Next ()) )
if (spot != 0)
{
spawned += DoSpawn (type, aspot->x, aspot->y, aspot->z, tid, aspot->angle >> 24, force);
FActorIterator iterator (spot);
AActor *aspot;
while ( (aspot = iterator.Next ()) )
{
spawned += DoSpawn (type, aspot->x, aspot->y, aspot->z, tid, aspot->angle >> 24, force);
}
}
else if (activator != NULL)
{
spawned += DoSpawn (type, activator->x, activator->y, activator->z, tid, activator->angle >> 24, force);
}
return spawned;
}