- Changed: For actors not being spawned on the floor P_FindFloorCeiling should

be used to prevent them from dropping through 3DMIDTEX textures.
- Fixed: AMageStaffFX2::IsOkayToAttack overwrote the projectile's angle variable. 

SVN r970 (trunk)
This commit is contained in:
Christoph Oelckers 2008-05-14 07:45:40 +00:00
parent c4cbef9e58
commit 6dbdcf5f60
5 changed files with 22 additions and 10 deletions

View file

@ -1,3 +1,8 @@
May 13, 2008 (Changes by Graf Zahl)
- Changed: For actors not being spawned on the floor P_FindFloorCeiling should
be used to prevent them from dropping through 3DMIDTEX textures.
- Fixed: AMageStaffFX2::IsOkayToAttack overwrote the projectile's angle variable.
May 13, 2008
- Changed the types of object hash indices in FArchive from size_t to DWORD.
This seems to fix crashes on GCC 64-bit builds when saving games. Not sure
@ -8,6 +13,7 @@ May 13, 2008
FString::Format() so that I can fix all the problem printf strings that a
64-bit GCC compile finds.
>>>>>>> .r969
May 12, 2008 (Changes by Graf Zahl)
- Added Skulltag's PUFFGETSOWNER flag.
- Fixed: Parsing sector special bit masks must be done backwards so that later

View file

@ -321,7 +321,7 @@ bool AMageStaffFX2::IsOkayToAttack (AActor *link)
else if (P_CheckSight (this, link))
{
AActor *master = target;
angle = R_PointToAngle2 (master->x, master->y,
angle_t angle = R_PointToAngle2 (master->x, master->y,
link->x, link->y) - master->angle;
angle >>= 24;
if (angle>226 || angle<30)

View file

@ -373,7 +373,7 @@ bool P_CheckSight (const AActor* t1, const AActor* t2, int flags=0);
void P_ResetSightCounters (bool full);
void P_UseLines (player_t* player);
bool P_UsePuzzleItem (AActor *actor, int itemType);
void P_FindFloorCeiling (AActor *actor);
void P_FindFloorCeiling (AActor *actor, bool onlymidtex = false);
bool P_ChangeSector (sector_t* sector, int crunch, int amt, int floorOrCeil, bool isreset);

View file

@ -163,7 +163,7 @@ static bool PIT_FindFloorCeiling (line_t *ld, const FBoundingBox &box, FCheckPos
//
//==========================================================================
void P_FindFloorCeiling (AActor *actor)
void P_FindFloorCeiling (AActor *actor, bool onlymidtex)
{
sector_t *sec;
FCheckPosition tmf;
@ -194,13 +194,16 @@ void P_FindFloorCeiling (AActor *actor)
if (tmf.touchmidtex) tmf.dropoffz = tmf.floorz;
actor->floorz = tmf.floorz;
actor->dropoffz = tmf.dropoffz;
actor->ceilingz = tmf.ceilingz;
actor->floorpic = tmf.floorpic;
actor->floorsector = tmf.floorsector;
actor->ceilingpic = tmf.ceilingpic;
actor->ceilingsector = tmf.ceilingsector;
if (!onlymidtex || (tmf.touchmidtex && (tmf.floorz < actor->z)))
{
actor->floorz = tmf.floorz;
actor->dropoffz = tmf.dropoffz;
actor->ceilingz = tmf.ceilingz;
actor->floorpic = tmf.floorpic;
actor->floorsector = tmf.floorsector;
actor->ceilingpic = tmf.ceilingpic;
actor->ceilingsector = tmf.ceilingsector;
}
}
//

View file

@ -3238,6 +3238,9 @@ AActor *AActor::StaticSpawn (const PClass *type, fixed_t ix, fixed_t iy, fixed_t
actor->floorpic = actor->floorsector->floorpic;
actor->ceilingsector = actor->Sector;
actor->ceilingpic = actor->ceilingsector->ceilingpic;
// Check if there's something solid to stand on between the current position and the
// current sector's floor.
P_FindFloorCeiling(actor, true);
}
else if (!(actor->flags5 & MF5_NOINTERACTION))
{