Increased spread of rockets, increased tween time after firing (it looks weird for some fire animations, but it also did in UT anyway).

This commit is contained in:
Marisa the Magician 2018-05-30 14:38:03 +02:00
commit b1b38561c1
16 changed files with 101 additions and 65 deletions

View file

@ -45,3 +45,9 @@ In progress:
- Add some more effects, maybe some nicer recoil on guns too. - Add some more effects, maybe some nicer recoil on guns too.
- General polishing and bugfixing. - General polishing and bugfixing.
- Trim out unused animations. - Trim out unused animations.
Known bugs:
- Sometimes the slave enforcer gets "lowered" while the main enforcer is
reloading. No idea what causes this.
- Sludge doesn't react to ceiling and wall movement.

View file

@ -87,6 +87,11 @@ $playeralias player female *pain75-drowning ut/femaledrowning
$playeralias player female *pain50-drowning ut/femaledrowning $playeralias player female *pain50-drowning ut/femaledrowning
$playeralias player female *pain25-drowning ut/femaledrowning $playeralias player female *pain25-drowning ut/femaledrowning
ut/playerfootstep1 stone02
ut/playerfootstep2 stone04
ut/playerfootstep3 stone05
$random ut/playerfootstep { ut/playerfootstep1 ut/playerfootstep2 ut/playerfootstep3 }
// everything else // everything else
misc/secret capsound misc/secret capsound

View file

