Projectile physics hotfix from Demolitionist.
This commit is contained in:
parent
602a89cc68
commit
9e43bf8b8b
11 changed files with 57 additions and 7 deletions
|
|
@ -54,6 +54,7 @@ Class BioSpark : Actor
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
-BOUNCEAUTOOFF;
|
-BOUNCEAUTOOFF;
|
||||||
+BOUNCEAUTOOFFFLOORONLY;
|
+BOUNCEAUTOOFFFLOORONLY;
|
||||||
|
+NOFRICTION;
|
||||||
BounceType "Doom";
|
BounceType "Doom";
|
||||||
BounceFactor 0.5;
|
BounceFactor 0.5;
|
||||||
WallBounceFactor 0.5;
|
WallBounceFactor 0.5;
|
||||||
|
|
@ -195,6 +196,16 @@ Class BioGel : Actor
|
||||||
if ( (victim is 'BioHitbox') && ((victim.target == master) || (victim.target.master == master)) ) return 1;
|
if ( (victim is 'BioHitbox') && ((victim.target == master) || (victim.target.master == master)) ) return 1;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
override void FallAndSink( double grav, double oldfloorz )
|
||||||
|
{
|
||||||
|
if ( bNOGRAVITY || (waterlevel < 1) )
|
||||||
|
{
|
||||||
|
Super.FallAndSink(grav,oldfloorz);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
vel *= .99;
|
||||||
|
if ( pos.z > floorz ) vel.z += grav*.01; // floats in water
|
||||||
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
|
|
@ -206,7 +217,6 @@ Class BioGel : Actor
|
||||||
pitch += yawvel;
|
pitch += yawvel;
|
||||||
if ( waterlevel > 0 )
|
if ( waterlevel > 0 )
|
||||||
{
|
{
|
||||||
vel.xy *= 0.98;
|
|
||||||
rollvel *= 0.98;
|
rollvel *= 0.98;
|
||||||
pitchvel *= 0.98;
|
pitchvel *= 0.98;
|
||||||
yawvel *= 0.98;
|
yawvel *= 0.98;
|
||||||
|
|
@ -580,6 +590,7 @@ Class BioGel : Actor
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+HITTRACER;
|
+HITTRACER;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,8 @@ Class RocketExplLight : PaletteLight
|
||||||
|
|
||||||
Class UTRocket : Actor
|
Class UTRocket : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
Vector3 InitialDir, Acceleration;
|
Vector3 InitialDir, Acceleration;
|
||||||
int ticcnt;
|
int ticcnt;
|
||||||
Default
|
Default
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,8 @@ Class Splasher : Actor
|
||||||
|
|
||||||
Class UTCasing : Actor
|
Class UTCasing : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
int deadtimer, numbounces;
|
int deadtimer, numbounces;
|
||||||
double pitchvel, anglevel;
|
double pitchvel, anglevel;
|
||||||
double heat;
|
double heat;
|
||||||
|
|
|
||||||
|
|
@ -189,6 +189,8 @@ Class FlakAccumulator : Thinker
|
||||||
|
|
||||||
Class FlakChunk : Actor
|
Class FlakChunk : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
ChunkTrail trail;
|
ChunkTrail trail;
|
||||||
double rollvel, pitchvel, yawvel;
|
double rollvel, pitchvel, yawvel;
|
||||||
double lifetime, lifespeed;
|
double lifetime, lifespeed;
|
||||||
|
|
@ -236,7 +238,6 @@ Class FlakChunk : Actor
|
||||||
if ( isFrozen() ) return;
|
if ( isFrozen() ) return;
|
||||||
if ( waterlevel > 0 )
|
if ( waterlevel > 0 )
|
||||||
{
|
{
|
||||||
vel.xy *= 0.98;
|
|
||||||
rollvel *= 0.98;
|
rollvel *= 0.98;
|
||||||
pitchvel *= 0.98;
|
pitchvel *= 0.98;
|
||||||
yawvel *= 0.98;
|
yawvel *= 0.98;
|
||||||
|
|
@ -483,6 +484,8 @@ Class SlugLight : PaletteLight
|
||||||
|
|
||||||
Class FlakSlug : Actor
|
Class FlakSlug : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Obituary "$O_FLAKCANNON";
|
Obituary "$O_FLAKCANNON";
|
||||||
|
|
@ -504,11 +507,6 @@ Class FlakSlug : Actor
|
||||||
Super.PostBeginPlay();
|
Super.PostBeginPlay();
|
||||||
vel.z += 3;
|
vel.z += 3;
|
||||||
}
|
}
|
||||||
override void Tick()
|
|
||||||
{
|
|
||||||
Super.Tick();
|
|
||||||
if ( waterlevel > 0 ) vel.xy *= 0.98;
|
|
||||||
}
|
|
||||||
action void A_FlakExplode()
|
action void A_FlakExplode()
|
||||||
{
|
{
|
||||||
bForceXYBillboard = true;
|
bForceXYBillboard = true;
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ Class PulseSpark : Actor
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+CANBOUNCEWATER;
|
+CANBOUNCEWATER;
|
||||||
-BOUNCEAUTOOFF;
|
-BOUNCEAUTOOFF;
|
||||||
|
+NOFRICTION;
|
||||||
BounceType "Doom";
|
BounceType "Doom";
|
||||||
BounceFactor 1.0;
|
BounceFactor 1.0;
|
||||||
WallBounceFactor 1.0;
|
WallBounceFactor 1.0;
|
||||||
|
|
@ -174,6 +175,7 @@ Class PulseBall : Actor
|
||||||
+EXPLODEONWATER;
|
+EXPLODEONWATER;
|
||||||
+SKYEXPLODE;
|
+SKYEXPLODE;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
|
+NOFRICTION;
|
||||||
Scale 0.19;
|
Scale 0.19;
|
||||||
Speed 22;
|
Speed 22;
|
||||||
Radius 2;
|
Radius 2;
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ Class Razor2 : Actor
|
||||||
+CANBOUNCEWATER;
|
+CANBOUNCEWATER;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+DONTBOUNCEONSHOOTABLES;
|
+DONTBOUNCEONSHOOTABLES;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -219,6 +219,7 @@ Class ShockSpark : Actor
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+CANBOUNCEWATER;
|
+CANBOUNCEWATER;
|
||||||
-BOUNCEAUTOOFF;
|
-BOUNCEAUTOOFF;
|
||||||
|
+NOFRICTION;
|
||||||
BounceType "Doom";
|
BounceType "Doom";
|
||||||
BounceFactor 1.0;
|
BounceFactor 1.0;
|
||||||
WallBounceFactor 1.0;
|
WallBounceFactor 1.0;
|
||||||
|
|
@ -290,6 +291,7 @@ Class ShockBeam : Actor
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+NOTELEPORT;
|
+NOTELEPORT;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -451,6 +453,7 @@ Class SuperShockSpark : Actor
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+CANBOUNCEWATER;
|
+CANBOUNCEWATER;
|
||||||
-BOUNCEAUTOOFF;
|
-BOUNCEAUTOOFF;
|
||||||
|
+NOFRICTION;
|
||||||
BounceType "Doom";
|
BounceType "Doom";
|
||||||
BounceFactor 1.0;
|
BounceFactor 1.0;
|
||||||
WallBounceFactor 1.0;
|
WallBounceFactor 1.0;
|
||||||
|
|
@ -900,6 +903,7 @@ Class ShockBall : Actor
|
||||||
+EXPLODEONWATER;
|
+EXPLODEONWATER;
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
@ -996,6 +1000,7 @@ Class SuperShockBall : Actor
|
||||||
+EXPLODEONWATER;
|
+EXPLODEONWATER;
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,8 @@ Class TranslocatorGlow : Actor
|
||||||
|
|
||||||
Class TranslocatorModule : Actor
|
Class TranslocatorModule : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
Actor b;
|
Actor b;
|
||||||
bool alreadyhit;
|
bool alreadyhit;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,25 @@ const firstbloodmsg_id = -1401;
|
||||||
const spreemsg_id = -1402;
|
const spreemsg_id = -1402;
|
||||||
const multimsg_id = -1403;
|
const multimsg_id = -1403;
|
||||||
|
|
||||||
|
// backported from DEMOLITIONIST, needed to fix the broken water physics of some projectiles
|
||||||
|
Mixin Class UTMissileFix
|
||||||
|
{
|
||||||
|
Default
|
||||||
|
{
|
||||||
|
+NOFRICTION;
|
||||||
|
}
|
||||||
|
override void FallAndSink( double grav, double oldfloorz )
|
||||||
|
{
|
||||||
|
if ( bNOGRAVITY || (waterlevel < 1) )
|
||||||
|
{
|
||||||
|
Super.FallAndSink(grav,oldfloorz);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
vel *= .99;
|
||||||
|
if ( pos.z > floorz ) vel.z -= grav*.01;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Class UTPlayer : DoomPlayer
|
Class UTPlayer : DoomPlayer
|
||||||
{
|
{
|
||||||
bool doprintnoammo;
|
bool doprintnoammo;
|
||||||
|
|
@ -2149,6 +2168,7 @@ Class UTSpark : Actor
|
||||||
+THRUACTORS;
|
+THRUACTORS;
|
||||||
+NOTELEPORT;
|
+NOTELEPORT;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOFRICTION;
|
||||||
BounceType "Doom";
|
BounceType "Doom";
|
||||||
BounceFactor 0.4;
|
BounceFactor 0.4;
|
||||||
Gravity 0.2;
|
Gravity 0.2;
|
||||||
|
|
@ -2209,6 +2229,8 @@ Class UTViewSpark : UTSpark
|
||||||
|
|
||||||
Class UTChip : Actor
|
Class UTChip : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
int deadtimer;
|
int deadtimer;
|
||||||
double rollvel, anglevel, pitchvel;
|
double rollvel, anglevel, pitchvel;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,8 @@ Class UTBlood : Actor
|
||||||
// single drop of blod
|
// single drop of blod
|
||||||
Class UTBloodDrop : Actor
|
Class UTBloodDrop : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Scale 0.24;
|
Scale 0.24;
|
||||||
|
|
@ -450,6 +452,8 @@ Class UTPlayerGibber : UTGibber
|
||||||
// Chunks
|
// Chunks
|
||||||
Class UTGib : Actor
|
Class UTGib : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UTMissileFix;
|
||||||
|
|
||||||
double rollvel, anglevel, pitchvel;
|
double rollvel, anglevel, pitchvel;
|
||||||
|
|
||||||
Default
|
Default
|
||||||
|
|
|
||||||
|
|
@ -280,6 +280,7 @@ Class WarShell : Actor
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+EXPLODEONWATER;
|
+EXPLODEONWATER;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue