Began working on Rocket Launcher.

Corrected some stuff and tweaked models and offsets again.
Added gib impact sounds (Droplets compat).
Made Translocator module throwing work like in UT (same math, even).
Corrected sludge wall sticking, uses projection now rather than a cheap trace.
This commit is contained in:
Marisa the Magician 2018-05-30 01:36:38 +02:00
commit a6ccec0997
19 changed files with 356 additions and 60 deletions

View file

@ -197,7 +197,7 @@ Class PulseBoltCap : Actor
+NOGRAVITY;
+NOCLIP;
+DONTSPLASH;
Scale 0.25;
Scale 0.15;
}
States
{
@ -217,7 +217,7 @@ Class PulseBoltHit : Actor
+NOGRAVITY;
+NOCLIP;
+DONTSPLASH;
Scale 0.25;
Scale 0.15;
}
States
{
@ -293,8 +293,8 @@ Class PulseBolt : Actor
weffect.Destroy();
weffect = null;
}
if ( !weffect ) weffect = Spawn("PulseBoltHit",t.Results.HitPos);
else weffect.SetOrigin(t.Results.HitPos,true);
if ( !weffect ) weffect = Spawn("PulseBoltHit",t.Results.HitPos-t.Results.HitVector);
else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector,true);
A_SprayDecal("BoltScorch",beamsize+8);
if ( next )
{
@ -325,8 +325,8 @@ Class PulseBolt : Actor
weffect.Destroy();
weffect = null;
}
if ( !weffect ) weffect = Spawn("PulseBoltCap",t.Results.HitPos);
else weffect.SetOrigin(t.Results.HitPos,true);
if ( !weffect ) weffect = Spawn("PulseBoltCap",t.Results.HitPos-t.Results.HitVector);
else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector,true);
}
else
{
@ -350,8 +350,8 @@ Class PulseBolt : Actor
{
frame = parent.frame;
SetOrigin(parent.Vec3Offset(x.x*beamsize,x.y*beamsize,x.z*beamsize),true);
A_SetAngle(parent.angle,SPF_INTERPOLATE);
A_SetPitch(parent.pitch,SPF_INTERPOLATE);
A_SetAngle(parent.angle);
A_SetPitch(parent.pitch);
CheckBeam(x);
}
Default
@ -363,6 +363,7 @@ Class PulseBolt : Actor
+NOGRAVITY;
+NOCLIP;
+DONTSPLASH;
+INTERPOLATEANGLES;
}
States
{
@ -390,12 +391,12 @@ Class StarterBolt : PulseBolt
if ( target.player )
{
[x, y, z] = Matrix4.GetAxes(target.pitch,target.angle,target.roll);
origin = (0,0,target.player.viewz-target.pos.z)+5.0*x+3.0*y-1.5*z;
origin = (0,0,target.player.viewz-target.pos.z)+5.0*x+3.0*y-1.0*z;
}
else origin = (0,0,target.missileheight);
SetOrigin(target.Vec3Offset(origin.x,origin.y,origin.z),true);
A_SetAngle(target.angle,SPF_INTERPOLATE);
A_SetPitch(target.BulletSlope(),SPF_INTERPOLATE);
A_SetAngle(target.angle);
A_SetPitch(target.BulletSlope());
frame++;
if ( frame > 4 ) frame = 0;
CheckBeam(x);
@ -436,7 +437,7 @@ Class PulseGun : UTWeapon
A_AlertMonsters();
Vector3 x, y, z;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = pos+(0,0,player.viewheight)+10.0*x+4.5*y-2.4*z;
Vector3 origin = pos+(0,0,player.viewheight)+10.0*x+4.5*y-1.9*z;
int numpt = Random[Pulse](2,5);
for ( int i=0; i<numpt; i++ )
{
@ -476,7 +477,7 @@ Class PulseGun : UTWeapon
Vector3 x, y, z;
double a;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Vector3 origin = pos+(0,0,player.viewheight)+10.0*x+4.0*y-2.0*z;
Vector3 origin = pos+(0,0,player.viewheight)+10.0*x+4.0*y-1.5*z;
origin += y*cos(invoker.sangle)*2.0+z*sin(invoker.sangle)*2.0;
invoker.sangle += 100;
Actor p = Spawn("PulseBall",origin);
@ -503,6 +504,11 @@ Class PulseGun : UTWeapon
A_StopSound(CHAN_WEAPON);
if ( invoker.beam ) invoker.beam.Destroy();
}
override void OwnerDied()
{
Super.OwnerDied();
if ( beam ) beam.Destroy();
}
Default
{
Tag "Pulse Gun";