@ -26,7 +26,7 @@ Class BioAmmo : Ammo
Inventory.Amount 25; Inventory.Amount 25;
Inventory.MaxAmount 100; Inventory.MaxAmount 100;
Ammo.BackpackAmount 50; Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 100; Ammo.BackpackMaxAmount 199;
Ammo.DropAmount 10; Ammo.DropAmount 10;
} }
States States
@ -336,6 +336,7 @@ Class BioGel : Actor
{ {
Obituary "%o drank a glass of %k's dripping green load."; Obituary "%o drank a glass of %k's dripping green load.";
DamageType 'Slime'; DamageType 'Slime';
DamageFunction Random[GES](20,30)*Scale.x;
RenderStyle "Add"; RenderStyle "Add";
Radius 4; Radius 4;
Height 4; Height 4;
@ -498,7 +499,7 @@ Class BioRifle : UTWeapon
BIOP B -1; BIOP B -1;
Stop; Stop;
Ready: Ready:
BIOS ABCDEFGHIJKLMNOPQRSTUV 1; BIOS ABCDEFGHIJKLMNOPQRSTUV 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
BIOI A 1 BIOI A 1
{ {

View file

@ -155,6 +155,7 @@ Class UTChainsaw : UTWeapon
Ready: Ready:
CSWS ABCDEFGHIJLMNO 1 CSWS ABCDEFGHIJLMNO 1
{ {
A_WeaponReady(WRF_NOFIRE);
A_AlertMonsters(); A_AlertMonsters();
A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE,rollIntensity:0.1); A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE,rollIntensity:0.1);
} }

View file

@ -7,7 +7,7 @@ Class UTRocketAmmo : Ammo
Inventory.Amount 12; Inventory.Amount 12;
Inventory.MaxAmount 48; Inventory.MaxAmount 48;
Ammo.BackpackAmount 12; Ammo.BackpackAmount 12;
Ammo.BackpackMaxAmount 48; Ammo.BackpackMaxAmount 96;
Ammo.DropAmount 3; Ammo.DropAmount 3;
} }
States States
@ -312,7 +312,7 @@ Class UTRocketLauncher : UTWeapon
{ {
// single rocket // single rocket
p = Spawn("UTRocket",origin+cos(a)*y*s+sin(a)*z*s); p = Spawn("UTRocket",origin+cos(a)*y*s+sin(a)*z*s);
p.vel = (x2+cos(a)*y2*s*0.01+sin(a)*z2*s*0.01).unit()*p.speed; p.vel = x2*p.speed;
p.target = self; p.target = self;
p.tracer = invoker.LockedTarget; p.tracer = invoker.LockedTarget;
} }
@ -325,7 +325,7 @@ Class UTRocketLauncher : UTWeapon
for ( int i=0; i<num; i++ ) for ( int i=0; i<num; i++ )
{ {
p = Spawn("UTRocket",origin+cos(a)*y*s+sin(a)*z*s); p = Spawn("UTRocket",origin+cos(a)*y*s+sin(a)*z*s);
p.vel = (x2+cos(a)*y2*s*0.01+sin(a)*z2*s*0.01).unit()*p.speed; p.vel = (x2+cos(a)*y2*s*0.02+sin(a)*z2*s*0.02).unit()*p.speed;
p.target = self; p.target = self;
p.tracer = invoker.LockedTarget; p.tracer = invoker.LockedTarget;
a += step; a += step;
@ -334,12 +334,12 @@ Class UTRocketLauncher : UTWeapon
else else
{ {
// rockets (wide spread) // rockets (wide spread)
double range = (num-1); double range = 2.5*(num-1);
double step = range/(num-1); double step = range/(num-1);
s = -range*0.5; s = -range*0.5;
for ( int i=0; i<num; i++ ) for ( int i=0; i<num; i++ )
{ {
p = Spawn("UTRocket",origin+sin(s)*y*2); p = Spawn("UTRocket",origin+sin(s)*y);
p.vel = (x2+sin(s)*y2).unit()*p.speed; p.vel = (x2+sin(s)*y2).unit()*p.speed;
p.target = self; p.target = self;
p.tracer = invoker.LockedTarget; p.tracer = invoker.LockedTarget;
@ -398,7 +398,7 @@ Class UTRocketLauncher : UTWeapon
EBLS A 1 A_Raise(int.max); EBLS A 1 A_Raise(int.max);
Wait; Wait;
Ready: Ready:
EBLS ABCDEFGHIJKLMNOPQRST 1; EBLS ABCDEFGHIJKLMNOPQRST 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
EBLI A 1 EBLI A 1
{ {
@ -640,32 +640,32 @@ Class UTRocketLauncher : UTWeapon
FireOne: FireOne:
EBF1 A 0 A_FireRockets(1); EBF1 A 0 A_FireRockets(1);
EBF1 ABCDEFGH 2; EBF1 ABCDEFGH 2;
EBLI A 2; EBLI A 10;
Goto Idle; Goto Idle;
FireTwo: FireTwo:
EBF2 A 0 A_FireRockets(2); EBF2 A 0 A_FireRockets(2);
EBF2 ABCDEFGHIJK 2; EBF2 ABCDEFGHIJK 2;
EBLI A 2; EBLI A 10;
Goto Idle; Goto Idle;
FireThree: FireThree:
EBF3 A 0 A_FireRockets(3); EBF3 A 0 A_FireRockets(3);
EBF3 ABCDEFGHIJ 2; EBF3 ABCDEFGHIJ 2;
EBLI A 2; EBLI A 10;
Goto Idle; Goto Idle;
FireFour: FireFour:
EBF4 A 0 A_FireRockets(4); EBF4 A 0 A_FireRockets(4);
EBF4 ABCDEFGHIJK 2; EBF4 ABCDEFGHIJK 2;
EBLI A 2; EBLI A 10;
Goto Idle; Goto Idle;
FireFive: FireFive:
EBF5 A 0 A_FireRockets(5); EBF5 A 0 A_FireRockets(5);
EBF5 ABCDEFGHIJKLM 2; EBF5 ABCDEFGHIJKLM 2;
EBLI A 2; EBLI A 10;
Goto Idle; Goto Idle;
FireSix: FireSix:
EBF6 A 0 A_FireRockets(6); EBF6 A 0 A_FireRockets(6);
EBF6 ABCDEFGHIJKLMNOP 2; EBF6 ABCDEFGHIJKLMNOP 2;
EBLI A 2; EBLI A 10;
Goto Idle; Goto Idle;
Deselect: Deselect:
EBLD ABCDEFGHIJK 1; EBLD ABCDEFGHIJK 1;

View file

@ -377,7 +377,7 @@ Class Enforcer : UTWeapon replaces Pistol
if ( !invoker.slaveactive && (CountInv("Enforcer") > 1) ) if ( !invoker.slaveactive && (CountInv("Enforcer") > 1) )
A_Overlay(2,"LeftReady"); A_Overlay(2,"LeftReady");
} }
ENFS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; ENFS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
ENFI A 0 A_Overlay(-9999,"Dummy"); ENFI A 0 A_Overlay(-9999,"Dummy");
ENFI AB 30; ENFI AB 30;
@ -389,7 +389,7 @@ Class Enforcer : UTWeapon replaces Pistol
A_PlaySound("enforcer/select",CHAN_7); A_PlaySound("enforcer/select",CHAN_7);
invoker.slaveactive = true; invoker.slaveactive = true;
} }
2NFS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; 2NFS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_JumpIf(invoker.slavedown,"LeftDeselect");
LeftIdle: LeftIdle:
2NFI A 0 A_Overlay(-9998,"LeftDummy"); 2NFI A 0 A_Overlay(-9998,"LeftDummy");
2NFI AB 30; 2NFI AB 30;
@ -405,7 +405,7 @@ Class Enforcer : UTWeapon replaces Pistol
TNT1 A 1 TNT1 A 1
{ {
if ( (invoker.clipcount <= 0) && (invoker.Ammo1.Amount > 0) ) A_Overlay(PSP_WEAPON,"Reload"); if ( (invoker.clipcount <= 0) && (invoker.Ammo1.Amount > 0) ) A_Overlay(PSP_WEAPON,"Reload");
if ( CVar.GetCVar('flak_enforcerreload').GetBool() && ((invoker.clipcount < min(20,invoker.Ammo1.Amount)) || (invoker.slaveclipcount < min(20,invoker.Ammo1.Amount))) ) A_WeaponReady(WRF_ALLOWRELOAD); else if ( CVar.GetCVar('flak_enforcerreload').GetBool() && ((invoker.clipcount < min(20,invoker.Ammo1.Amount)) || (invoker.slaveclipcount < min(20,invoker.Ammo1.Amount))) ) A_WeaponReady(WRF_ALLOWRELOAD);
else A_WeaponReady(); else A_WeaponReady();
if ( !invoker.slaveactive && (CountInv("Enforcer") > 1) ) A_Overlay(2,"LeftReady"); if ( !invoker.slaveactive && (CountInv("Enforcer") > 1) ) A_Overlay(2,"LeftReady");
} }
@ -418,9 +418,9 @@ Class Enforcer : UTWeapon replaces Pistol
invoker.slaveactive = false; invoker.slaveactive = false;
A_Overlay(2,"LeftDeselect"); A_Overlay(2,"LeftDeselect");
} }
if ( CVar.GetCVar('flak_enforcerreload').GetBool() && (invoker.slavereload || (invoker.slaveclipcount < 0)) ) A_Overlay(2,"LeftReload"); else if ( CVar.GetCVar('flak_enforcerreload').GetBool() && (invoker.slavereload || (invoker.slaveclipcount < 0)) ) A_Overlay(2,"LeftReload");
if ( invoker.slavedown ) A_Overlay(2,"LeftDeselect"); else if ( invoker.slavedown ) A_Overlay(2,"LeftDeselect");
A_LeftWeaponReady(); else A_LeftWeaponReady();
} }
Wait; Wait;
Fire: Fire:

