Slightly increase buckshot damage per pellet so it's closer to vanilla.

Allow Wallbuster to shoot a constant number of pellets, rather than reducing them "for performance".
Increase spread of Wallbuster based on number of barrels shot.
This commit is contained in:
Mari the Deer 2022-10-10 10:04:32 +02:00
commit 2f5704c5df
3 changed files with 6 additions and 10 deletions

View file

@ -260,20 +260,16 @@ Class Wallbuster : SWWMWeapon
// the shooting
if ( !st ) st = new("SpreadgunTracer");
st.ignoreme = self;
// attempt to uniformize expected damage while reducing traces (mainly for performance)
int expecteddmg = 180;
int numshot = max(21-howmany,5);
int individualdmg = int(ceil(expecteddmg/double(numshot)));
for ( int j=0; j<numshot; j++ )
for ( int j=0; j<20; j++ )
{
a = FRandom[Wallbuster](0,360);
s = FRandom[Wallbuster](0,.05);
s = FRandom[Wallbuster](0,.05+.006*howmany);
dir = SWWMUtility.ConeSpread(x2,y2,z2,a,s);
st.hitlist.Clear();
st.shootthroughlist.Clear();
st.waterhitlist.Clear();
st.Trace(origin,level.PointInSector(origin.xy),dir,8000.,TRACE_HitSky);
ProcessTraceHit(st,origin,dir,individualdmg,7000,bc:5+howmany/6,(howmany>1));
ProcessTraceHit(st,origin,dir,10,7000,bc:5+howmany/6,(howmany>1));
}
for ( int i=0; i<(16-howmany/2); i++ )
{

View file

@ -329,7 +329,7 @@ Class Spreadgun : SWWMWeapon
st.shootthroughlist.Clear();
st.waterhitlist.Clear();
st.Trace(origin,level.PointInSector(origin.xy),dir,8000.,TRACE_HitSky);
ProcessTraceHit(st,origin,dir,9,7000,bc:5);
ProcessTraceHit(st,origin,dir,10,7000,bc:5);
}
for ( int i=0; i<16; i++ )
{