diff --git a/Readme.md b/Readme.md index 6cbca31..530f2e6 100644 --- a/Readme.md +++ b/Readme.md @@ -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 diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index 9bef075..0e6b593 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -349,7 +349,7 @@ Class BioGel : Actor Radius 3; Height 3; Scale 2; - Speed 20; + Speed 18; PROJECTILE; -NOGRAVITY; +SKYEXPLODE; diff --git a/zscript/eightball.zsc b/zscript/eightball.zsc index c192ddc..dd4617c 100644 --- a/zscript/eightball.zsc +++ b/zscript/eightball.zsc @@ -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; } } diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index b415982..070ecee 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -372,7 +372,7 @@ Class FlakSlug : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - vel.z += 5; + vel.z += 4; } override void Tick() { diff --git a/zscript/minigun.zsc b/zscript/minigun.zsc index 7346cb0..208c750 100644 --- a/zscript/minigun.zsc +++ b/zscript/minigun.zsc @@ -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); diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index ffdc316..0867cf1 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -146,8 +146,8 @@ Class PulseBall : Actor PROJECTILE; +EXPLODEONWATER; +SKYEXPLODE; - Scale 0.2; - Speed 30; + Scale 0.19; + Speed 29; Radius 2; Height 2; } diff --git a/zscript/ripper.zsc b/zscript/ripper.zsc index c486934..202abea 100644 --- a/zscript/ripper.zsc +++ b/zscript/ripper.zsc @@ -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."; diff --git a/zscript/warheadlauncher.zsc b/zscript/warheadlauncher.zsc index 24684ff..6a058cb 100644 --- a/zscript/warheadlauncher.zsc +++ b/zscript/warheadlauncher.zsc @@ -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;