Adjust Quadravol splash damage.

This commit is contained in:
Mari the Deer 2022-08-21 22:40:27 +02:00
commit 514c1a8a1f
3 changed files with 22 additions and 17 deletions

View file

@ -313,9 +313,9 @@ Class QuadProj : Actor
}
if ( tracer ) SWWMUtility.DoKnockback(tracer,-x+(0,0,.1),bAMBUSH?150000:500000);
A_QuakeEx(3,3,3,20,0,500,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:200,rollintensity:.6);
SWWMUtility.DoExplosion(self,0,80000+special2,240,80,DE_BLAST|DE_EXTRAZTHRUST);
SWWMUtility.DoExplosion(self,100+special1,0,240,0,DE_QUADRAVOL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,150+special1,0,200,80,DE_HOWL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,0,80000+special2,150,40,DE_BLAST|DE_EXTRAZTHRUST);
SWWMUtility.DoExplosion(self,100+special1,0,150,0,DE_QUADRAVOL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,150+special1,0,120,40,DE_HOWL|DE_NOSPLASH,ignoreme:tracer);
A_StartSound("quadshot/hit",CHAN_WEAPON,attenuation:.6);
A_StartSound("quadshot/hit",CHAN_VOICE,attenuation:.4);
A_AlertMonsters(swwm_uncapalert?0:1500);
@ -578,9 +578,9 @@ Class QuadProj2 : QuadProj
}
if ( tracer ) SWWMUtility.DoKnockback(tracer,-x+(0,0,.1),bAMBUSH?160000:600000);
A_QuakeEx(5,5,5,25,0,900,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:400,rollintensity:.8);
SWWMUtility.DoExplosion(self,0,100000+special2,480,120,DE_BLAST|DE_EXTRAZTHRUST);
SWWMUtility.DoExplosion(self,200+special1,0,480,0,DE_QUADRAVOL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,300+special1,0,400,120,DE_HOWL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,0,100000+special2,240,80,DE_BLAST|DE_EXTRAZTHRUST);
SWWMUtility.DoExplosion(self,200+special1,0,240,0,DE_QUADRAVOL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,300+special1,0,200,80,DE_HOWL|DE_NOSPLASH,ignoreme:tracer);
A_StartSound("quadshot/twohit",CHAN_WEAPON,attenuation:.5);
A_StartSound("quadshot/twohit",CHAN_VOICE,attenuation:.25);
A_AlertMonsters(swwm_uncapalert?0:2500);
@ -854,9 +854,9 @@ Class QuadProj3 : QuadProj
}
if ( tracer ) SWWMUtility.DoKnockback(tracer,-x+(0,0,.1),bAMBUSH?180000:800000);
A_QuakeEx(7,7,7,35,0,1200,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:600,rollintensity:1.2);
SWWMUtility.DoExplosion(self,0,150000+special2,700,150,DE_BLAST|DE_EXTRAZTHRUST);
SWWMUtility.DoExplosion(self,400+special1,0,700,0,DE_QUADRAVOL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,500+special1,0,600,150,DE_HOWL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,0,150000+special2,300,120,DE_BLAST|DE_EXTRAZTHRUST);
SWWMUtility.DoExplosion(self,400+special1,0,300,0,DE_QUADRAVOL|DE_NOSPLASH,ignoreme:tracer);
SWWMUtility.DoExplosion(self,500+special1,0,240,120,DE_HOWL|DE_NOSPLASH,ignoreme:tracer);
A_StartSound("quadshot/twohit",CHAN_WEAPON,attenuation:.4,pitch:.9);
A_StartSound("quadshot/twohit",CHAN_VOICE,attenuation:.3,pitch:.8);
A_StartSound("quadshot/extrahit",CHAN_ITEM,attenuation:.2,pitch:1.1);
@ -1048,7 +1048,7 @@ Class OnFire : Thinker
let q = instigator.FindInventory("Quadravol");
if ( q ) inflictor = q;
}
SWWMUtility.DoExplosion(victim,clamp(int(amount*.15),1,50),0,victim.radius+40+amount/5,0,DE_NOBLEED|DE_NOSPLASH|DE_HOWL,'Fire',instigator,DMG_THRUSTLESS,instigator,inflictor);
SWWMUtility.DoExplosion(victim,clamp(int(amount*.15),1,50),0,victim.radius+40+amount/5,0,DE_NOBLEED|DE_NOSPLASH|DE_HOWL|DE_CENTERHEIGHT,'Fire',instigator,DMG_THRUSTLESS,instigator,inflictor);
}
static OnFire Apply( Actor victim, Actor instigator, int amount )

View file

@ -13,7 +13,8 @@ enum EDoExplosionFlags
DE_COUNTSTEALTH = 256, // only count hits for inactive monsters
DE_COUNTFHKILLS = 512, // only count kills for enemies that were at full health
DE_NOHURTFRIEND = 1024, // splash damage will not affect allies
DE_QUADRAVOL = 2048 // splash burn from a Quadravol projectile, so it'll ignite enemies instead of dealing damage
DE_CENTERHEIGHT = 2048, // origin of explosion is at the center height of the source actor, rather than its base
DE_QUADRAVOL = 4096 // splash burn from a Quadravol projectile, so it'll ignite enemies instead of dealing damage
};
enum EExitType
@ -1191,12 +1192,12 @@ Class SWWMUtility
// debug, display radius sphere
if ( swwm_debugblast )
{
let s = Actor.Spawn("RadiusDebugSphere",Source.pos);
let s = Actor.Spawn("RadiusDebugSphere",(flags&DE_CENTERHEIGHT)?Source.Vec3Offset(0,0,Source.height/2):Source.pos);
s.Scale *= ExplosionRadius;
s.SetShade((Damage>0)?"Green":"Blue");
if ( FullDamageRadius > 0. )
{
let s = Actor.Spawn("RadiusDebugSphere",Source.pos);
let s = Actor.Spawn("RadiusDebugSphere",(flags&DE_CENTERHEIGHT)?Source.Vec3Offset(0,0,Source.height/2):Source.pos);
s.Scale *= FullDamageRadius;
s.SetShade("Red");
}
@ -1235,7 +1236,9 @@ Class SWWMUtility
if ( !SWWMUtility.SphereIntersect(a,Source.pos,ExplosionRadius) )
continue;
// calculate factor
Vector3 dir = level.Vec3Diff(Source.pos,a.Vec3Offset(0,0,a.Height/2));
Vector3 dir;
if ( flags&DE_CENTERHEIGHT ) dir = level.Vec3Diff(Source.Vec3Offset(0,0,Source.Height/2),a.Vec3Offset(0,0,a.Height/2));
else dir = level.Vec3Diff(Source.pos,a.Vec3Offset(0,0,a.Height/2));
double dist = dir.length();
// intersecting, randomize direction
if ( dir.length() <= double.epsilon )
@ -1325,7 +1328,9 @@ Class SWWMUtility
if ( !SWWMUtility.SphereIntersect(a,Source.pos,ExplosionRadius) )
continue;
// calculate factor
Vector3 dir = level.Vec3Diff(Source.pos,a.Vec3Offset(0,0,a.Height/2));
Vector3 dir;
if ( flags&DE_CENTERHEIGHT ) dir = level.Vec3Diff(Source.Vec3Offset(0,0,Source.Height/2),a.Vec3Offset(0,0,a.Height/2));
else dir = level.Vec3Diff(Source.pos,a.Vec3Offset(0,0,a.Height/2));
double dist = dir.length();
// intersecting, randomize direction
if ( dir.length() <= double.epsilon )