Fix wacky-ass water physics for projectiles.

This commit is contained in:
Mari the Deer 2022-11-11 01:46:39 +01:00
commit 31ea4f73b1
19 changed files with 61 additions and 6 deletions

View file

@ -2,6 +2,8 @@
Class SWWMCasing : Actor abstract
{
Mixin SWWMMissileFix;
SWWMCasing prevcasing, nextcasing;
bool killme;
int numbounces;
@ -23,6 +25,7 @@ Class SWWMCasing : Actor abstract
+ROLLSPRITE;
+ROLLCENTER;
+SYNCHRONIZED;
+CANBOUNCEWATER;
Mass 1;
Gravity 0.35;
BounceType "Hexen";
@ -51,7 +54,6 @@ Class SWWMCasing : Actor abstract
if ( killme ) A_FadeOut(.01);
if ( waterlevel > 0 )
{
vel.xy *= .98;
anglevel *= .98;
pitchvel *= .98;
}
@ -89,6 +91,9 @@ Class SWWMCasing : Actor abstract
bINTERPOLATEANGLES = false;
pitch = roll = 0;
angle = FRandom[Junk](0,360);
// disappear if we fell into a terrain with floor clip
if ( GetFloorTerrain().footclip > 0 )
Destroy();
}
Stop;
}

View file

@ -82,6 +82,7 @@ Class HellblazerArm : Actor
+NODAMAGETHRUST;
+FORCERADIUSDMG;
-NOGRAVITY;
+NOFRICTION;
Gravity 0.35;
BounceFactor 1.0;
Radius 4;
@ -179,6 +180,8 @@ Class HellblazerFlare : SWWMNonInteractiveActor
// rockets
Class HellblazerMissile : Actor
{
Mixin SWWMMissileFix;
int deto;
Actor seektarget;
Vector3 InitialDir, Acceleration;

View file

@ -121,6 +121,8 @@ Class EvisceratorChunkTrail : SWWMNonInteractiveActor
Class EvisceratorChunk : Actor
{
Mixin SWWMMissileFix;
Actor lasthit;
double anglevel, pitchvel, rollvel;
double lifetime, lifespeed;
@ -424,6 +426,8 @@ Class EvisceratorProjLight : PaletteLight
Class EvisceratorProj : Actor
{
Mixin SWWMMissileFix;
double heat;
Vector3 startpos;
Default

View file

@ -220,6 +220,7 @@ Class YnykronImpactArm : Actor
+NODAMAGETHRUST;
+FORCERADIUSDMG;
-NOGRAVITY;
+NOFRICTION;
Gravity 0.35;
BounceFactor 1.0;
Radius 2;
@ -1927,6 +1928,7 @@ Class YnykronSingularityExplosionArm : Actor
+NODAMAGETHRUST;
+FORCERADIUSDMG;
-NOGRAVITY;
+NOFRICTION;
Gravity 0.35;
BounceFactor 1.0;
Radius 2;

View file

@ -17,6 +17,7 @@ Class AirBullet : FastProjectile
+FORCERADIUSDMG;
+NODAMAGETHRUST;
+RIPPER;
+NOFRICTION;
}
override void PostBeginPlay()
{

View file

@ -372,6 +372,7 @@ Class BigBiospark : Actor
+BOUNCEONFLOORS;
+BOUNCEONCEILINGS;
+CANBOUNCEWATER;
+NOFRICTION;
}
States
{
@ -408,6 +409,7 @@ Class BiosparkBall : Actor
+NODAMAGETHRUST;
+EXPLODEONWATER;
+FORCEXYBILLBOARD;
+NOFRICTION;
}
override void PostBeginPlay()
{
@ -1574,6 +1576,8 @@ Class BiosparkSpark : SWWMNonInteractiveActor
Class BiosparkCore : Actor
{
Mixin SWWMMissileFix;
Vector3 oldvel;
double anglevel, pitchvel, rollvel;

View file

@ -45,6 +45,7 @@ Class ExplodiumMagArm : Actor
+NODAMAGETHRUST;
+FORCERADIUSDMG;
-NOGRAVITY;
+NOFRICTION;
Gravity 0.35;
BounceFactor 1.0;
Radius 2;
@ -102,6 +103,8 @@ Class ExplodiumMagTrail : SWWMNonInteractiveActor
Class ExplodiumMagProj : Actor
{
Mixin SWWMMissileFix;
double pitchvel, anglevel;
Vector3 cvel;

View file

@ -325,6 +325,7 @@ Class CandyMagArm : Actor
+FORCERADIUSDMG;
-NOGRAVITY;
+FOILINVUL;
+NOFRICTION;
Gravity 0.35;
BounceFactor 1.0;
Radius 2;
@ -463,6 +464,8 @@ Class CandyMagArmBig : CandyMagArm
Class CandyGunProj : Actor
{
Mixin SWWMMissileFix;
double pitchvel, anglevel;
Vector3 cvel;
@ -600,6 +603,8 @@ Class CandyGunProj : Actor
Class CandyMagProj : Actor
{
Mixin SWWMMissileFix;
double pitchvel, anglevel;
Vector3 cvel;