Rebalanced splash damages. Restored vanilla UT damage radii.

Corrected Ripper alt projectile damage. They actually do deal both direct hit and splash damage.
Made UDamage and Enhanced Shock Rifle last longer outside of deathmatch.
This commit is contained in:
Marisa the Magician 2018-08-18 00:02:23 +02:00
commit ac71b65cae
7 changed files with 36 additions and 22 deletions

View file

@ -47,7 +47,7 @@ This mod requires GZDoom 3.5.0 or later.
## In progress
- General polishing and bugfixing
- General polishing, bugfixing and rebalancing
- Add some more effects
- Visual recoil affecting aim (time to recycle SM's A_Swing once again)
- Lava/Slime footstep sounds?
@ -65,6 +65,7 @@ This mod requires GZDoom 3.5.0 or later.
scripted textures are implemented.
- Add player models + weapon attachment support when that is also added in.
- Add option to have UT-like player movement physics.
- Migrate RandomSpawners to CheckReplacement.
## Known bugs

View file

@ -411,8 +411,8 @@ Class BioGel : Actor
s.args[3] = int(s.args[3]*Scale.x);
invoker.deadtimer = -2;
if ( invoker.atline ) invoker.atline.RemoteActivate(target,invoker.atside,SPAC_Impact,pos);
UTMainHandler.DoBlast(self,Min(150,int(Scale.x*25)),20000*Scale.x);
A_Explode(int(Random[GES](18,22)*max(1,(Scale.x-1)**2)),Min(150,int(Scale.x*25)));
UTMainHandler.DoBlast(self,Min(250,int(Scale.x*75)),20000*Scale.x);
A_Explode(int(Random[GES](18,26)*Scale.x),Min(250,int(Scale.x*75)));
A_PlaySound("ges/explode",CHAN_VOICE);
int numpt = Min(300,int(Scale.x*30))+Random[GES](-10,10);
for ( int i=0; i<numpt; i++ )

View file

@ -123,16 +123,16 @@ Class UTRocket : Actor
l.target = self;
A_PlaySound("utrl/fly",CHAN_VOICE,1.0,true,2.5);
}
action void A_RocketExplode( int dmg )
action void A_RocketExplode( int dmg, int rad )
{
bFORCEXYBILLBOARD = true;
A_SetRenderStyle(1.0,STYLE_Add);
A_SprayDecal("RocketBlast",150);
A_NoGravity();
A_SetScale(0.75);
UTMainHandler.DoBlast(self,100,80000);
A_Explode(dmg,100);
A_QuakeEx(3,3,3,8,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:0.2);
UTMainHandler.DoBlast(self,rad,80000);
A_Explode(dmg,rad);
A_QuakeEx(3,3,3,8,0,rad+50,"",QF_RELATIVE|QF_SCALEDOWN,falloff:rad,rollIntensity:0.2);
A_PlaySound("utrl/explode",CHAN_VOICE);
A_AlertMonsters();
Spawn("RocketExplLight",pos);
@ -179,7 +179,7 @@ Class UTRocket : Actor
}
Wait;
Death:
TNT1 A 0 A_RocketExplode(Random[Eightball](90,115));
TNT1 A 0 A_RocketExplode(Random[Eightball](90,120),220);
SSMX ABCDEFGHIJ 2 Bright;
Stop;
}
@ -232,7 +232,7 @@ Class UTGrenade : UTRocket
}
Goto Spawn;
Death:
TNT1 A 0 A_RocketExplode(Random[Eightball](90,120));
TNT1 A 0 A_RocketExplode(Random[Eightball](100,150),200);
Goto Super::Death+1;
}
}

View file

@ -385,9 +385,9 @@ Class FlakSlug : Actor
A_SprayDecal("RocketBlast",150);
A_NoGravity();
A_SetScale(1.2);
UTMainHandler.DoBlast(self,80,75000);
A_Explode(Random[Flak](70,80),80);
A_QuakeEx(4,4,4,8,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:80,rollIntensity:0.2);
UTMainHandler.DoBlast(self,150,75000);
A_Explode(Random[Flak](70,80),150);
A_QuakeEx(4,4,4,8,0,250,"",QF_RELATIVE|QF_SCALEDOWN,falloff:150,rollIntensity:0.2);
A_PlaySound("flak/explode",CHAN_VOICE);
A_AlertMonsters();
if ( !Tracer ) Spawn("SlugSmoke",pos);

