- Fixed: When the DONTMOVE flag for A_Chase was used, movecount was not decreased

resulting in missile attacks not working.
- Fixed: Hitscan attacks used the puff's position to calculate the trajectory for
  weapon kickback.


SVN r568 (trunk)
This commit is contained in:
Christoph Oelckers 2007-11-19 08:13:23 +00:00
parent e09629e2b6
commit ba61c60d52
6 changed files with 26 additions and 11 deletions

View file

@ -1,3 +1,13 @@
November 18, 2007 (Changes by Graf Zahl)
- Fixed TableShit0 definition.
November 13, 2007 (Changes by Graf Zahl)
- Fixed Berserk pickup sound.
- Fixed: When the DONTMOVE flag for A_Chase was used, movecount was not decreased
resulting in missile attacks not working.
- Fixed: Hitscan attacks used the puff's position to calculate the trajectory for
weapon kickback.
November 11, 2007 (Changes by Graf Zahl)
- Fixed: The FMOD stream player must specify whether it wants to play the
sound looped or not when playback is started, not when the stream is created.

View file

@ -1717,16 +1717,17 @@ void G_ExitLevel (int position, bool keepFacing)
void G_SecretExitLevel (int position)
{
const char *nextmap;
const char *nextmap = level.nextmap;
MapData * map = P_OpenMapData(level.secretmap);
if (map != NULL)
if (level.secretmap[0] != 0)
{
delete map;
nextmap = level.secretmap;
MapData * map = P_OpenMapData(level.secretmap);
if (map != NULL)
{
delete map;
nextmap = level.secretmap;
}
}
else
nextmap = level.nextmap;
G_ChangeLevel(nextmap, position, false);
}

View file

@ -2084,6 +2084,7 @@ void A_DoChase (AActor *actor, bool fastchase, FState *meleestate, FState *missi
P_NewChaseDir (actor);
}
}
else if (dontmove && actor->movecount > 0) actor->movecount--;
// make active sound
if (playactive && pr_chase() < 3)

View file

@ -948,7 +948,9 @@ void P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage
if (kickback)
{
ang = R_PointToAngle2 (inflictor->x, inflictor->y,
AActor *origin = (source && (flags & DMG_INFLICTOR_IS_PUFF))? source : inflictor;
ang = R_PointToAngle2 (origin->x, origin->y,
target->x, target->y);
thrust = damage*(FRACUNIT>>3)*kickback / target->Mass;
// [RH] If thrust overflows, use a more reasonable amount
@ -958,7 +960,7 @@ void P_DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage
}
// make fall forwards sometimes
if ((damage < 40) && (damage > target->health)
&& (target->z - inflictor->z > 64*FRACUNIT)
&& (target->z - origin->z > 64*FRACUNIT)
&& (pr_damagemobj()&1)
// [RH] But only if not too fast and not flying
&& thrust < 10*FRACUNIT

View file

@ -356,7 +356,8 @@ bool P_MorphPlayer (player_t *player, const PClass *morphClass);
void P_PoisonPlayer (player_t *player, AActor *poisoner, AActor *source, int poison);
void P_PoisonDamage (player_t *player, AActor *source, int damage, bool playPainSound);
#define DMG_NO_ARMOR 1
#define DMG_NO_ARMOR 1
#define DMG_INFLICTOR_IS_PUFF 2
// ===== PO_MAN =====

View file

@ -2922,7 +2922,7 @@ void P_LineAttack (AActor *t1, angle_t angle, fixed_t distance,
}
if (damage)
{
int flags = 0;
int flags = DMG_INFLICTOR_IS_PUFF;
// Allow MF5_PIERCEARMOR on a weapon as well.
if (t1->player != NULL && t1->player->ReadyWeapon != NULL &&
t1->player->ReadyWeapon->flags5 & MF5_PIERCEARMOR)