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

@ -45,10 +45,25 @@ This mod requires GZDoom 3.4.0 or later.
## In progress
- Make biorifle sludge follow ceiling and wall movement (this might be hard)
- Add some more effects, maybe some nicer recoil on guns too
- General polishing and bugfixing
- Trim out unused animations
- Make biorifle sludge follow ceiling and wall movement (this might be hard)
- Add some more effects
- Additional particle effects on explosions
- Smoke on spent casings
- Visual recoil affecting aim (time to recycle SM's A_Swing once again)
- Additional model optimization and cleanup
- Trim out unused animations (this one is going to be very time-consuming)
- Unify some texture groups (umodel does some weird thing where it separates
unlit polys into a new group, even when they're not supposed to be)
- Trim out garbage triangles (e.g.: an extra triangle in the biorifle that
has no reason to exist (can be seen when using invisibility, looks
completely out of place there)
- Recenter the backpack mesh (it was a complete hack job to begin with)
## Future plans
- Add ammo counters to Pulsegun, Minigun, Flak Cannon and Rocket Launcher once
scripted textures are implemented.
## Known bugs

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;