mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-28 23:02:07 +00:00
- 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:
parent
8e2c37957e
commit
b8312a9bd8
6 changed files with 18 additions and 14 deletions
|
@ -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.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
@ -3526,12 +3525,11 @@ 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) &&
|
if (!(thing->flags & MF_ICECORPSE))
|
||||||
!(thing->flags & MF_ICECORPSE))
|
|
||||||
{
|
{
|
||||||
if (bombdodamage) P_TraceBleed (damage, thing, bombspot);
|
if (bombdodamage && !(bombspot->flags3 & MF3_BLOODLESSIMPACT)) P_TraceBleed (damage, thing, bombspot);
|
||||||
|
|
||||||
if (!bombthrustless)
|
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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue