1.2 update, w/ GZDoom 4.9 stuff:

- Customizable player skins here too.
 - Integrated re-skin add-ons ("Old Sounds" is still separate).
 - The usual fixes and optimizations.
 - All weapons are now left-handed, where possible.
This commit is contained in:
Marisa the Magician 2022-11-06 00:02:46 +01:00
commit a21aa43f35
1485 changed files with 1157 additions and 380 deletions

View file

@ -203,7 +203,7 @@ Class ImpalerBurstBolt : Actor
}
double a = FRandom[Impaler](0,360), s = FRandom[Impaler](0.,.8);
invoker.nextpos = level.Vec3Offset(t.Results.HitPos,normal);
invoker.nextdir = (dir+cos(a)*y*s+sin(a)*z*s).unit();
invoker.nextdir = dt_Utility.ConeSpread(dir,y,z,a,s);
}
action void A_Spread()
{
@ -458,7 +458,7 @@ Class ImpalerBolt : Actor
dirto /= distto;
distto = 1.-clamp(distto*0.1,0.,.9);
}
dir = (x+y*cos(a)*s+z*sin(a)*s+dirto*distto).unit();
dir = (dt_Utility.ConeSpread(x,y,z,a,s)+dirto*distto).unit();
dir = dir*.5+oldx*.5;
oldx = dir;
A_SetAngle(atan2(dir.y,dir.x));
@ -524,7 +524,7 @@ Class StarterImpalerBolt : ImpalerBolt
start = self;
flares[0] = Spawn("ImpalerFlare",pos);
flares[1] = Spawn("ImpalerFlare",pos);
oldx = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch));
oldx = dt_Utility.Vec3FromAngle(angle,pitch);
}
override void OnDestroy()
{
@ -548,7 +548,7 @@ Class StarterImpalerBolt : ImpalerBolt
if ( target.player )
{
[x, y, z] = dt_CoordUtil.GetAxes(target.pitch,target.angle,target.roll);
origin = level.Vec3Offset(target.Vec2OffsetZ(0,0,target.player.viewz),15*x+2*y-2.5*z);
origin = level.Vec3Offset(target.Vec2OffsetZ(0,0,target.player.viewz),15*x-2.5*z);
}
else origin = target.Vec3Offset(0,0,target.missileheight);
SetOrigin(origin,true);
@ -563,13 +563,13 @@ Class StarterImpalerBolt : ImpalerBolt
flares[1].A_SetScale(0.02+cos(gametic*8)*0.004);
double a = FRandom[Impaler](0,360), s = FRandom[Impaler](0.,.1);
[x, y, z] = dt_CoordUtil.GetAxes(target.pitch,target.angle,target.roll);
Vector3 dir = (x+cos(a)*y*s+sin(a)*z*s).unit();
Vector3 dir = dt_Utility.ConeSpread(x,y,z,a,s);
dir = oldx*.5+dir*.5;
oldx = dir;
A_SetAngle(atan2(dir.y,dir.x));
A_SetPitch(asin(-dir.z));
hitlist.Clear();
CheckBeam((cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)));
CheckBeam(dt_Utility.Vec3FromAngle(angle,pitch));
}
}
@ -618,7 +618,7 @@ Class ImpalerProjectile : Actor
let c = Spawn("ImpalerChunk",pos);
c.angle = ang;
c.pitch = pt;
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Impaler](3,9);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Impaler](3,9);
}
numpt = Random[Impaler](6,12);
for ( int i=0; i<numpt; i++ )
@ -626,7 +626,7 @@ Class ImpalerProjectile : Actor
ang = FRandom[Impaler](0,360);
pt = FRandom[Impaler](-90,90);
let c = Spawn("UTSmoke",pos);
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Impaler](.3,.8);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Impaler](.3,.8);
c.SetShade(Color(4,1,3)*Random[Impaler](48,63));
c.bBRIGHT = true;
c.alpha *= .5;
@ -688,7 +688,7 @@ Class ImpalerProjectile : Actor
ang = FRandom[Impaler](0,360);
pt = FRandom[Impaler](-90,90);
let c = Spawn("ImpalerSpark",pos);
c.vel = vel*0.5+(cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Impaler](.2,.8)*(special1/90.);
c.vel = vel*0.5+dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Impaler](.2,.8)*(special1/90.);
}
}
if ( special1 > 120 )
@ -703,7 +703,7 @@ Class ImpalerProjectile : Actor
c.bBRIGHT = true;
c.alpha *= min(1.,special1/350.);
c.scale *= min(2.,special1/350.);
c.vel = vel*0.5+(cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Impaler](.2,.8)*(special1/120.);
c.vel = vel*0.5+dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Impaler](.2,.8)*(special1/120.);
}
}
}
@ -794,12 +794,12 @@ Class Impaler : UnrealWeapon
A_QuakeEx(1,1,1,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
Vector3 x, y, z;
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-2.5*z);
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x-2.5*z);
Actor p = Spawn("ImpalerProjectile",origin);
p.angle = angle;
p.pitch = BulletSlope();
p.roll = FRandom[Impaler](0,360);
p.vel = (cos(p.angle)*cos(p.pitch),sin(p.angle)*cos(p.pitch),-sin(p.pitch))*p.speed;
p.vel = dt_Utility.Vec3FromAngle(p.angle,p.pitch)*p.speed;
p.target = self;
double mult = Amplifier.GetMult(self,100);
p.special1 = int(3*invoker.clipcount*mult+120*(mult-1.));
@ -807,7 +807,7 @@ Class Impaler : UnrealWeapon
for ( int i=0; i<numpt; i++ )
{
let s = Spawn("ViewImpalerSpark",origin);
ViewImpalerSpark(s).ofs = (10,2,-2.5);
ViewImpalerSpark(s).ofs = (10,0,-2.5);
s.target = self;
s.scale *= 3.;
ViewImpalerSpark(s).vvel += (FRandom[Impaler](0.2,0.8),FRandom[Impaler](-0.5,0.5),FRandom[Impaler](-0.5,0.5));
@ -819,7 +819,7 @@ Class Impaler : UnrealWeapon
{
Vector3 x, y, z, origin;
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),15*x+2*y-2.5*z);
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),15*x-2.5*z);
invoker.beam = Spawn("StarterImpalerBolt",origin);
invoker.beam.angle = angle;
invoker.beam.pitch = BulletSlope();
@ -847,12 +847,12 @@ Class Impaler : UnrealWeapon
A_AlertMonsters();
Vector3 x, y, z;
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),15*x+2*y-2.5*z);
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),15*x-2.5*z);
int numpt = Random[Impaler](4,7);
for ( int i=0; i<numpt; i++ )
{
let s = Spawn("UTViewSmoke",origin);
UTViewSmoke(s).ofs = (15,2,-2.5);
UTViewSmoke(s).ofs = (15,0,-2.5);
s.scale *= 1.8;
s.target = self;
s.SetShade("602060");
@ -863,7 +863,7 @@ Class Impaler : UnrealWeapon
for ( int i=0; i<numpt; i++ )
{
let s = Spawn("ViewImpalerSpark",origin);
ViewImpalerSpark(s).ofs = (15,2,-2.5);
ViewImpalerSpark(s).ofs = (15,0,-2.5);
s.target = self;
s.scale *= 3.;
ViewImpalerSpark(s).vvel += (FRandom[Impaler](0.2,0.8),FRandom[Impaler](-0.5,0.5),FRandom[Impaler](-0.5,0.5));
@ -896,7 +896,7 @@ Class Impaler : UnrealWeapon
FLineTraceData d;
Vector3 x, y, z, origin;
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),y*4-z*4);
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),-z*4);
LineTrace(angle,DEFMELEERANGE*1.5,slope,TRF_ABSPOSITION,origin.z,origin.x,origin.y,data:d);
if ( d.HitType != TRACE_HitNone )
{