A rebalance attempt™.

This commit is contained in:
Mari the Deer 2021-09-06 22:55:58 +02:00
commit c194852ca8
10 changed files with 48 additions and 49 deletions

View file

@ -1,3 +1,3 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1pre r4 \cu(Mon 6 Sep 13:02:14 CEST 2021)\c-";
SWWM_SHORTVER="\cw1.1pre r4 \cu(2021-09-06 13:02:14)\c-";
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1pre r5 \cu(Mon 6 Sep 22:55:58 CEST 2021)\c-";
SWWM_SHORTVER="\cw1.1pre r5 \cu(2021-09-06 22:55:58)\c-";

View file

@ -21,14 +21,14 @@ Class RedShell : Ammo
Inventory.Icon "graphics/HUD/Icons/A_ShellsNormal.png";
Inventory.Amount 1;
Inventory.MaxAmount 30;
Ammo.BackpackAmount 3;
Ammo.BackpackAmount 2;
Ammo.BackpackMaxAmount 80;
Ammo.DropAmount 2;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 30;
Accuracy 50;
}
States
{
@ -88,7 +88,7 @@ Class GreenShell : Ammo
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 35;
Accuracy 55;
}
States
{
@ -147,7 +147,7 @@ Class WhiteShell : Ammo
+FLOATBOB;
FloatBobStrength 0.25;
Radius 4;
Accuracy 50;
Accuracy 70;
}
States
{
@ -207,7 +207,7 @@ Class BlueShell : Ammo
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 45;
Accuracy 65;
}
States
{
@ -267,7 +267,7 @@ Class BlackShell : Ammo
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 60;
Accuracy 75;
}
States
{
@ -327,7 +327,7 @@ Class PurpleShell : Ammo
FloatBobStrength 0.25;
Radius 4;
Height 20;
Accuracy 40;
Accuracy 60;
}
States
{
@ -484,14 +484,14 @@ Class EvisceratorShell : Ammo
Inventory.Icon "graphics/HUD/Icons/A_Eviscerator.png";
Inventory.Amount 1;
Inventory.MaxAmount 20;
Ammo.BackpackAmount 2;
Ammo.BackpackAmount 1;
Ammo.BackpackMaxAmount 60;
Ammo.DropAmount 1;
+FLOATBOB;
FloatBobStrength 0.25;
Radius 8;
Height 22;
Accuracy 40;
Accuracy 60;
}
override void ModifyDropAmount( int dropamount )
{
@ -566,7 +566,7 @@ Class HellblazerMissiles : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 60;
Accuracy 70;
}
override void ModifyDropAmount( int dropamount )
{
@ -635,7 +635,7 @@ Class HellblazerCrackshots : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 70;
Accuracy 75;
}
override void ModifyDropAmount( int dropamount )
{
@ -760,7 +760,7 @@ Class HellblazerWarheads : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 90;
Accuracy 85;
}
override void ModifyDropAmount( int dropamount )
{
@ -820,7 +820,7 @@ Class SparkUnit : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 22;
Accuracy 50;
Accuracy 70;
}
override void ModifyDropAmount( int dropamount )
{
@ -879,7 +879,7 @@ Class SilverBulletAmmo : Ammo
FloatBobStrength 0.25;
Radius 10;
Height 26;
Accuracy 60;
Accuracy 75;
}
override void ModifyDropAmount( int dropamount )
{
@ -931,7 +931,7 @@ Class SilverBulletAmmo2 : Ammo
FloatBobStrength 0.25;
Radius 10;
Height 26;
Accuracy 70;
Accuracy 80;
}
override void ModifyDropAmount( int dropamount )
{
@ -1067,7 +1067,7 @@ Class CandyGunAmmo : Ammo
FloatBobStrength 0.25;
Radius 6;
Height 24;
Accuracy 80;
Accuracy 90;
}
override void ModifyDropAmount( int dropamount )
{

View file

@ -43,11 +43,10 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner
static Class<Actor> PickAmmo( bool notondemand = false )
{
// shell types (sorted by rarity)
static const Class<Actor> redpool[] = {'RedShell','RedShell2','RedShell4'};
static const Class<Actor> greenpool[] = {'GreenShell','GreenShell2','GreenShell4'};
static const Class<Actor> whitepool[] = {'WhiteShell','WhiteShell2'};
static const Class<Actor> purplepool[] = {'PurpleShell','PurpleShell2','PurpleShell4'};
static const Class<Actor> bluepool[] = {'BlueShell','BlueShell2','BlueShell4'};
static const Class<Actor> redpool[] = {'RedShell','RedShell2'};
static const Class<Actor> greenpool[] = {'GreenShell','GreenShell2'};
static const Class<Actor> purplepool[] = {'PurpleShell','PurpleShell2'};
static const Class<Actor> bluepool[] = {'BlueShell','BlueShell2'};
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) )
return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo';*/
switch( Random[Replacements](0,20) )
@ -57,25 +56,25 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner
case 2:
case 3:
case 4:
return redpool[Random[Replacements](0,2)];
return redpool[Random[Replacements](0,1)];
case 5:
case 6:
case 7:
case 8:
case 9:
return greenpool[Random[Replacements](0,2)];
return greenpool[Random[Replacements](0,1)];
case 10:
case 11:
case 12:
case 13:
return purplepool[Random[Replacements](0,2)];
return purplepool[Random[Replacements](0,1)];
case 14:
case 15:
case 16:
return bluepool[Random[Replacements](0,2)];
return bluepool[Random[Replacements](0,1)];
case 17:
case 18:
return whitepool[Random[Replacements](0,1)];
return 'WhiteShell';
}
// case 19-20
return 'BlackShell';
@ -89,7 +88,7 @@ Class SWWMClipAmmoBig : SWWMAmmoSpawner
{
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) )
return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo';*/
return Random[Replacements](0,3)?'EvisceratorShell':'EvisceratorBundleSpawn';
return Random[Replacements](0,5)?'EvisceratorShell':'EvisceratorBundleSpawn';
}
}
Class SWWMBlastAmmoSmall : SWWMAmmoSpawner
@ -111,7 +110,7 @@ Class SWWMBlastAmmoBig : SWWMAmmoSpawner
{
/*if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) )
return Random[Replacements](0,2)?'SheenBigAmmo':'SheenSmallAmmo';*/
return 'EvisceratorBundleSpawn';
return Random[Replacements](0,2)?'EvisceratorShell':'EvisceratorBundleSpawn';
}
}
Class SWWMRocketAmmoSmall : SWWMAmmoSpawner
@ -142,12 +141,12 @@ Class SWWMRocketAmmoBig : SWWMAmmoSpawner
case 2:
case 3:
case 4:
return Random[Replacements](0,2)?'HellblazerMissiles':'HellblazerMissileBundleSpawn';
return Random[Replacements](0,4)?'HellblazerMissiles':'HellblazerMissileBundleSpawn';
case 5:
case 6:
case 7:
case 8:
return Random[Replacements](0,3)?'HellblazerCrackshots':'HellblazerCrackshotBundleSpawn';
return Random[Replacements](0,7)?'HellblazerCrackshots':'HellblazerCrackshotBundleSpawn';
case 9:
case 10:
return 'HellblazerRavagers';
@ -195,8 +194,8 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner
if ( Random[Replacements](0,3) ) return Random[Replacements](0,2)?'SilverBulletsBundleSpawn':'SilverBullets2BundleSpawn';
return Random[Replacements](0,2)?'SilverBulletAmmo':'SilverBulletAmmo2';
}
if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,2)?'CandyGunBulletsBundleSpawn':'CandyGunAmmo';
if ( notondemand || SWWMUtility.ItemExists('CandyGun') ) return Random[Replacements](0,3)?'CandyGunBulletsBundleSpawn':'CandyGunAmmo';
/*if ( !Random[Replacements](0,2) && (notondemand || SWWMUtility.ItemExists('BlackfireIgniter')) ) return 'DarkCanister';*/
return Random[Replacements](0,2)?'SparkUnit':'SparkUnitBundleSpawn';
return Random[Replacements](0,3)?'SparkUnit':'SparkUnitBundleSpawn';
}
}

View file

@ -334,7 +334,7 @@ Class HellblazerMissile : Actor
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("BigRocketBlast",50);
A_SetScale(4.5);
SWWMUtility.DoExplosion(self,250,320000,200,90);
SWWMUtility.DoExplosion(self,150,320000,200,90);
A_NoGravity();
A_QuakeEx(5,5,5,15,0,1500,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollIntensity:.8);
A_StopSound(CHAN_BODY);
@ -431,7 +431,7 @@ Class HellblazerCrackshot : HellblazerMissile
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("BigRocketBlast",50);
A_SetScale(3.);
SWWMUtility.DoExplosion(self,200,320000,160,60);
SWWMUtility.DoExplosion(self,120,320000,160,60);
A_NoGravity();
A_QuakeEx(4,4,4,12,0,1200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:400,rollIntensity:.6);
A_StopSound(CHAN_BODY);
@ -502,7 +502,7 @@ Class HellblazerRavager : HellblazerMissile
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("HugeRocketBlast",50);
A_SetScale(8.);
SWWMUtility.DoExplosion(self,400,320000,300,120);
SWWMUtility.DoExplosion(self,250,320000,300,120);
A_NoGravity();
A_QuakeEx(6,6,6,30,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:800,rollIntensity:1.);
A_StopSound(CHAN_BODY);
@ -895,7 +895,7 @@ Class HellblazerClusterMini : HellblazerMissile2
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("BigRocketBlast",50);
A_SetScale(2.5);
SWWMUtility.DoExplosion(self,50,200000,150,60);
SWWMUtility.DoExplosion(self,30,200000,150,60);
A_NoGravity();
A_QuakeEx(4,4,4,12,0,1000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:400,rollIntensity:.6);
A_StopSound(CHAN_BODY);

View file

@ -515,7 +515,7 @@ Class Wallbuster : SWWMWeapon
// slug
if ( !sst ) sst = new("SpreadSlugTracer");
sst.ignoreme = self;
sst.penetration = 200.;
sst.penetration = 150.;
a = FRandom[Wallbuster](0,360);
s = FRandom[Wallbuster](0,.002);
dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit();
@ -606,7 +606,7 @@ Class Wallbuster : SWWMWeapon
if ( !st ) st = new("SpreadgunTracer");
st.ignoreme = self;
// attempt to uniformize expected damage while reducing traces (mainly for performance)
int expecteddmg = 150;
int expecteddmg = 100;
int numshot = max(21-howmany,5);
int individualdmg = int(ceil(expecteddmg/double(numshot)));
for ( int j=0; j<numshot; j++ )

View file

@ -119,7 +119,7 @@ Class Eviscerator : SWWMWeapon
[x2, y2, z2] = swwm_CoordUtil.GetAxes(BulletSlope(),angle,roll);
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+4*y-5*z);
int trail = CVar.GetCVar('swwm_funtrails',player).GetInt();
for ( int i=0; i<40; i++ )
for ( int i=0; i<20; i++ )
{
a = FRandom[Eviscerator](0,360);
s = FRandom[Eviscerator](0,invoker.extended?.06:.3);

View file

@ -504,7 +504,7 @@ Class EvisceratorProj : Actor
}
int trail = 0;
if ( target && target.player ) trail = CVar.GetCVar('swwm_funtrails',target.player).GetInt();
for ( int i=0; i<40; i++ )
for ( int i=0; i<20; i++ )
{
p = EvisceratorChunk(Spawn("EvisceratorChunk",level.Vec3Offset(pos,spawnofs)));
p.bHITOWNER = true;

View file

@ -424,7 +424,7 @@ Class Spreadgun : SWWMWeapon
case 1:
sst = new("SpreadSlugTracer");
sst.ignoreme = self;
sst.penetration = 150.;
sst.penetration = 120.;
a = FRandom[Spreadgun](0,360);
s = FRandom[Spreadgun](0,.01);
dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit();
@ -632,7 +632,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,6,7000,bc:5);
ProcessTraceHit(st,origin,dir,4,7000,bc:5);
}
for ( int i=0; i<16; i++ )
{

View file

@ -545,7 +545,7 @@ Class BiosparkBall : Actor
{
A_StopSound(CHAN_VOICE);
A_AlertMonsters(swwm_uncapalert?0:5000);
SWWMUtility.DoExplosion(self,60,20000,150,80,flags:DE_HOWL);
SWWMUtility.DoExplosion(self,50,20000,150,80,flags:DE_HOWL);
A_QuakeEx(6,6,6,16,0,800,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.8);
A_StartSound("biospark/hit",CHAN_ITEM,attenuation:.8);
A_StartSound("biospark/hit",CHAN_WEAPON,attenuation:.6);
@ -598,7 +598,7 @@ Class BiosparkBall : Actor
if ( special1 > 30 ) return;
double factor = (30-special1)/30.;
double invfct = 1.-factor;
SWWMUtility.DoExplosion(self,20*factor,0.,150*invfct,flags:DE_HOWL);
SWWMUtility.DoExplosion(self,15*factor,0.,150*invfct,flags:DE_HOWL);
SWWMUtility.DoExplosion(self,0,-5000*factor,300*invfct);
int numpt = int(Random[ExploS](16,32)*factor);
for ( int i=0; i<numpt; i++ )
@ -709,7 +709,7 @@ Class BiosparkBeamImpact : Actor
{
Super.PostBeginPlay();
A_AlertMonsters(swwm_uncapalert?0:2000);
SWWMUtility.DoExplosion(self,50,20000,100,40,flags:DE_HOWL);
SWWMUtility.DoExplosion(self,40,20000,100,40,flags:DE_HOWL);
A_QuakeEx(3,3,3,12,0,800,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:.4);
A_StartSound("biospark/beamhit",CHAN_ITEM,attenuation:1.1);
A_StartSound("biospark/beamhit",CHAN_WEAPON,attenuation:.8);
@ -762,7 +762,7 @@ Class BiosparkBeamImpact : Actor
if ( special1 > 30 ) return;
double factor = (30-special1)/30.;
double invfct = 1.-factor;
SWWMUtility.DoExplosion(self,15*factor,0.,50*invfct,flags:DE_HOWL);
SWWMUtility.DoExplosion(self,10*factor,0.,50*invfct,flags:DE_HOWL);
SWWMUtility.DoExplosion(self,0.,-5000*factor,100*invfct);
int numpt = int(Random[ExploS](8,16)*factor);
for ( int i=0; i<numpt; i++ )

View file

@ -498,7 +498,7 @@ Class ExplodiumBulletImpact : Actor
{
Super.PostBeginPlay();
A_AlertMonsters(swwm_uncapalert?0:3000);
SWWMUtility.DoExplosion(self,20,80000,90,40,DE_EXTRAZTHRUST);
SWWMUtility.DoExplosion(self,20,40000,90,40,DE_EXTRAZTHRUST);
A_QuakeEx(4,4,4,10,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollintensity:0.2);
A_StartSound("explodium/hit",CHAN_VOICE,attenuation:.6);
A_StartSound("explodium/hit",CHAN_WEAPON,attenuation:.3);