- 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) 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 - Fixed: CheckActorInventory stored the return value in the wrong address
on the ACS stack. on the ACS stack.
- Fixed: Skin sounds weren't properly restored after a SNDINFO reset. - 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_MassLong (0x7fffffff)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF) PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF)
PROP_Flags2 (MF2_NODMGTHRUST) 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_RenderStyle (STYLE_Translucent)
PROP_Alpha (HX_SHADOW) PROP_Alpha (HX_SHADOW)

View file

@ -1565,7 +1565,7 @@ IMPLEMENT_ACTOR (APhosphorousFire, Strife, -1, 0)
PROP_ReactionTime (120) PROP_ReactionTime (120)
PROP_DamageType (MOD_FIRE) PROP_DamageType (MOD_FIRE)
PROP_Flags (MF_NOBLOCKMAP) PROP_Flags (MF_NOBLOCKMAP)
PROP_Flags2 (MF2_FLOORCLIP|MF2_NOTELEPORT) PROP_Flags2 (MF2_FLOORCLIP|MF2_NOTELEPORT|MF2_NODMGTHRUST)
PROP_RenderStyle (STYLE_Add) PROP_RenderStyle (STYLE_Add)
END_DEFAULTS END_DEFAULTS
@ -1585,7 +1585,7 @@ void A_SpawnBurn (AActor *self)
void A_BurnArea (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) void A_Burnination (AActor *self)

View file

@ -315,7 +315,7 @@ extern fixed_t CameraX, CameraY, CameraZ;
extern sector_t *CameraSector; extern sector_t *CameraSector;
// [RH] Means of death // [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_DelSector_List();
void P_DelSeclist(msecnode_t *); // phares 3/16/98 void P_DelSeclist(msecnode_t *); // phares 3/16/98

View file

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

View file

@ -505,7 +505,7 @@ void A_RadiusThrust (AActor *self)
if (force == 0) force = 128; if (force == 0) force = 128;
if (distance == 0) distance = force; 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)) if (self->z <= self->floorz + (distance<<FRACBITS))
{ {
P_HitFloor (self); P_HitFloor (self);