View file

@ -33,7 +33,7 @@ Class FlakAmmo : Ammo
Inventory.Amount 10; Inventory.Amount 10;
Inventory.MaxAmount 50; Inventory.MaxAmount 50;
Ammo.BackpackAmount 20; Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 50; Ammo.BackpackMaxAmount 100;
Ammo.DropAmount 5; Ammo.DropAmount 5;
} }
States States
@ -574,8 +574,8 @@ Class FlakCannon : UTWeapon
FPCK B -1; FPCK B -1;
Stop; Stop;
Ready: Ready:
FLKS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; FLKS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_WeaponReady(WRF_NOFIRE);
FKS2 ABC 1; FKS2 ABC 1 A_WeaponReady(WRF_NOFIRE);
FLKL A 1 A_Loading(true); FLKL A 1 A_Loading(true);
FLKL BCDEFGHIJKLMNO 1; FLKL BCDEFGHIJKLMNO 1;
Goto Idle; Goto Idle;

View file

@ -217,7 +217,7 @@ Class ImpactHammer : UTWeapon replaces Fist
IMPS A 1 A_Raise(int.max); IMPS A 1 A_Raise(int.max);
Wait; Wait;
Ready: Ready:
IMPS ABCDEFGHIJKLMNOPQ 1; IMPS ABCDEFGHIJKLMNOPQ 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
IMPI A 1 A_WeaponReady(); IMPI A 1 A_WeaponReady();
Wait; Wait;

View file

@ -204,7 +204,7 @@ Class Minigun : UTWeapon
MGNS A 1 A_Raise(int.max); MGNS A 1 A_Raise(int.max);
Wait; Wait;
Ready: Ready:
MGNS ABCDEFGHIJKLMNOPQRST 1; MGNS ABCDEFGHIJKLMNOPQRST 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
MGNI ABCDEFGHIJKLMNOPQRS 5 MGNI ABCDEFGHIJKLMNOPQRS 5
{ {

View file

@ -197,6 +197,7 @@ Class PulseBoltCap : Actor
+NOGRAVITY; +NOGRAVITY;
+NOCLIP; +NOCLIP;
+DONTSPLASH; +DONTSPLASH;
+FORCEXYBILLBOARD;
Scale 0.15; Scale 0.15;
} }
States States
@ -217,6 +218,7 @@ Class PulseBoltHit : Actor
+NOGRAVITY; +NOGRAVITY;
+NOCLIP; +NOCLIP;
+DONTSPLASH; +DONTSPLASH;
+FORCEXYBILLBOARD;
Scale 0.15; Scale 0.15;
} }
States States
@ -293,8 +295,8 @@ Class PulseBolt : Actor
weffect.Destroy(); weffect.Destroy();
weffect = null; weffect = null;
} }
if ( !weffect ) weffect = Spawn("PulseBoltHit",t.Results.HitPos-t.Results.HitVector); if ( !weffect ) weffect = Spawn("PulseBoltHit",t.Results.HitPos-t.Results.HitVector*4);
else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector,true); else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector*4,true);
A_SprayDecal("BoltScorch",beamsize+8); A_SprayDecal("BoltScorch",beamsize+8);
if ( next ) if ( next )
{ {
@ -325,8 +327,8 @@ Class PulseBolt : Actor
weffect.Destroy(); weffect.Destroy();
weffect = null; weffect = null;
} }
if ( !weffect ) weffect = Spawn("PulseBoltCap",t.Results.HitPos-t.Results.HitVector); if ( !weffect ) weffect = Spawn("PulseBoltCap",t.Results.HitPos);
else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector,true); else weffect.SetOrigin(t.Results.HitPos,true);
} }
else else
{ {
@ -496,7 +498,12 @@ Class PulseGun : UTWeapon
action void A_StartBeam() action void A_StartBeam()
{ {
A_PlaySound("pulse/bolt",CHAN_WEAPON,1.0,true); A_PlaySound("pulse/bolt",CHAN_WEAPON,1.0,true);
invoker.beam = Spawn("StarterBolt",pos); 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));
invoker.beam.angle = angle;
invoker.beam.pitch = BulletSlope();
invoker.beam.target = self; invoker.beam.target = self;
} }
action void A_StopBeam() action void A_StopBeam()
@ -531,7 +538,7 @@ Class PulseGun : UTWeapon
PGNP B -1; PGNP B -1;
Stop; Stop;
Ready: Ready:
PGNS ABCDEFGHIJKLMNOPQRSTUVW 1; PGNS ABCDEFGHIJKLMNOPQRSTUVW 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
PGNI A 1 PGNI A 1
{ {
@ -622,7 +629,7 @@ Class PulseGun : UTWeapon
Goto Idle; Goto Idle;
Reload: Reload:
PGNI A 1; PGNI A 1;
PGNI A 0 A_JumpIf(invoker.clipcount >= 50,"Idle"); PGNI A 0 A_JumpIf(invoker.clipcount >= Min(50,invoker.Ammo1.Amount),"Idle");
PGNR A 1 A_Reloading(); PGNR A 1 A_Reloading();
PGNR BCDEFGHIJKLMNOPQRSTUVWXYZ 1; PGNR BCDEFGHIJKLMNOPQRSTUVWXYZ 1;
PGR2 ABCDEFGHIJKLMNOPQRSTUVWX 1; PGR2 ABCDEFGHIJKLMNOPQRSTUVWX 1;

View file

@ -7,7 +7,7 @@ Class RipperAmmo : Ammo
Inventory.Amount 25; Inventory.Amount 25;
Inventory.MaxAmount 75; Inventory.MaxAmount 75;
Ammo.BackpackAmount 50; Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 75; Ammo.BackpackMaxAmount 150;
Ammo.DropAmount 10; Ammo.DropAmount 10;
} }
States States
@ -185,7 +185,7 @@ Class Razor2Alt : Razor2
{ {
A_SetRenderStyle(1.0,STYLE_Add); A_SetRenderStyle(1.0,STYLE_Add);
bFORCEXYBILLBOARD = true; bFORCEXYBILLBOARD = true;
Scale *= 0.5; Scale *= 0.65;
A_StopSound(CHAN_VOICE); A_StopSound(CHAN_VOICE);
A_PlaySound("ripper/althit"); A_PlaySound("ripper/althit");
Spawn("Razor2AltLight",pos); Spawn("Razor2AltLight",pos);
@ -280,8 +280,8 @@ Class Ripper2 : UTWeapon
RZRS A 1 A_Raise(int.max); RZRS A 1 A_Raise(int.max);
Wait; Wait;
Ready: Ready:
RZRS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; RZRS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_WeaponReady(WRF_NOFIRE);
RZS2 ABCD 1; RZS2 ABCD 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
RZRI ABCDEFGHIJKLMNOPQRS 2 RZRI ABCDEFGHIJKLMNOPQRS 2
{ {

View file

@ -7,7 +7,7 @@ Class ShockAmmo : Ammo
Inventory.Amount 10; Inventory.Amount 10;
Inventory.MaxAmount 50; Inventory.MaxAmount 50;
Ammo.BackpackAmount 20; Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 50; Ammo.BackpackMaxAmount 100;
Ammo.DropAmount 5; Ammo.DropAmount 5;
} }
States States
@ -261,6 +261,7 @@ Class ShockBeam : Actor
+NOCLIP; +NOCLIP;
+DONTSPLASH; +DONTSPLASH;
+FORCEXYBILLBOARD; +FORCEXYBILLBOARD;
+FORCERADIUSDMG;
} }
override void PostBeginPlay() override void PostBeginPlay()
{ {
@ -476,6 +477,7 @@ Class SuperShockBeam : Actor
+NOCLIP; +NOCLIP;
+DONTSPLASH; +DONTSPLASH;
+FORCEXYBILLBOARD; +FORCEXYBILLBOARD;
+FORCERADIUSDMG;
+EXTREMEDEATH; +EXTREMEDEATH;
} }
override void PostBeginPlay() override void PostBeginPlay()
@ -789,7 +791,7 @@ Class ShockBall : Actor
} }
action void A_BallExplode() action void A_BallExplode()
{ {
A_Explode(Random[ASMD](50,60),70); A_Explode(Random[ASMD](40,50),70);
A_SprayDecal("ShockMarkBig",16); A_SprayDecal("ShockMarkBig",16);
Spawn("ShockExplLight",pos); Spawn("ShockExplLight",pos);
A_SetScale(1.0); A_SetScale(1.0);
@ -814,6 +816,7 @@ Class ShockBall : Actor
Obituary "%k inflicted mortal damage upon %o with the Shock Rifle"; Obituary "%k inflicted mortal damage upon %o with the Shock Rifle";
RenderStyle "Add"; RenderStyle "Add";
DamageType 'jolted'; DamageType 'jolted';
DamageFunction Random[ASMD](50,60);
Radius 2; Radius 2;
Height 0; Height 0;
Scale 0.4; Scale 0.4;
@ -821,7 +824,6 @@ Class ShockBall : Actor
PROJECTILE; PROJECTILE;
+FORCEXYBILLBOARD; +FORCEXYBILLBOARD;
+SKYEXPLODE; +SKYEXPLODE;
+FORCERADIUSDMG;
} }
States States
{ {
@ -850,7 +852,7 @@ Class SuperShockBall : Actor
} }
action void A_BallExplode() action void A_BallExplode()
{ {
A_Explode(Random[ASMD](5000,6000),120); A_Explode(Random[ASMD](4000,5000),120);
A_SprayDecal("ShockMarkBig",16); A_SprayDecal("ShockMarkBig",16);
Spawn("SuperShockExplLight",pos); Spawn("SuperShockExplLight",pos);
A_SetScale(1.5); A_SetScale(1.5);
@ -876,6 +878,7 @@ Class SuperShockBall : Actor
Obituary "%k electrified %o with the Enhanced Shock Rifle."; Obituary "%k electrified %o with the Enhanced Shock Rifle.";
RenderStyle "Add"; RenderStyle "Add";
DamageType 'jolted'; DamageType 'jolted';
DamageFunction Random[ASMD](5000,6000);
Radius 2; Radius 2;
Height 0; Height 0;
Scale 0.5; Scale 0.5;
@ -962,7 +965,7 @@ Class ShockRifle : UTWeapon
ASMP B -1; ASMP B -1;
Stop; Stop;
Ready: Ready:
ASMS ABCDEFGHIJKLMNO 1; ASMS ABCDEFGHIJKLMNO 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
ASMI A 1 ASMI A 1
{ {
@ -1071,7 +1074,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
ASMP B -1; ASMP B -1;
Stop; Stop;
Ready: Ready:
ASMS ABCDEFGHIJKLMNO 1; ASMS ABCDEFGHIJKLMNO 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
ASMI A 1 ASMI A 1
{ {

View file

@ -7,7 +7,7 @@ Class RifleAmmo : Ammo
Inventory.Amount 10; Inventory.Amount 10;
Inventory.MaxAmount 50; Inventory.MaxAmount 50;
Ammo.BackpackAmount 20; Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 50; Ammo.BackpackMaxAmount 100;
Ammo.DropAmount 5; Ammo.DropAmount 5;
} }
States States
@ -150,23 +150,27 @@ Class SniperRifle : UTWeapon
SRFS A 1 A_Raise(int.max); SRFS A 1 A_Raise(int.max);
Wait; Wait;
Ready: Ready:
SRFS A 1 A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); SRFS A 1
SRFS B 2; {
SRFS C 1; A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT);
SRFS D 2; A_WeaponReady(WRF_NOFIRE);
SRFS E 1; }
SRFS F 2; SRFS B 2 A_WeaponReady(WRF_NOFIRE);
SRFS G 1; SRFS C 1 A_WeaponReady(WRF_NOFIRE);
SRFS H 2; SRFS D 2 A_WeaponReady(WRF_NOFIRE);
SRFS I 1; SRFS E 1 A_WeaponReady(WRF_NOFIRE);
SRFS J 2; SRFS F 2 A_WeaponReady(WRF_NOFIRE);
SRFS K 1; SRFS G 1 A_WeaponReady(WRF_NOFIRE);
SRFS L 2; SRFS H 2 A_WeaponReady(WRF_NOFIRE);
SRFS M 1; SRFS I 1 A_WeaponReady(WRF_NOFIRE);
SRFS N 2; SRFS J 2 A_WeaponReady(WRF_NOFIRE);
SRFS O 1; SRFS K 1 A_WeaponReady(WRF_NOFIRE);
SRFS P 2; SRFS L 2 A_WeaponReady(WRF_NOFIRE);
SRFS Q 1; SRFS M 1 A_WeaponReady(WRF_NOFIRE);
SRFS N 2 A_WeaponReady(WRF_NOFIRE);
SRFS O 1 A_WeaponReady(WRF_NOFIRE);
SRFS P 2 A_WeaponReady(WRF_NOFIRE);
SRFS Q 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
SRFI A 1 SRFI A 1
{ {

View file

@ -370,11 +370,11 @@ Class Translocator : UTWeapon
Wait; Wait;
Ready: Ready:
TLCS A 0 A_JumpIf(invoker.module,"Ready2"); TLCS A 0 A_JumpIf(invoker.module,"Ready2");
TLCS ABCDEFGHIJKL 1; TLCS ABCDEFGHIJKL 1 A_WeaponReady(WRF_NOFIRE);
TLCS L 0 A_JumpIf(invoker.module,"Idle"); TLCS L 0 A_JumpIf(invoker.module,"Idle");
Goto Idle2; Goto Idle2;
Ready2: Ready2:
TLD2 GFEDCBA 2; TLD2 GFEDCBA 2 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
TLCI A 0 A_Overlay(-9999,"Dummy"); // little hackeroo to make this more responsive TLCI A 0 A_Overlay(-9999,"Dummy"); // little hackeroo to make this more responsive
TLCI AB 25 A_JumpIf(!invoker.module,"PickedUp"); TLCI AB 25 A_JumpIf(!invoker.module,"PickedUp");

View file

@ -157,6 +157,14 @@ Class UTPlayer : DoomPlayer
} }
else GiveInventory(type,amount,true); else GiveInventory(type,amount,true);
} }
override void Tick()
{
Super.Tick();
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_BODY);
}
} }
// Random Spawner that passes through dropped status to items // Random Spawner that passes through dropped status to items

