Renamed some sprites for compatibility with Smooth Doom.
Added water step/land sounds. Made footsteps toggleable (in case the player is using another mod that adds them). Added handling of liquid terrain on all actors that need it. Fixed dual enforcers breaking after level transition. Fixed some refire issues caused by the use of the Resurrect cheat. Made guided redeemer missiles explode on player death. Replaced pure particles on pulse gun effects with actor particles.
|
|
@ -17,3 +17,4 @@ user bool flak_showinfo = true;
|
|||
user float flak_hudsize = 1.0; // 0.2 <-> 1.0 in steps of 0.2 (default 1.0)
|
||||
user float flak_weaponsize = 0.8; // 0.2 <-> 1.0 in steps of 0.2 (default 0.8)
|
||||
user float flak_statussize = 1.0; // 0.5 <-> 1.5 in steps of 0.1 (default 1.0)
|
||||
user bool flak_footsteps = true;
|
||||
|
|
|
|||
|
|
@ -36,6 +36,9 @@ OptionMenu "UTOptionMenu"
|
|||
Option "Color Choice", "flak_colorprefs", "ColorPrefs"
|
||||
ColorPicker "Custom Color", "flak_colorcustom"
|
||||
Slider "HUD Opacity", "flak_opacity", 1, 16, 1, 0
|
||||
StaticText " "
|
||||
StaticText "Misc Options", "Gold"
|
||||
Option "UT Footsteps", "flak_footsteps", "YesNo"
|
||||
}
|
||||
|
||||
AddOptionMenu "OptionsMenu"
|
||||
|
|
|
|||
|
|
@ -92,6 +92,9 @@ ut/playerfootstep2 stone04
|
|||
ut/playerfootstep3 stone05
|
||||
$random ut/playerfootstep { ut/playerfootstep1 ut/playerfootstep2 ut/playerfootstep3 }
|
||||
|
||||
ut/playerfootstepwet lsplash
|
||||
ut/wetsplash dsplash
|
||||
|
||||
// everything else
|
||||
|
||||
misc/secret capsound
|
||||
|
|
|
|||
BIN
sounds/DSplash.ogg
Normal file
BIN
sounds/LSplash.ogg
Normal file
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 7 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
|
@ -43,7 +43,7 @@ Class BioSpark : Actor
|
|||
{
|
||||
RenderStyle "Add";
|
||||
Radius 2;
|
||||
Height 0;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+FORCEXYBILLBOARD;
|
||||
+MISSILE;
|
||||
|
|
@ -52,6 +52,9 @@ Class BioSpark : Actor
|
|||
+ROLLSPRITE;
|
||||
+ROLLCENTER;
|
||||
+NOTELEPORT;
|
||||
+DONTSPLASH;
|
||||
-BOUNCEAUTOOFF;
|
||||
+BOUNCEAUTOOFFFLOORONLY;
|
||||
BounceType "Doom";
|
||||
BounceFactor 0.5;
|
||||
WallBounceFactor 0.5;
|
||||
|
|
@ -350,6 +353,7 @@ Class BioGel : Actor
|
|||
PROJECTILE;
|
||||
-NOGRAVITY;
|
||||
+SKYEXPLODE;
|
||||
+EXPLODEONWATER;
|
||||
+FORCERADIUSDMG;
|
||||
+FORCEXYBILLBOARD;
|
||||
+MOVEWITHSECTOR;
|
||||
|
|
|
|||
|
|
@ -112,6 +112,7 @@ Class UTRocket : Actor
|
|||
Speed 30;
|
||||
PROJECTILE;
|
||||
+SKYEXPLODE;
|
||||
+EXPLODEONWATER;
|
||||
+SEEKERMISSILE;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
|
|
@ -170,7 +171,7 @@ Class UTRocket : Actor
|
|||
Wait;
|
||||
Death:
|
||||
TNT1 A 0 A_RocketExplode();
|
||||
SEXP ABCDEFGHIJ 2 Bright;
|
||||
SSMX ABCDEFGHIJ 2 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
|
@ -185,6 +186,10 @@ Class UTGrenade : UTRocket
|
|||
DamageType 'GrenadeDeath';
|
||||
-NOGRAVITY;
|
||||
+USEBOUNCESTATE;
|
||||
-BOUNCEAUTOOFF;
|
||||
+BOUNCEAUTOOFFFLOORONLY;
|
||||
-EXPLODEONWATER;
|
||||
+CANBOUNCEWATER;
|
||||
BounceType "Doom";
|
||||
BounceFactor 0.75;
|
||||
ReactionTime 85;
|
||||
|
|
|
|||
|
|
@ -345,11 +345,24 @@ Class Enforcer : UTWeapon replaces Pistol
|
|||
return "%k riddled %o full of holes with the Enforcer.";
|
||||
}
|
||||
|
||||
override void Travelled()
|
||||
{
|
||||
Super.Travelled();
|
||||
slaveactive = false;
|
||||
}
|
||||
|
||||
override void OwnerDied()
|
||||
{
|
||||
Super.OwnerDied();
|
||||
slaverefire = 0;
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "Enforcer";
|
||||
Inventory.PickupMessage "You picked up another Enforcer!";
|
||||
Inventory.MaxAmount 2;
|
||||
Inventory.InterHubAmount 2;
|
||||
Weapon.UpSound "enforcer/select";
|
||||
Weapon.SlotNumber 2;
|
||||
Weapon.SelectionOrder 8;
|
||||
|
|
|
|||
|
|
@ -145,8 +145,11 @@ Class FlakChunk : Actor
|
|||
BounceType "Doom";
|
||||
BounceFactor 0.8;
|
||||
PROJECTILE;
|
||||
+USEBOUNCESTATE
|
||||
-BOUNCEAUTOOFF
|
||||
+USEBOUNCESTATE;
|
||||
-BOUNCEAUTOOFF;
|
||||
+BOUNCEAUTOOFFFLOORONLY;
|
||||
+CANBOUNCEWATER;
|
||||
+SKYEXPLODE;
|
||||
Scale 0.5;
|
||||
}
|
||||
override bool CanCollideWith( Actor other, bool passive )
|
||||
|
|
@ -363,6 +366,7 @@ Class FlakSlug : Actor
|
|||
PROJECTILE;
|
||||
-NOGRAVITY;
|
||||
+SKYEXPLODE;
|
||||
+EXPLODEONWATER;
|
||||
+HITTRACER;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
|
|
|
|||
|
|
@ -36,6 +36,54 @@ Class PulseAmmo : Ammo
|
|||
}
|
||||
}
|
||||
|
||||
Class PulseSpark : Actor
|
||||
{
|
||||
Default
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Radius 2;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+NOGRAVITY;
|
||||
+MISSILE;
|
||||
+FORCEXYBILLBOARD;
|
||||
+THRUACTORS;
|
||||
+ROLLSPRITE;
|
||||
+ROLLCENTER;
|
||||
+NOTELEPORT;
|
||||
+DONTSPLASH;
|
||||
+CANBOUNCEWATER;
|
||||
-BOUNCEAUTOOFF;
|
||||
BounceType "Doom";
|
||||
BounceFactor 1.0;
|
||||
WallBounceFactor 1.0;
|
||||
Scale 0.03;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
if ( !bAMBUSH )
|
||||
{
|
||||
roll = FRandom[Pulse](0,360);
|
||||
let s = Spawn(GetClass(),pos);
|
||||
s.bAMBUSH = true;
|
||||
s.vel = vel;
|
||||
s.scale = scale;
|
||||
s.roll = roll;
|
||||
}
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
PSPK A 1 Bright
|
||||
{
|
||||
A_FadeOut(FRandom[Pulse](0.0,0.15));
|
||||
vel *= 0.96;
|
||||
}
|
||||
Wait;
|
||||
}
|
||||
}
|
||||
|
||||
Class PulseBallLight : DynamicLight
|
||||
{
|
||||
double pulseofs;
|
||||
|
|
@ -96,6 +144,8 @@ Class PulseBall : Actor
|
|||
RenderStyle "Add";
|
||||
DamageFunction Random[Pulse](15,25);
|
||||
PROJECTILE;
|
||||
+EXPLODEONWATER;
|
||||
+SKYEXPLODE;
|
||||
Scale 0.2;
|
||||
Speed 30;
|
||||
Radius 2;
|
||||
|
|
@ -117,8 +167,8 @@ Class PulseBall : Actor
|
|||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[Pulse](-1,1),FRandom[Pulse](-1,1),FRandom[Pulse](-1,1)).unit()*FRandom[Pulse](2,4);
|
||||
A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,Random[Pulse](20,40),FRandom[Pulse](2.4,4.8),0,0,0,0,pvel.x,pvel.y,pvel.z,0,0,0,1,-1,-0.1);
|
||||
A_SpawnParticle("40FF00",SPF_FULLBRIGHT,Random[Pulse](30,50),FRandom[Pulse](4.8,7.2),0,0,0,0,pvel.x,pvel.y,pvel.z,0,0,0,.5,-1,-0.1);
|
||||
let s = Spawn("PulseSpark",pos);
|
||||
s.vel = pvel;
|
||||
}
|
||||
}
|
||||
action void A_Trail()
|
||||
|
|
@ -128,8 +178,8 @@ Class PulseBall : Actor
|
|||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[Pulse](-1,1),FRandom[Pulse](-1,1),FRandom[Pulse](-1,1)).unit()*FRandom[Pulse](2,4);
|
||||
A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,Random[Pulse](10,20),FRandom[Pulse](1.2,2.4),0,0,0,0,pvel.x,pvel.y,pvel.z,0,0,0,1,-1,-0.1);
|
||||
A_SpawnParticle("40FF00",SPF_FULLBRIGHT,Random[Pulse](15,25),FRandom[Pulse](2.4,3.6),0,0,0,0,pvel.x,pvel.y,pvel.z,0,0,0,.5,-1,-0.1);
|
||||
let s = Spawn("PulseSpark",pos);
|
||||
s.vel = pvel;
|
||||
}
|
||||
}
|
||||
States
|
||||
|
|
@ -282,13 +332,12 @@ Class PulseBolt : Actor
|
|||
accdamage = 0;
|
||||
}
|
||||
}
|
||||
Vector3 origin = Level.Vec3Diff(pos,t.Results.HitPos);
|
||||
int numpt = Random[Pulse](10,20)*!Random[Pulse](0,2);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = ((FRandom[Pulse](-.4,.5),FRandom[Pulse](-.4,.4),FRandom[Pulse](-.4,.4))-x).unit()*FRandom[Pulse](2,4);
|
||||
A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,Random[Pulse](20,40),FRandom[Pulse](2.4,4.8),0,origin.x,origin.y,origin.z,pvel.x,pvel.y,pvel.z,0,0,0,1,-1,-0.1);
|
||||
A_SpawnParticle("40FF00",SPF_FULLBRIGHT,Random[Pulse](30,50),FRandom[Pulse](4.8,7.2),0,origin.x,origin.y,origin.z,pvel.x,pvel.y,pvel.z,0,0,0,.5,-1,-0.1);
|
||||
let s = Spawn("PulseSpark",t.Results.HitPos-t.Results.HitVector*4);
|
||||
s.vel = pvel;
|
||||
}
|
||||
if ( weffect && (weffect is 'PulseBoltCap') )
|
||||
{
|
||||
|
|
@ -312,15 +361,14 @@ Class PulseBolt : Actor
|
|||
accdamage = 0;
|
||||
damagedactor = null;
|
||||
}
|
||||
Vector3 origin = Level.Vec3Diff(pos,t.Results.HitPos);
|
||||
if ( position >= 19 )
|
||||
{
|
||||
int numpt = Random[Pulse](5,10)*!Random[Pulse](0,5);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (t.Results.HitVector+(FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5))).unit()*FRandom[Pulse](2,4);
|
||||
A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,Random[Pulse](20,40),FRandom[Pulse](2.4,4.8),0,origin.x,origin.y,origin.z,pvel.x,pvel.y,pvel.z,0,0,0,1,-1,-0.1);
|
||||
A_SpawnParticle("40FF00",SPF_FULLBRIGHT,Random[Pulse](30,50),FRandom[Pulse](4.8,7.2),0,origin.x,origin.y,origin.z,pvel.x,pvel.y,pvel.z,0,0,0,.5,-1,-0.1);
|
||||
let s = Spawn("PulseSpark",t.Results.HitPos);
|
||||
s.vel = pvel;
|
||||
}
|
||||
if ( weffect && (weffect is 'PulseBoltHit') )
|
||||
{
|
||||
|
|
@ -393,10 +441,10 @@ 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.0*z;
|
||||
origin = target.Vec2OffsetZ(0,0,target.player.viewz)+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);
|
||||
else origin = target.Vec3Offset(0,0,target.missileheight);
|
||||
SetOrigin(origin,true);
|
||||
A_SetAngle(target.angle);
|
||||
A_SetPitch(target.BulletSlope());
|
||||
frame++;
|
||||
|
|
@ -439,13 +487,13 @@ 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-1.9*z;
|
||||
Vector3 origin = Vec2OffsetZ(0,0,player.viewz)+10.0*x+4.5*y-1.9*z;
|
||||
int numpt = Random[Pulse](2,5);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (x+(FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5))).unit()*FRandom[Pulse](2,4);
|
||||
A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,Random[Pulse](10,20),FRandom[Pulse](1.2,2.4),0,origin.x-pos.x,origin.y-pos.y,origin.z-pos.z,pvel.x,pvel.y,pvel.z,0,0,0,1,-1,-0.1);
|
||||
A_SpawnParticle("40FF00",SPF_FULLBRIGHT,Random[Pulse](15,25),FRandom[Pulse](2.4,3.6),0,origin.x-pos.x,origin.y-pos.y,origin.z-pos.z,pvel.x,pvel.y,pvel.z,0,0,0,.5,-1,-0.1);
|
||||
let s = Spawn("PulseSpark",origin);
|
||||
s.vel = pvel;
|
||||
}
|
||||
}
|
||||
action void A_PulseRefire( statelabel flash = null )
|
||||
|
|
@ -479,7 +527,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-1.5*z;
|
||||
Vector3 origin = Vec2OffsetZ(0,0,player.viewz)+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);
|
||||
|
|
@ -491,8 +539,8 @@ Class PulseGun : UTWeapon
|
|||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (x+(FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5),FRandom[Pulse](-.5,.5))).unit()*FRandom[Pulse](2,4);
|
||||
A_SpawnParticle("FFFFFF",SPF_FULLBRIGHT,Random[Pulse](10,20),FRandom[Pulse](1.2,2.4),0,origin.x-pos.x,origin.y-pos.y,origin.z-pos.z,pvel.x,pvel.y,pvel.z,0,0,0,1,-1,-0.1);
|
||||
A_SpawnParticle("40FF00",SPF_FULLBRIGHT,Random[Pulse](15,25),FRandom[Pulse](2.4,3.6),0,origin.x-pos.x,origin.y-pos.y,origin.z-pos.z,pvel.x,pvel.y,pvel.z,0,0,0,.5,-1,-0.1);
|
||||
let s = Spawn("PulseSpark",origin);
|
||||
s.vel = pvel;
|
||||
}
|
||||
}
|
||||
action void A_StartBeam()
|
||||
|
|
@ -500,8 +548,8 @@ Class PulseGun : UTWeapon
|
|||
A_PlaySound("pulse/bolt",CHAN_WEAPON,1.0,true);
|
||||
Vector3 x, y, z, origin;
|
||||
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
|
||||
origin = (0,0,player.viewz-pos.z)+5.0*x+3.0*y-1.0*z;
|
||||
invoker.beam = Spawn("StarterBolt",Vec3Offset(origin.x,origin.y,origin.z));
|
||||
origin = Vec2OffsetZ(0,0,player.viewz)+5.0*x+3.0*y-1.0*z;
|
||||
invoker.beam = Spawn("StarterBolt",origin);
|
||||
invoker.beam.angle = angle;
|
||||
invoker.beam.pitch = BulletSlope();
|
||||
invoker.beam.target = self;
|
||||
|
|
@ -521,6 +569,11 @@ Class PulseGun : UTWeapon
|
|||
if ( beam ) beam.Destroy();
|
||||
Super.DetachFromOwner();
|
||||
}
|
||||
override void OnDestroy()
|
||||
{
|
||||
Super.OnDestroy();
|
||||
if ( beam ) beam.Destroy();
|
||||
}
|
||||
Default
|
||||
{
|
||||
Tag "Pulse Gun";
|
||||
|
|
|
|||
|
|
@ -62,11 +62,14 @@ Class Razor2 : Actor
|
|||
DamageType "Ripper";
|
||||
Obituary "%k ripped a chunk of meat out of %o with the Ripper.";
|
||||
BounceType "Doom";
|
||||
BounceCount 7;
|
||||
ReactionTime 7;
|
||||
BounceFactor 1.0;
|
||||
WallBounceFactor 1.0;
|
||||
PROJECTILE;
|
||||
+USEBOUNCESTATE;
|
||||
-BOUNCEAUTOOFF;
|
||||
+SKYEXPLODE;
|
||||
+CANBOUNCEWATER;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
|
|
@ -135,6 +138,7 @@ Class Razor2 : Actor
|
|||
A_SetAngle(atan2(dir.y,dir.x));
|
||||
A_SetPitch(asin(-dir.z));
|
||||
A_RazorHit();
|
||||
A_CountDown();
|
||||
}
|
||||
Goto Spawn;
|
||||
Death:
|
||||
|
|
@ -182,6 +186,8 @@ Class Razor2Alt : Razor2
|
|||
DamageFunction Random[Ripper](25,34);
|
||||
DamageType "RipperAltDealth";
|
||||
BounceType "None";
|
||||
-CANBOUNCEWATER;
|
||||
+EXPLODEONWATER;
|
||||
}
|
||||
action void A_RazorExplode()
|
||||
{
|
||||
|
|
@ -232,7 +238,7 @@ Class Razor2Alt : Razor2
|
|||
Death:
|
||||
XDeath:
|
||||
TNT1 A 0 A_RazorExplode();
|
||||
REXP ABCDEFG 2 Bright;
|
||||
RIPX ABCDEFG 2 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ Class ShockSpark : Actor
|
|||
{
|
||||
RenderStyle "Add";
|
||||
Radius 2;
|
||||
Height 0;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+NOGRAVITY;
|
||||
+MISSILE;
|
||||
|
|
@ -193,6 +193,9 @@ Class ShockSpark : Actor
|
|||
+ROLLSPRITE;
|
||||
+ROLLCENTER;
|
||||
+NOTELEPORT;
|
||||
+DONTSPLASH;
|
||||
+CANBOUNCEWATER;
|
||||
-BOUNCEAUTOOFF;
|
||||
BounceType "Doom";
|
||||
BounceFactor 1.0;
|
||||
WallBounceFactor 1.0;
|
||||
|
|
@ -388,7 +391,7 @@ Class ShockBeam : Actor
|
|||
Wait;
|
||||
Death:
|
||||
TNT1 A 0 A_BeamExplode();
|
||||
AEXP ABCDEFGHIJKL 1 Bright;
|
||||
ASMX ABCDEFGHIJKL 1 Bright;
|
||||
TNT1 A 100;
|
||||
Stop;
|
||||
}
|
||||
|
|
@ -400,7 +403,7 @@ Class SuperShockSpark : Actor
|
|||
{
|
||||
RenderStyle "Add";
|
||||
Radius 2;
|
||||
Height 0;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+NOGRAVITY;
|
||||
+MISSILE;
|
||||
|
|
@ -409,6 +412,9 @@ Class SuperShockSpark : Actor
|
|||
+ROLLSPRITE;
|
||||
+ROLLCENTER;
|
||||
+NOTELEPORT;
|
||||
+DONTSPLASH;
|
||||
+CANBOUNCEWATER;
|
||||
-BOUNCEAUTOOFF;
|
||||
BounceType "Doom";
|
||||
BounceFactor 1.0;
|
||||
WallBounceFactor 1.0;
|
||||
|
|
@ -608,7 +614,7 @@ Class SuperShockBeam : Actor
|
|||
Wait;
|
||||
Death:
|
||||
TNT1 A 0 A_BeamExplode();
|
||||
SEXP ABCDEFGHIJKL 1 Bright;
|
||||
SSMX ABCDEFGHIJKL 1 Bright;
|
||||
TNT1 A 100;
|
||||
Stop;
|
||||
}
|
||||
|
|
@ -824,15 +830,16 @@ Class ShockBall : Actor
|
|||
PROJECTILE;
|
||||
+FORCEXYBILLBOARD;
|
||||
+SKYEXPLODE;
|
||||
+EXPLODEONWATER;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
ABAL ABCD 2 Bright;
|
||||
ASMB ABCD 2 Bright;
|
||||
Loop;
|
||||
Death:
|
||||
TNT1 A 0 A_BallExplode();
|
||||
AEXP ABCDEFGHIJKL 2 Bright;
|
||||
ASMX ABCDEFGHIJKL 2 Bright;
|
||||
TNT1 A 300;
|
||||
Stop;
|
||||
}
|
||||
|
|
@ -888,15 +895,16 @@ Class SuperShockBall : Actor
|
|||
+SKYEXPLODE;
|
||||
+FORCERADIUSDMG;
|
||||
+EXTREMEDEATH;
|
||||
+EXPLODEONWATER;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
SBAL ABCD 2 Bright;
|
||||
SSMB ABCD 2 Bright;
|
||||
Loop;
|
||||
Death:
|
||||
TNT1 A 0 A_BallExplode();
|
||||
SEXP ABCDEFGHIJKL 2 Bright;
|
||||
SSMX ABCDEFGHIJKL 2 Bright;
|
||||
TNT1 A 300;
|
||||
Stop;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,6 +127,9 @@ Class TranslocatorModule : Actor
|
|||
+SKYEXPLODE;
|
||||
+HITTRACER;
|
||||
+MOVEWITHSECTOR;
|
||||
+CANBOUNCEWATER;
|
||||
-BOUNCEAUTOOFF;
|
||||
+BOUNCEAUTOOFFFLOORONLY;
|
||||
BounceType "Doom";
|
||||
BounceFactor 0.5;
|
||||
WallBounceFactor 0.5;
|
||||
|
|
@ -354,6 +357,12 @@ Class Translocator : UTWeapon
|
|||
}
|
||||
}
|
||||
|
||||
override void OnDestroy()
|
||||
{
|
||||
Super.OnDestroy();
|
||||
if ( module ) module.Destroy();
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "Translocator";
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ Class UTPlayer : DoomPlayer
|
|||
{
|
||||
bool lastground;
|
||||
double lastvelz, prevvelz;
|
||||
transient CVar footsteps;
|
||||
|
||||
Default
|
||||
{
|
||||
|
|
@ -166,11 +167,19 @@ Class UTPlayer : DoomPlayer
|
|||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( !footsteps ) footsteps = CVar.GetCVar('flak_footsteps',players[consoleplayer]);
|
||||
if ( !footsteps.GetBool() ) return;
|
||||
double ang = level.time/(20*TICRATE/35.)*360.;
|
||||
if ( (abs(sin(ang)) >= 1.0) && player.onground && (player.cmd.forwardmove || player.cmd.sidemove) )
|
||||
A_PlaySound("ut/playerfootstep",CHAN_5,abs(vel.xy.length())*0.03);
|
||||
{
|
||||
if ( (waterlevel > 0) || GetFloorTerrain().IsLiquid ) A_PlaySound("ut/playerfootstepwet",CHAN_5,abs(vel.xy.length())*0.03);
|
||||
else A_PlaySound("ut/playerfootstep",CHAN_5,abs(vel.xy.length())*0.03);
|
||||
}
|
||||
if ( player.onground && !bNoGravity && !lastground && (lastvelz < -2) && (lastvelz >= -8) )
|
||||
A_PlaySound("*land",CHAN_AUTO,abs(lastvelz*0.0625));
|
||||
{
|
||||
if ( (waterlevel > 0) || GetFloorTerrain().IsLiquid ) A_PlaySound("ut/wetsplash",CHAN_AUTO,abs(lastvelz*0.0625));
|
||||
else A_PlaySound("*land",CHAN_AUTO,abs(lastvelz*0.0625));
|
||||
}
|
||||
lastground = player.onground;
|
||||
lastvelz = prevvelz;
|
||||
prevvelz = vel.z;
|
||||
|
|
@ -231,6 +240,12 @@ Class UTWeapon : Weapon
|
|||
if ( amp ) amp.FireEffect();
|
||||
}
|
||||
|
||||
override void OwnerDied()
|
||||
{
|
||||
Super.OwnerDied();
|
||||
A_ClearRefire();
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Weapon.BobStyle "Smooth";
|
||||
|
|
@ -339,13 +354,14 @@ Class UTSpark : Actor
|
|||
{
|
||||
RenderStyle "Add";
|
||||
Radius 2;
|
||||
Height 0;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+FORCEXYBILLBOARD;
|
||||
+MISSILE;
|
||||
+MOVEWITHSECTOR;
|
||||
+THRUACTORS;
|
||||
+NOTELEPORT;
|
||||
+DONTSPLASH;
|
||||
BounceType "Doom";
|
||||
BounceFactor 0.4;
|
||||
Gravity 0.5;
|
||||
|
|
@ -381,12 +397,13 @@ Class UTChip : Actor
|
|||
Default
|
||||
{
|
||||
Radius 2;
|
||||
Height 0;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+MISSILE;
|
||||
+MOVEWITHSECTOR;
|
||||
+THRUACTORS;
|
||||
+NOTELEPORT;
|
||||
+DONTSPLASH;
|
||||
BounceType "Doom";
|
||||
BounceFactor 0.3;
|
||||
Gravity 0.7;
|
||||
|
|
@ -446,7 +463,7 @@ Class UTBubble : Actor
|
|||
{
|
||||
RenderStyle "Add";
|
||||
Radius 2;
|
||||
Height 0;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+NOGRAVITY;
|
||||
+DONTSPLASH;
|
||||
|
|
@ -488,13 +505,15 @@ Class UTSmoke : Actor
|
|||
RenderStyle "Shaded";
|
||||
StencilColor "FFFFFF";
|
||||
Radius 2;
|
||||
Height 0;
|
||||
Height 2;
|
||||
+NOBLOCKMAP;
|
||||
+NOGRAVITY;
|
||||
+DONTSPLASH;
|
||||
+FORCEXYBILLBOARD;
|
||||
+THRUACTORS;
|
||||
+NOTELEPORT;
|
||||
+CANBOUNCEWATER;
|
||||
-BOUNCEAUTOOFF;
|
||||
BounceType "Hexen";
|
||||
BounceFactor 1.0;
|
||||
WallBounceFactor 1.0;
|
||||
|
|
|
|||
|
|
@ -251,6 +251,7 @@ Class WarShell : Actor
|
|||
+FORCEXYBILLBOARD;
|
||||
+SKYEXPLODE;
|
||||
+FORCERADIUSDMG;
|
||||
+EXPLODEONWATER;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
|
|
@ -634,6 +635,18 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
|
|||
return Super.CreateTossable();
|
||||
}
|
||||
|
||||
override void OwnerDied()
|
||||
{
|
||||
Super.OwnerDied();
|
||||
if ( guided ) guided.ExplodeMissile();
|
||||
}
|
||||
|
||||
override void OnDestroy()
|
||||
{
|
||||
Super.OnDestroy();
|
||||
if ( guided ) guided.ExplodeMissile();
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "Redeemer";
|
||||
|
|
|
|||