mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 07:11:54 +00:00
commit
7825c7b244
4 changed files with 6 additions and 3 deletions
|
@ -387,6 +387,7 @@ enum ActorFlag7
|
||||||
MF7_SPRITEANGLE = 0x02000000, // [MC] Utilize the SpriteAngle property and lock the rotation to the degrees specified.
|
MF7_SPRITEANGLE = 0x02000000, // [MC] Utilize the SpriteAngle property and lock the rotation to the degrees specified.
|
||||||
MF7_SMASHABLE = 0x04000000, // dies if hitting the floor.
|
MF7_SMASHABLE = 0x04000000, // dies if hitting the floor.
|
||||||
MF7_NOSHIELDREFLECT = 0x08000000, // will not be reflected by shields.
|
MF7_NOSHIELDREFLECT = 0x08000000, // will not be reflected by shields.
|
||||||
|
MF7_FORCEZERORADIUSDMG = 0x10000000, // passes zero radius damage on to P_DamageMobj, this is necessary in some cases where DoSpecialDamage gets overrideen.
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- mobj.renderflags ---
|
// --- mobj.renderflags ---
|
||||||
|
|
|
@ -5674,8 +5674,9 @@ int P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bom
|
||||||
}
|
}
|
||||||
points *= thing->GetClass()->RDFactor;
|
points *= thing->GetClass()->RDFactor;
|
||||||
|
|
||||||
|
double check = int(points) * bombdamage;
|
||||||
// points and bombdamage should be the same sign (the double cast of 'points' is needed to prevent overflows and incorrect values slipping through.)
|
// points and bombdamage should be the same sign (the double cast of 'points' is needed to prevent overflows and incorrect values slipping through.)
|
||||||
if ((((double)int(points) * bombdamage) > 0) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY))
|
if ((check > 0 || (check == 0 && bombspot->flags7 & MF7_FORCEZERORADIUSDMG)) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY))
|
||||||
{ // OK to damage; target is in direct path
|
{ // OK to damage; target is in direct path
|
||||||
double vz;
|
double vz;
|
||||||
double thrust;
|
double thrust;
|
||||||
|
@ -5752,7 +5753,7 @@ int P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bom
|
||||||
|
|
||||||
double factor = splashfactor * thing->GetClass()->RDFactor;
|
double factor = splashfactor * thing->GetClass()->RDFactor;
|
||||||
damage = int(damage * factor);
|
damage = int(damage * factor);
|
||||||
if (damage > 0)
|
if (damage > 0 || (bombspot->flags7 & MF7_FORCEZERORADIUSDMG))
|
||||||
{
|
{
|
||||||
//[MC] Don't count actors saved by buddha if already at 1 health.
|
//[MC] Don't count actors saved by buddha if already at 1 health.
|
||||||
int prehealth = thing->health;
|
int prehealth = thing->health;
|
||||||
|
|
|
@ -316,6 +316,7 @@ static FFlagDef ActorFlagDefs[]=
|
||||||
DEFINE_FLAG(MF7, SPRITEANGLE, AActor, flags7),
|
DEFINE_FLAG(MF7, SPRITEANGLE, AActor, flags7),
|
||||||
DEFINE_FLAG(MF7, SMASHABLE, AActor, flags7),
|
DEFINE_FLAG(MF7, SMASHABLE, AActor, flags7),
|
||||||
DEFINE_FLAG(MF7, NOSHIELDREFLECT, AActor, flags7),
|
DEFINE_FLAG(MF7, NOSHIELDREFLECT, AActor, flags7),
|
||||||
|
DEFINE_FLAG(MF7, FORCEZERORADIUSDMG, AActor, flags7),
|
||||||
|
|
||||||
// Effect flags
|
// Effect flags
|
||||||
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
|
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
|
||||||
|
|
|
@ -437,7 +437,7 @@ class PoisonCloud : Actor
|
||||||
Mass 0x7fffffff;
|
Mass 0x7fffffff;
|
||||||
+NOBLOCKMAP +NOGRAVITY +DROPOFF
|
+NOBLOCKMAP +NOGRAVITY +DROPOFF
|
||||||
+NODAMAGETHRUST
|
+NODAMAGETHRUST
|
||||||
+DONTSPLASH +FOILINVUL +CANBLAST +BLOODLESSIMPACT +BLOCKEDBYSOLIDACTORS
|
+DONTSPLASH +FOILINVUL +CANBLAST +BLOODLESSIMPACT +BLOCKEDBYSOLIDACTORS +FORCEZERORADIUSDMG
|
||||||
RenderStyle "Translucent";
|
RenderStyle "Translucent";
|
||||||
Alpha 0.6;
|
Alpha 0.6;
|
||||||
DeathSound "PoisonShroomDeath";
|
DeathSound "PoisonShroomDeath";
|
||||||
|
|
Loading…
Reference in a new issue