- 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) November 11, 2007 (Changes by Graf Zahl)
- Fixed: The FMOD stream player must specify whether it wants to play the - 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. 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) void G_SecretExitLevel (int position)
{ {
const char *nextmap; const char *nextmap = level.nextmap;
if (level.secretmap[0] != 0)
{
MapData * map = P_OpenMapData(level.secretmap); MapData * map = P_OpenMapData(level.secretmap);
if (map != NULL) if (map != NULL)
{ {
delete map; delete map;
nextmap = level.secretmap; nextmap = level.secretmap;
} }
else }
nextmap = level.nextmap;
G_ChangeLevel(nextmap, position, false); 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); P_NewChaseDir (actor);
} }
} }
else if (dontmove && actor->movecount > 0) actor->movecount--;
// make active sound // make active sound
if (playactive && pr_chase() < 3) if (playactive && pr_chase() < 3)

View file

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

View file

@ -357,6 +357,7 @@ void P_PoisonPlayer (player_t *player, AActor *poisoner, AActor *source, int poi
void P_PoisonDamage (player_t *player, AActor *source, int damage, bool playPainSound); 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 ===== // ===== PO_MAN =====

View file

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