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

View file

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

View file

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

View file

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

View file

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

View file

@ -185,8 +185,6 @@ Class Razor2Alt : Razor2
{ {
Default Default
{ {
DamageFunction 0;
DamageType 'RipperAltDealth';
BounceType "None"; BounceType "None";
-CANBOUNCEWATER; -CANBOUNCEWATER;
+EXPLODEONWATER; +EXPLODEONWATER;
@ -204,7 +202,7 @@ Class Razor2Alt : Razor2
A_AlertMonsters(); A_AlertMonsters();
A_SprayDecal("RazorBlast",20); A_SprayDecal("RazorBlast",20);
UTMainHandler.DoBlast(self,120,87000); 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); A_QuakeEx(3,3,3,10,0,180,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollIntensity:0.1);
int numpt = Random[Ripper](10,20); int numpt = Random[Ripper](10,20);
Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); 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); if ( target ) target.TakeInventory('ShockAmmo',2);
let b = t.Results.HitActor.target; let b = t.Results.HitActor.target;
UTMainHandler.DoBlast(b,300,70000); UTMainHandler.DoBlast(b,250,70000);
b.ExplodeMissile(null,self); b.ExplodeMissile(null,self);
b.A_Explode(Random[ASMD](150,160),300); b.A_Explode(Random[ASMD](150,180),250);
b.A_QuakeEx(6,6,6,60,0,1200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:0.2); 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("BigShockMark1",100);
b.A_SprayDecal("BigShockMark2",100); b.A_SprayDecal("BigShockMark2",100);
Spawn("ShockRifleWave",b.pos); Spawn("ShockRifleWave",b.pos);
@ -829,7 +829,7 @@ Class ShockBall : Actor
action void A_BallExplode() action void A_BallExplode()
{ {
UTMainHandler.DoBlast(self,70,70000); UTMainHandler.DoBlast(self,70,70000);
A_Explode(Random[ASMD](40,50),70); A_Explode(Random[ASMD](50,60),70);
A_SprayDecal("ShockMarkBig",16); A_SprayDecal("ShockMarkBig",16);
Spawn("ShockExplLight",pos); Spawn("ShockExplLight",pos);
A_SetScale(1.0); A_SetScale(1.0);
@ -1115,6 +1115,15 @@ Class EnhancedShockAmmo : Ammo
{ {
int ticcnt; int ticcnt;
override void PostBeginPlay()
{
Super.PostBeginPlay();
if ( deathmatch )
{
MaxAmount /= 2;
BackpackMaxAmount /= 2;
}
}
override void Tick() override void Tick()
{ {
Super.Tick(); Super.Tick();
@ -1129,9 +1138,9 @@ Class EnhancedShockAmmo : Ammo
Tag "Enhanced Shock Core"; Tag "Enhanced Shock Core";
Inventory.PickupMessage "You picked up an Enhanced Shock Core."; Inventory.PickupMessage "You picked up an Enhanced Shock Core.";
Inventory.Amount 5; Inventory.Amount 5;
Inventory.MaxAmount 25; Inventory.MaxAmount 50;
Ammo.BackpackAmount 0; Ammo.BackpackAmount 0;
Ammo.BackpackMaxAmount 25; Ammo.BackpackMaxAmount 50;
Ammo.DropAmount 2; Ammo.DropAmount 2;
} }
States States
@ -1155,6 +1164,11 @@ Class ViewSuperShockSpark : ViewShockSpark
Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
{ {
override void PostBeginPlay()
{
Super.PostBeginPlay();
if ( deathmatch ) AmmoGive1 /= 2;
}
action void A_SShockFire() action void A_SShockFire()
{ {
Weapon weap = Weapon(invoker); Weapon weap = Weapon(invoker);
@ -1247,7 +1261,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
Weapon.AmmoUse 1; Weapon.AmmoUse 1;
Weapon.AmmoType2 "EnhancedShockAmmo"; Weapon.AmmoType2 "EnhancedShockAmmo";
Weapon.AmmoUse2 1; Weapon.AmmoUse2 1;
Weapon.AmmoGive 25; Weapon.AmmoGive 50;
UTWeapon.DropAmmo 5; UTWeapon.DropAmmo 5;
+WEAPON.AMMO_OPTIONAL; +WEAPON.AMMO_OPTIONAL;
+WEAPON.ALT_AMMO_OPTIONAL; +WEAPON.ALT_AMMO_OPTIONAL;