mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-25 05:31:00 +00:00
- fixed: Hexen's poison cloud needs to call P_DamageMobj, even with a damage value of 0. Added a new flag to handle this case because normally this is not desirable.
This commit is contained in:
parent
165a980065
commit
26144340b8
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_SMASHABLE = 0x04000000, // dies if hitting the floor.
|
||||
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 ---
|
||||
|
|
|
@ -5674,8 +5674,9 @@ int P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bom
|
|||
}
|
||||
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.)
|
||||
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
|
||||
double vz;
|
||||
double thrust;
|
||||
|
@ -5752,7 +5753,7 @@ int P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bom
|
|||
|
||||
double factor = splashfactor * thing->GetClass()->RDFactor;
|
||||
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.
|
||||
int prehealth = thing->health;
|
||||
|
|
|
@ -316,6 +316,7 @@ static FFlagDef ActorFlagDefs[]=
|
|||
DEFINE_FLAG(MF7, SPRITEANGLE, AActor, flags7),
|
||||
DEFINE_FLAG(MF7, SMASHABLE, AActor, flags7),
|
||||
DEFINE_FLAG(MF7, NOSHIELDREFLECT, AActor, flags7),
|
||||
DEFINE_FLAG(MF7, FORCEZERORADIUSDMG, AActor, flags7),
|
||||
|
||||
// Effect flags
|
||||
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
|
||||
|
|
|
@ -437,7 +437,7 @@ class PoisonCloud : Actor
|
|||
Mass 0x7fffffff;
|
||||
+NOBLOCKMAP +NOGRAVITY +DROPOFF
|
||||
+NODAMAGETHRUST
|
||||
+DONTSPLASH +FOILINVUL +CANBLAST +BLOODLESSIMPACT +BLOCKEDBYSOLIDACTORS
|
||||
+DONTSPLASH +FOILINVUL +CANBLAST +BLOODLESSIMPACT +BLOCKEDBYSOLIDACTORS +FORCEZERORADIUSDMG
|
||||
RenderStyle "Translucent";
|
||||
Alpha 0.6;
|
||||
DeathSound "PoisonShroomDeath";
|
||||
|
|
Loading…
Reference in a new issue