View file

@ -8,7 +8,7 @@ Class WarheadAmmo : Ammo
Inventory.Amount 1; Inventory.Amount 1;
Inventory.MaxAmount 2; Inventory.MaxAmount 2;
Ammo.BackpackAmount 0; Ammo.BackpackAmount 0;
Ammo.BackpackMaxAmount 2; Ammo.BackpackMaxAmount 3;
Ammo.DropAmount 1; Ammo.DropAmount 1;
Inventory.RespawnTics 2100; Inventory.RespawnTics 2100;
} }
@ -69,7 +69,7 @@ Class ShockWave : Actor
if ( (dist > olddmgradius) || (dir dot a.vel < 0) ) if ( (dist > olddmgradius) || (dir dot a.vel < 0) )
{ {
a.vel += dir*(moscale/a.mass+20); a.vel += dir*(moscale/a.mass+20);
a.DamageMobj(self,target,moscale,'RedeemerDeath'); a.DamageMobj(self,target,moscale,'RedeemerDeath',DMG_THRUSTLESS);
} }
} }
olddmgradius = dmgradius; olddmgradius = dmgradius;
@ -246,6 +246,7 @@ Class WarShell : Actor
Height 4; Height 4;
Speed 2; Speed 2;
DamageType 'RedeemerDeath'; DamageType 'RedeemerDeath';
DamageFactor 1000;
PROJECTILE; PROJECTILE;
+FORCEXYBILLBOARD; +FORCEXYBILLBOARD;
+SKYEXPLODE; +SKYEXPLODE;
@ -657,7 +658,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
RDMP B -1; RDMP B -1;
Stop; Stop;
Ready: Ready:
WARS ABCDEFGHIJKLMNO 1; WARS ABCDEFGHIJKLMNO 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
WARI A 1 WARI A 1
{ {