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.
This commit is contained in:
Marisa the Magician 2018-06-01 17:49:49 +02:00
commit 71b194c6c3
52 changed files with 182 additions and 41 deletions

View file

@ -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;

View file

@ -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"

View file

@ -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

Binary file not shown.

BIN
sounds/LSplash.ogg Normal file

Binary file not shown.

View file

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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()

View file

@ -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";

View file

@ -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;
}
}

View file

@ -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;
}

View file

@ -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";

View file

@ -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;

View file

@ -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";