Adjusted projectile speeds across the board for more consistency.

Tweaked guided redeemer missile movement, no longer makes sharp turns.
Additional development notes so I don't forget what I should do next.
This commit is contained in:
Marisa the Magician 2018-06-08 16:01:12 +02:00
commit 9ed6c9dea0
8 changed files with 39 additions and 24 deletions

View file

@ -349,7 +349,7 @@ Class BioGel : Actor
Radius 3;
Height 3;
Scale 2;
Speed 20;
Speed 18;
PROJECTILE;
-NOGRAVITY;
+SKYEXPLODE;

View file

@ -109,7 +109,7 @@ Class UTRocket : Actor
DamageType 'RocketDeath';
Radius 2;
Height 2;
Speed 30;
Speed 18;
PROJECTILE;
+SKYEXPLODE;
+EXPLODEONWATER;
@ -163,10 +163,16 @@ Class UTRocket : Actor
{
A_SetRoll(roll+30,SPF_INTERPOLATE);
Vector3 dir = vel.unit();
if ( waterlevel <= 0 ) vel = dir*min(vel.length()+1,32);
A_SetAngle(atan2(dir.y,dir.x),SPF_INTERPOLATE);
A_SetPitch(asin(-dir.z),SPF_INTERPOLATE);
if ( tracer ) A_SeekerMissile(0,2,SMF_PRECISE);
Spawn("UTSmoke",pos);
for ( int i=0; i<3; i++ )
{
let s = Spawn("UTSmoke",pos);
s.vel = (FRandom[Eightball](-0.2,0.2),FRandom[Eightball](-0.2,0.2),FRandom[Eightball](-0.2,0.2));
s.vel += vel*0.1;
}
}
Wait;
Death:
@ -308,8 +314,8 @@ Class UTRocketLauncher : UTWeapon
s = FRandom[Eightball](0,0.06*(num-1));
Vector3 dir = (x2+cos(a)*y2*s+sin(a)*z2*s).unit();
p = Spawn("UTGrenade",origin);
p.vel = dir*p.speed*FRandom[Eightball](1.0,1.2);
p.vel.z += 5;
p.vel = x*(vel dot x)*0.4 + dir*p.speed*FRandom[Eightball](1.0,1.2);
p.vel.z += 6;
p.target = self;
}
}

View file

@ -372,7 +372,7 @@ Class FlakSlug : Actor
override void PostBeginPlay()
{
Super.PostBeginPlay();
vel.z += 5;
vel.z += 4;
}
override void Tick()
{

View file

@ -69,13 +69,13 @@ Class MinigunTracer : Actor
{
Super.Tick();
Vector3 dir = level.Vec3Diff(pos,dest);
if ( dir.length() < 200 )
if ( dir.length() < 160 )
{
Destroy();
return;
}
dir = dir.unit();
SetOrigin(Vec3Offset(dir.x*200,dir.y*200,dir.z*200),true);
SetOrigin(Vec3Offset(dir.x*160,dir.y*160,dir.z*160),true);
A_SetAngle(atan2(dir.y,dir.x),SPF_INTERPOLATE);
A_SetPitch(asin(-dir.z),SPF_INTERPOLATE);
A_SetRoll(roll+60,SPF_INTERPOLATE);

View file

@ -146,8 +146,8 @@ Class PulseBall : Actor
PROJECTILE;
+EXPLODEONWATER;
+SKYEXPLODE;
Scale 0.2;
Speed 30;
Scale 0.19;
Speed 29;
Radius 2;
Height 2;
}

View file

@ -57,7 +57,7 @@ Class Razor2 : Actor
{
Radius 2;
Height 2;
Speed 50;
Speed 40; // should be 26 but it looks way too slow
DamageFunction Random[Ripper](30,40);
DamageType 'Ripper';
Obituary "%k ripped a chunk of meat out of %o with the Ripper.";

View file

@ -244,7 +244,7 @@ Class WarShell : Actor
Obituary "%o was vaporized by %k's Redeemer!!";
Radius 2;
Height 2;
Speed 2;
Speed 12;
DamageType 'RedeemerDeath';
DamageFactor 1000;
PROJECTILE;
@ -279,9 +279,9 @@ Class WarShell : Actor
if ( waterlevel > 0 )
{
vel *= 0.98;
if ( vel.length() < 5 ) vel += vel.unit()*0.5;
if ( vel.length() < 12 ) vel += vel.unit();
}
else if ( vel.length() < 10 ) vel += vel.unit()*0.5;
else if ( vel.length() < 40 ) vel += vel.unit();
}
}
action void A_Trail()
@ -395,13 +395,7 @@ Class GuidedWarShell : WarShell
A_SetAngle(destangle,SPF_INTERPOLATE);
A_SetPitch(destpitch,SPF_INTERPOLATE);
A_SetRoll(destroll,SPF_INTERPOLATE);
vel = vel.length()*(cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch));
if ( waterlevel > 0 )
{
vel *= 0.98;
if ( vel.length() < 5 ) vel += vel.unit()*0.5;
}
else if ( vel.length() < 10 ) vel += vel.unit()*0.5;
vel = (vel+(cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch))*0.8).unit()*11;
}
lagangle2 = lagangle2*0.95+lagangle*0.05;
lagpitch2 = lagpitch2*0.95+lagpitch*0.05;