View file

@ -58,6 +58,7 @@ Class DamageAmplifier : Powerup
l = Spawn("DamageAmpLight",Owner.pos);
l.target = Owner;
l.master = self;
if ( deathmatch ) EffectTics /= 2;
}
override void DoEffect()

View file

@ -185,8 +185,6 @@ Class Razor2Alt : Razor2
{
Default
{
DamageFunction 0;
DamageType 'RipperAltDealth';
BounceType "None";
-CANBOUNCEWATER;
+EXPLODEONWATER;
@ -204,7 +202,7 @@ Class Razor2Alt : Razor2
A_AlertMonsters();
A_SprayDecal("RazorBlast",20);
UTMainHandler.DoBlast(self,120,87000);
A_Explode(Random[Ripper](30,50),120);
A_Explode(Random[Ripper](30,50),180,damagetype:'RipperAltDeath');
A_QuakeEx(3,3,3,10,0,180,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollIntensity:0.1);
int numpt = Random[Ripper](10,20);
Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch));

View file

@ -336,10 +336,10 @@ Class ShockBeam : Actor
{
if ( target ) target.TakeInventory('ShockAmmo',2);
let b = t.Results.HitActor.target;
UTMainHandler.DoBlast(b,300,70000);
UTMainHandler.DoBlast(b,250,70000);
b.ExplodeMissile(null,self);
b.A_Explode(Random[ASMD](150,160),300);
b.A_QuakeEx(6,6,6,60,0,1200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:0.2);
b.A_Explode(Random[ASMD](150,180),250);
b.A_QuakeEx(6,6,6,60,0,1200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:250,rollIntensity:0.2);
b.A_SprayDecal("BigShockMark1",100);
b.A_SprayDecal("BigShockMark2",100);
Spawn("ShockRifleWave",b.pos);
@ -829,7 +829,7 @@ Class ShockBall : Actor
action void A_BallExplode()
{
UTMainHandler.DoBlast(self,70,70000);
A_Explode(Random[ASMD](40,50),70);
A_Explode(Random[ASMD](50,60),70);
A_SprayDecal("ShockMarkBig",16);
Spawn("ShockExplLight",pos);
A_SetScale(1.0);
@ -1115,6 +1115,15 @@ Class EnhancedShockAmmo : Ammo
{
int ticcnt;
override void PostBeginPlay()
{
Super.PostBeginPlay();
if ( deathmatch )
{
MaxAmount /= 2;
BackpackMaxAmount /= 2;
}
}
override void Tick()
{
Super.Tick();
@ -1129,9 +1138,9 @@ Class EnhancedShockAmmo : Ammo
Tag "Enhanced Shock Core";
Inventory.PickupMessage "You picked up an Enhanced Shock Core.";
Inventory.Amount 5;
Inventory.MaxAmount 25;
Inventory.MaxAmount 50;
Ammo.BackpackAmount 0;
Ammo.BackpackMaxAmount 25;
Ammo.BackpackMaxAmount 50;
Ammo.DropAmount 2;
}
States
@ -1155,6 +1164,11 @@ Class ViewSuperShockSpark : ViewShockSpark
Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
{
override void PostBeginPlay()
{
Super.PostBeginPlay();
if ( deathmatch ) AmmoGive1 /= 2;
}
action void A_SShockFire()
{
Weapon weap = Weapon(invoker);
@ -1247,7 +1261,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
Weapon.AmmoUse 1;
Weapon.AmmoType2 "EnhancedShockAmmo";
Weapon.AmmoUse2 1;
Weapon.AmmoGive 25;
Weapon.AmmoGive 50;
UTWeapon.DropAmmo 5;
+WEAPON.AMMO_OPTIONAL;
+WEAPON.ALT_AMMO_OPTIONAL;