Fix wacky-ass water physics for projectiles.
This commit is contained in:
parent
67a899aaa9
commit
31ea4f73b1
19 changed files with 61 additions and 6 deletions
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r606 \cu(Fri 11 Nov 00:08:54 CET 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r606 \cu(2022-11-11 00:08:54)\c-";
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r607 \cu(Fri 11 Nov 01:46:39 CET 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r607 \cu(2022-11-11 01:46:39)\c-";
|
||||
|
|
|
|||
|
|
@ -960,6 +960,8 @@ Class TargetTracer : LineTracer
|
|||
|
||||
Class MisterGrenade : Actor
|
||||
{
|
||||
Mixin SWWMMissileFix;
|
||||
|
||||
Vector3 oldvel;
|
||||
|
||||
Default
|
||||
|
|
|
|||
|
|
@ -330,6 +330,7 @@ Class QuadProj : Actor
|
|||
+FORCERADIUSDMG;
|
||||
+NODAMAGETHRUST;
|
||||
+HITMASTER;
|
||||
+NOFRICTION;
|
||||
RenderStyle "Add";
|
||||
}
|
||||
|
||||
|
|
@ -358,6 +359,7 @@ Class QuadExplArm : Actor
|
|||
+NODAMAGETHRUST;
|
||||
+FORCERADIUSDMG;
|
||||
-NOGRAVITY;
|
||||
+NOFRICTION;
|
||||
Gravity .35;
|
||||
BounceFactor 1.;
|
||||
Radius 2;
|
||||
|
|
|
|||
|
|
@ -1394,6 +1394,7 @@ Class ChanceboxTop : Actor
|
|||
Species "Chancebox";
|
||||
PROJECTILE;
|
||||
+THRUSPECIES;
|
||||
+NOFRICTION;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
|
|
@ -1430,6 +1431,7 @@ Class ChanceboxSide : Actor
|
|||
Species "Chancebox";
|
||||
PROJECTILE;
|
||||
+THRUSPECIES;
|
||||
+NOFRICTION;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3645,6 +3645,8 @@ Class BallImpact : SWWMNonInteractiveActor
|
|||
|
||||
Class TheBall : Actor
|
||||
{
|
||||
Mixin SWWMMissileFix;
|
||||
|
||||
double heat;
|
||||
int deadtimer;
|
||||
Vector3 oldvel;
|
||||
|
|
|
|||
|
|
@ -450,6 +450,8 @@ Class mkBloodSmoke2 : mkBloodSmoke
|
|||
// inspired by Lud's Universal Gibs
|
||||
Class mkFlyingGib : Actor
|
||||
{
|
||||
Mixin SWWMMissileFix;
|
||||
|
||||
bool killme;
|
||||
int lastbleed;
|
||||
color shadecol;
|
||||
|
|
@ -503,8 +505,7 @@ Class mkFlyingGib : Actor
|
|||
roll += rollvel;
|
||||
if ( waterlevel > 0 )
|
||||
{
|
||||
rollvel *= .98;
|
||||
vel.xy *= .98;
|
||||
rollvel *= .99;
|
||||
return;
|
||||
}
|
||||
if ( !bleeding ) return;
|
||||
|
|
|
|||
|
|
@ -118,6 +118,21 @@ Class SWWMNothing : SWWMNonInteractiveActor
|
|||
}
|
||||
}
|
||||
|
||||
// mixins for gravity-affected missiles that need correct water behavior
|
||||
Mixin Class SWWMMissileFix
|
||||
{
|
||||
Default
|
||||
{
|
||||
+NOFRICTION;
|
||||
}
|
||||
override void FallAndSink( double grav, double oldfloorz )
|
||||
{
|
||||
if ( bNOGRAVITY || (waterlevel < 1) ) return;
|
||||
vel *= .99;
|
||||
if ( pos.z > floorz ) vel.z -= grav*.01;
|
||||
}
|
||||
}
|
||||
|
||||
Class SWWMDamageAccumulator : Inventory
|
||||
{
|
||||
Actor inflictor, source;
|
||||
|
|
|
|||
|
|
@ -705,7 +705,8 @@ Class SWWMChip : SWWMNonInteractiveActor
|
|||
if ( killme ) A_FadeOut(.01);
|
||||
if ( waterlevel > 0 )
|
||||
{
|
||||
vel *= .98;
|
||||
vel *= .99;
|
||||
if ( pos.z > floorz ) vel.z -= gravity*.01;
|
||||
anglevel *= .98;
|
||||
pitchvel *= .98;
|
||||
rollvel *= .98;
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ Class LoveHeart : Actor
|
|||
+FOILINVUL;
|
||||
+PAINLESS;
|
||||
+NODAMAGETHRUST;
|
||||
+NOFRICTION;
|
||||
}
|
||||
|
||||
override int DoSpecialDamage( Actor target, int damage, Name damagetype )
|
||||
|
|
|
|||
|
|
@ -162,6 +162,7 @@ Class SWWMBossBrainExplArm : Actor
|
|||
+BOUNCEONFLOORS;
|
||||
+BOUNCEONCEILINGS;
|
||||
-NOGRAVITY;
|
||||
+NOFRICTION;
|
||||
Gravity 0.35;
|
||||
BounceFactor 1.0;
|
||||
Radius 4;
|
||||
|
|
|
|||
|
|
@ -162,6 +162,7 @@ Class DemolitionistRadiusShockwave : Actor
|
|||
+RIPPER;
|
||||
+BLOODLESSIMPACT;
|
||||
-NOGRAVITY;
|
||||
+NOFRICTION;
|
||||
}
|
||||
override int DoSpecialDamage( Actor target, int damage, Name damagetype )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ Class AirBullet : FastProjectile
|
|||
+FORCERADIUSDMG;
|
||||
+NODAMAGETHRUST;
|
||||
+RIPPER;
|
||||
+NOFRICTION;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue