Projectile physics hotfix from Demolitionist.
This commit is contained in:
parent
ba4fabc410
commit
ec1794c755
14 changed files with 65 additions and 2 deletions
|
|
@ -226,6 +226,7 @@ Class ASMDSpark : Actor
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
+CANBOUNCEWATER;
|
+CANBOUNCEWATER;
|
||||||
-BOUNCEAUTOOFF;
|
-BOUNCEAUTOOFF;
|
||||||
|
+NOFRICTION;
|
||||||
BounceType "Hexen";
|
BounceType "Hexen";
|
||||||
BounceFactor 1.0;
|
BounceFactor 1.0;
|
||||||
WallBounceFactor 1.0;
|
WallBounceFactor 1.0;
|
||||||
|
|
@ -437,6 +438,7 @@ Class ASMDBall : Actor
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -374,6 +374,7 @@ Class DispersionAmmo : Actor
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
+HITTRACER;
|
+HITTRACER;
|
||||||
|
+NOFRICTION;
|
||||||
DispersionAmmo.LightClass "DispExLight1";
|
DispersionAmmo.LightClass "DispExLight1";
|
||||||
DispersionAmmo.BurstClass "DispBurst1";
|
DispersionAmmo.BurstClass "DispBurst1";
|
||||||
DispersionAmmo.ExploClass "DispExplo1";
|
DispersionAmmo.ExploClass "DispExplo1";
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ Class UFireball : Actor
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+FORCEXYBILLBOARD;
|
+FORCEXYBILLBOARD;
|
||||||
+DONTSPLASH;
|
+DONTSPLASH;
|
||||||
|
+NOFRICTION;
|
||||||
UFireball.SpreadFactor 0.2;
|
UFireball.SpreadFactor 0.2;
|
||||||
UFireball.NumSmokes 1;
|
UFireball.NumSmokes 1;
|
||||||
UFireball.NumSparks 2;
|
UFireball.NumSparks 2;
|
||||||
|
|
|
||||||
|
|
@ -588,6 +588,7 @@ Class ImpalerProjectile : Actor
|
||||||
+FORCERADIUSDMG;
|
+FORCERADIUSDMG;
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,8 @@ Class VoiceBoxHitbox : Actor
|
||||||
|
|
||||||
Class VoiceBoxActive : Actor
|
Class VoiceBoxActive : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
Actor b;
|
Actor b;
|
||||||
double desiredangle, anglevel, oldangle;
|
double desiredangle, anglevel, oldangle;
|
||||||
|
|
||||||
|
|
@ -411,6 +413,8 @@ Class Flare : UnrealInventory
|
||||||
|
|
||||||
Class FlareThrown : Actor
|
Class FlareThrown : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
double pitchvel, anglevel, rollvel;
|
double pitchvel, anglevel, rollvel;
|
||||||
double desiredangle;
|
double desiredangle;
|
||||||
bool rotatetodesired;
|
bool rotatetodesired;
|
||||||
|
|
@ -724,6 +728,8 @@ Class DarkFlare : BetaFlare
|
||||||
|
|
||||||
Class BetaFlareThrown : Actor
|
Class BetaFlareThrown : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
double pitchvel, anglevel, rollvel;
|
double pitchvel, anglevel, rollvel;
|
||||||
double desiredangle;
|
double desiredangle;
|
||||||
bool rotatetodesired;
|
bool rotatetodesired;
|
||||||
|
|
@ -1838,6 +1844,8 @@ Class MinigunSentry : Actor
|
||||||
|
|
||||||
Class SentryFragment : Actor
|
Class SentryFragment : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
int deadtimer;
|
int deadtimer;
|
||||||
double rollvel, anglevel, pitchvel;
|
double rollvel, anglevel, pitchvel;
|
||||||
double heat;
|
double heat;
|
||||||
|
|
|
||||||
|
|
@ -376,6 +376,16 @@ Class UNapalm : Actor
|
||||||
yawvel = FRandom[FlameT](10,30)*RandomPick[FlameT](-1,1);
|
yawvel = FRandom[FlameT](10,30)*RandomPick[FlameT](-1,1);
|
||||||
if ( waterlevel <= 0 ) myfire = OnFire.Apply(self,target,int(120*scale.x),true,6);
|
if ( waterlevel <= 0 ) myfire = OnFire.Apply(self,target,int(120*scale.x),true,6);
|
||||||
}
|
}
|
||||||
|
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();
|
||||||
|
|
@ -387,7 +397,6 @@ Class UNapalm : 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;
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@ Class PeaceRocket : Actor
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+INTERPOLATEANGLES;
|
+INTERPOLATEANGLES;
|
||||||
+HITOWNER;
|
+HITOWNER;
|
||||||
|
+NOFRICTION;
|
||||||
ReactionTime 9;
|
ReactionTime 9;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
|
|
@ -207,6 +208,8 @@ Class PeaceFragment : SentryFragment
|
||||||
|
|
||||||
Class PeaceBarrel : Actor
|
Class PeaceBarrel : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
action void A_AlignSelf()
|
action void A_AlignSelf()
|
||||||
{
|
{
|
||||||
// find closest 3d floor for its normal
|
// find closest 3d floor for its normal
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ Class RazorBlade : Actor
|
||||||
+NODAMAGETHRUST;
|
+NODAMAGETHRUST;
|
||||||
+DONTBOUNCEONSHOOTABLES;
|
+DONTBOUNCEONSHOOTABLES;
|
||||||
+ROLLSPRITE;
|
+ROLLSPRITE;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,8 @@ Class StingerBurstLight : PaletteLight
|
||||||
|
|
||||||
Class StingerChunk : Actor
|
Class StingerChunk : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
int deadtimer;
|
int deadtimer;
|
||||||
double rollvel, anglevel, pitchvel;
|
double rollvel, anglevel, pitchvel;
|
||||||
|
|
||||||
|
|
@ -417,6 +419,7 @@ Class StingerProjectile : Actor
|
||||||
Height 2;
|
Height 2;
|
||||||
PROJECTILE;
|
PROJECTILE;
|
||||||
+SKYEXPLODE;
|
+SKYEXPLODE;
|
||||||
|
+NOFRICTION;
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,16 @@ Class UBioGel : 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();
|
||||||
|
|
@ -92,7 +102,6 @@ Class UBioGel : 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;
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,8 @@ Class URocketTrail : Actor
|
||||||
|
|
||||||
Class URocket : Actor
|
Class URocket : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
Vector3 InitialDir, Acceleration;
|
Vector3 InitialDir, Acceleration;
|
||||||
int ticcnt;
|
int ticcnt;
|
||||||
bool ringex;
|
bool ringex;
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,8 @@ Class NaliFruit : Health
|
||||||
|
|
||||||
Class SeedProj : Actor
|
Class SeedProj : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
double pitchvel, anglevel, rollvel;
|
double pitchvel, anglevel, rollvel;
|
||||||
double desiredangle;
|
double desiredangle;
|
||||||
bool rotatetodesired;
|
bool rotatetodesired;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,22 @@
|
||||||
|
// backported from DEMOLITIONIST, needed to fix the broken water physics of some projectiles
|
||||||
|
Mixin Class UMissileFix
|
||||||
|
{
|
||||||
|
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 UPlayer : UTPlayer
|
Class UPlayer : UTPlayer
|
||||||
{
|
{
|
||||||
Default
|
Default
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ Class UTranslocatorAmmo : Ammo
|
||||||
|
|
||||||
Class UTranslocatorModule : Actor
|
Class UTranslocatorModule : Actor
|
||||||
{
|
{
|
||||||
|
Mixin UMissileFix;
|
||||||
|
|
||||||
Actor b;
|
Actor b;
|
||||||
bool alreadyhit;
|
bool alreadyhit;
|
||||||
double anglevel;
|
double anglevel;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue