mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-24 13:11:33 +00:00
- 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:
parent
e09629e2b6
commit
ba61c60d52
6 changed files with 26 additions and 11 deletions
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 =====
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue