- Gave Strife's PhosphorousFire the MF2_NODMGTHRUST flag so that its

damage is truly thrustless. The 'thrustless' parameter disabled all
  thrust done by PIT_RadiusDamage but not the one done by P_DamageMobj.
  Also gave Hexen's poison cloud the MF3_BLOODLESSIMPACT flag and made
  spawning of blood decals in PIT_RadiusAttack depend on that. Since with
  these changes the 'bombthrustless' argument to P_RadiusAttack is no 
  longer useful I removed it.


SVN r285 (trunk)
This commit is contained in:
Christoph Oelckers 2006-08-10 21:03:17 +00:00
parent 8e2c37957e
commit b8312a9bd8
6 changed files with 18 additions and 14 deletions

View File

@ -1,4 +1,11 @@
August 10, 2006 (Changes by Graf Zahl)
- Gave Strife's PhosphorousFire the MF2_NODMGTHRUST flag so that its
damage is truly thrustless. The 'thrustless' parameter disabled all
thrust done by PIT_RadiusDamage but not the one done by P_DamageMobj.
Also gave Hexen's poison cloud the MF3_BLOODLESSIMPACT flag and made
spawning of blood decals in PIT_RadiusAttack depend on that. Since with
these changes the 'bombthrustless' argument to P_RadiusAttack is no
longer useful I removed it.
- Fixed: CheckActorInventory stored the return value in the wrong address
on the ACS stack.
- Fixed: Skin sounds weren't properly restored after a SNDINFO reset.

View File

@ -403,7 +403,7 @@ IMPLEMENT_ACTOR (APoisonCloud, Hexen, -1, 0)
PROP_MassLong (0x7fffffff)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF)
PROP_Flags2 (MF2_NODMGTHRUST)
PROP_Flags3 (MF3_DONTSPLASH|MF3_FOILINVUL|MF3_CANBLAST)
PROP_Flags3 (MF3_DONTSPLASH|MF3_FOILINVUL|MF3_CANBLAST|MF3_BLOODLESSIMPACT)
PROP_RenderStyle (STYLE_Translucent)
PROP_Alpha (HX_SHADOW)

View File

@ -1565,7 +1565,7 @@ IMPLEMENT_ACTOR (APhosphorousFire, Strife, -1, 0)
PROP_ReactionTime (120)
PROP_DamageType (MOD_FIRE)
PROP_Flags (MF_NOBLOCKMAP)
PROP_Flags2 (MF2_FLOORCLIP|MF2_NOTELEPORT)
PROP_Flags2 (MF2_FLOORCLIP|MF2_NOTELEPORT|MF2_NODMGTHRUST)
PROP_RenderStyle (STYLE_Add)
END_DEFAULTS
@ -1585,7 +1585,7 @@ void A_SpawnBurn (AActor *self)
void A_BurnArea (AActor *self)
{
P_RadiusAttack (self, self->target, 128, 128, self->DamageType, true, true);
P_RadiusAttack (self, self->target, 128, 128, self->DamageType, true);
}
void A_Burnination (AActor *self)

View File

@ -315,7 +315,7 @@ extern fixed_t CameraX, CameraY, CameraZ;
extern sector_t *CameraSector;
// [RH] Means of death
void P_RadiusAttack (AActor *spot, AActor *source, int damage, int distance, int damageType, bool hurtSelf, bool thrustless=false, bool dodamage=true);
void P_RadiusAttack (AActor *spot, AActor *source, int damage, int distance, int damageType, bool hurtSelf, bool dodamage=true);
void P_DelSector_List();
void P_DelSeclist(msecnode_t *); // phares 3/16/98

View File

@ -3415,7 +3415,6 @@ float bombdistancefloat;
bool DamageSource;
int bombmod;
vec3_t bombvec;
bool bombthrustless;
bool bombdodamage;
//=============================================================================
@ -3525,13 +3524,12 @@ BOOL PIT_RadiusAttack (AActor *thing)
if (bombdodamage) P_DamageMobj (thing, bombspot, bombsource, damage, bombmod);
else thing->flags2 |= MF2_BLASTED;
if (!(bombspot->flags2 & MF2_NODMGTHRUST) &&
!(thing->flags & MF_ICECORPSE))
{
if (bombdodamage) P_TraceBleed (damage, thing, bombspot);
if (!bombthrustless)
if (!(thing->flags & MF_ICECORPSE))
{
if (bombdodamage && !(bombspot->flags3 & MF3_BLOODLESSIMPACT)) P_TraceBleed (damage, thing, bombspot);
if (!(bombspot->flags2 & MF2_NODMGTHRUST))
{
thrust = points * 0.5f / (float)thing->Mass;
if (bombsource == thing)
@ -3593,7 +3591,7 @@ BOOL PIT_RadiusAttack (AActor *thing)
// Source is the creature that caused the explosion at spot.
//
void P_RadiusAttack (AActor *spot, AActor *source, int damage, int distance, int damageType,
bool hurtSource, bool thrustless, bool dodamage)
bool hurtSource, bool dodamage)
{
static TArray<AActor *> radbt;
@ -3614,7 +3612,6 @@ void P_RadiusAttack (AActor *spot, AActor *source, int damage, int distance, int
bombdamage = damage;
bombdistance = distance;
bombdistancefloat = 1.f / (float)distance;
bombthrustless = thrustless;
DamageSource = hurtSource;
bombdamagefloat = (float)damage;
bombmod = damageType;

View File

@ -505,7 +505,7 @@ void A_RadiusThrust (AActor *self)
if (force == 0) force = 128;
if (distance == 0) distance = force;
P_RadiusAttack (self, self->target, force, distance, self->DamageType, affectSource, false, false);
P_RadiusAttack (self, self->target, force, distance, self->DamageType, affectSource, false);
if (self->z <= self->floorz + (distance<<FRACBITS))
{
P_HitFloor (self);