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

@ -1,5 +1,21 @@
Class StingerAmmo : Ammo
{
bool bOldSkin;
void A_CheckSkin()
{
if ( sting_oldtarydium )
{
if ( !bOldSkin ) A_ChangeModel("",0,"","",0,"models/OldSkins","JTaryPick1_.png");
bOldSkin = true;
}
else
{
if ( bOldSkin ) A_ChangeModel("",0,"","",0,"models","JTaryPick1_.png");
bOldSkin = false;
}
}
Default
{
Tag "$T_STINGERAMMO";
@ -18,8 +34,8 @@ Class StingerAmmo : Ammo
States
{
Spawn:
SAMO A -1;
Stop;
SAMO A 1 A_CheckSkin();
Wait;
}
}
@ -34,8 +50,8 @@ Class StingerAmmo2 : StingerAmmo
States
{
Spawn:
SAMO B -1;
Stop;
SAMO B 1 A_CheckSkin();
Wait;
}
}
@ -192,7 +208,7 @@ Class TarydiumExplosion : Actor
ang = FRandom[Stinger](0,360);
pt = FRandom[Stinger](-90,90);
let c = Spawn("UTSmoke",pos);
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](2,7);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](2,7);
c.SetShade(Color(1,3,4)*Random[Stinger](24,63));
c.scale *= 3.;
}
@ -204,7 +220,7 @@ Class TarydiumExplosion : Actor
let c = Spawn("StingerChunk",pos);
c.angle = ang;
c.pitch = pt;
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](6,12);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](6,12);
}
numpt = Random[Stinger](10,20)*min(4,special1/40);
for ( int i=0; i<numpt; i++ )
@ -212,7 +228,7 @@ Class TarydiumExplosion : Actor
ang = FRandom[Stinger](0,360);
pt = FRandom[Stinger](-90,90);
let c = Spawn("UTChip",pos);
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](6,12);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](6,12);
c.scale *= FRandom[Stinger](0.9,1.5);
}
}
@ -339,7 +355,7 @@ Class TarydiumDebuff : Thinker
ang = FRandom[Stinger](0,360);
pt = FRandom[Stinger](-90,90);
let c = victim.Spawn("UTSmoke",pos);
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](0.3,0.8);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](0.3,0.8);
c.SetShade(Color(1,3,4)*Random[Stinger](24,63));
c.scale *= 3.;
c.alpha *= 0.35;
@ -374,6 +390,22 @@ Class TarydiumDebuff : Thinker
Class StingerProjectile : Actor
{
bool bOldSkin;
void A_CheckSkin()
{
if ( sting_oldtarydium )
{
if ( !bOldSkin ) A_ChangeModel("",0,"","",0,"models/OldSkins","JTaryPick1_.png");
bOldSkin = true;
}
else
{
if ( bOldSkin ) A_ChangeModel("",0,"","",0,"models","JTaryPick1_.png");
bOldSkin = false;
}
}
Vector3 oldvel;
Default
{
@ -433,7 +465,7 @@ Class StingerProjectile : Actor
c.scale *= 0.5;
c.angle = ang;
c.pitch = pt;
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](3,9);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](3,9);
}
numpt = Random[Stinger](2,5);
for ( int i=0; i<numpt; i++ )
@ -441,7 +473,7 @@ Class StingerProjectile : Actor
ang = FRandom[Stinger](0,360);
pt = FRandom[Stinger](-90,90);
let c = Spawn("UTSmoke",pos);
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](0.3,0.8);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](0.3,0.8);
c.SetShade(Color(1,3,4)*Random[Stinger](48,63));
c.alpha *= 0.35;
}
@ -477,7 +509,7 @@ Class StingerProjectile : Actor
let c = Spawn("StingerChunk",pos);
c.angle = ang;
c.pitch = pt;
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](3,9);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](3,9);
}
numpt = Random[Stinger](6,12);
for ( int i=0; i<numpt; i++ )
@ -485,7 +517,7 @@ Class StingerProjectile : Actor
ang = FRandom[Stinger](0,360);
pt = FRandom[Stinger](-90,90);
let c = Spawn("UTSmoke",pos);
c.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[Stinger](0.3,0.8);
c.vel = dt_Utility.Vec3FromAngle(ang,pt)*FRandom[Stinger](0.3,0.8);
c.SetShade(Color(1,3,4)*Random[Stinger](48,63));
c.alpha *= 0.5;
}
@ -495,6 +527,7 @@ Class StingerProjectile : Actor
Spawn:
TPRJ A 1 Bright
{
A_CheckSkin();
if ( waterlevel > 0 )
Spawn("UTBubble",pos);
}
@ -563,19 +596,19 @@ Class Stinger : 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),5*x+8*y-8*z);
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),5*x-8*y-8*z);
Actor p = Spawn("StingerProjectile",origin);
p.angle = angle;
p.pitch = BulletSlope();
p.roll = FRandom[Stinger](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;
int numpt = Random[Stinger](5,9);
double ang;
for ( int i=0; i<numpt; i++ )
{
let s = Spawn("ViewStingerChunk",origin);
ViewStingerChunk(s).ofs = (8,2,-2);
ViewStingerChunk(s).ofs = (8,-2,-2);
ang = FRandom[Stinger](0,360);
ViewStingerChunk(s).vvel = (FRandom[Stinger](0.2,1.2),0,0)+(0,cos(ang),sin(ang))*FRandom[Stinger](0.3,0.9);
s.target = self;
@ -583,7 +616,7 @@ Class Stinger : UnrealWeapon
for ( int i=0; i<12; i++ )
{
let s = Spawn("UTViewSmoke",origin);
UTViewSmoke(s).ofs = (16,4,-4);
UTViewSmoke(s).ofs = (16,-4,-4);
ang = FRandom[Stinger](0,360);
UTViewSmoke(s).vvel = (FRandom[Stinger](0,0.4),0,0)+(0,cos(ang),sin(ang))*FRandom[Stinger](0.2,0.5);
s.target = self;
@ -607,7 +640,7 @@ Class Stinger : 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),5*x+8*y-8*z);
Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),5*x-8*y-8*z);
[x, y, z] = dt_CoordUtil.GetAxes(BulletSlope(),angle,roll);
Actor p;
double a, s;
@ -618,19 +651,19 @@ Class Stinger : UnrealWeapon
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
a = FRandom[Stinger](0,360);
s = FRandom[Stinger](0,(i>0)?.08:0.); // first shot always accurate
dir = (x+y*cos(a)*s+z*sin(a)*s).unit();
dir = dt_Utility.ConeSpread(x,y,z,a,s);
p = Spawn("StingerProjectile",origin);
p.angle = atan2(dir.y,dir.x);
p.pitch = asin(-dir.z);
p.roll = FRandom[Stinger](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;
int numpt = Random[Stinger](5,9);
double ang;
for ( int i=0; i<numpt; i++ )
{
let s = Spawn("ViewStingerChunk",origin);
ViewStingerChunk(s).ofs = (8,2,-2);
ViewStingerChunk(s).ofs = (8,-2,-2);
ang = FRandom[Stinger](0,360);
ViewStingerChunk(s).vvel = (FRandom[Stinger](0.2,1.2),0,0)+(0,cos(ang),sin(ang))*FRandom[Stinger](0.3,0.9);
s.target = self;
@ -638,7 +671,7 @@ Class Stinger : UnrealWeapon
for ( int i=0; i<12; i++ )
{
let s = Spawn("UTViewSmoke",origin);
UTViewSmoke(s).ofs = (16,4,-4);
UTViewSmoke(s).ofs = (16,-4,-4);
ang = FRandom[Stinger](0,360);
UTViewSmoke(s).vvel = (FRandom[Stinger](0,0.4),0,0)+(0,cos(ang),sin(ang))*FRandom[Stinger](0.2,0.5);
s.target = self;