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

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

View file

@ -155,6 +155,7 @@ Class UTChainsaw : UTWeapon
Ready:
CSWS ABCDEFGHIJLMNO 1
{
A_WeaponReady(WRF_NOFIRE);
A_AlertMonsters();
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.MaxAmount 48;
Ammo.BackpackAmount 12;
Ammo.BackpackMaxAmount 48;
Ammo.BackpackMaxAmount 96;
Ammo.DropAmount 3;
}
States
@ -312,7 +312,7 @@ Class UTRocketLauncher : UTWeapon
{
// single rocket
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.tracer = invoker.LockedTarget;
}
@ -325,7 +325,7 @@ Class UTRocketLauncher : UTWeapon
for ( int i=0; i<num; i++ )
{
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.tracer = invoker.LockedTarget;
a += step;
@ -334,12 +334,12 @@ Class UTRocketLauncher : UTWeapon
else
{
// rockets (wide spread)
double range = (num-1);
double range = 2.5*(num-1);
double step = range/(num-1);
s = -range*0.5;
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.target = self;
p.tracer = invoker.LockedTarget;
@ -398,7 +398,7 @@ Class UTRocketLauncher : UTWeapon
EBLS A 1 A_Raise(int.max);
Wait;
Ready:
EBLS ABCDEFGHIJKLMNOPQRST 1;
EBLS ABCDEFGHIJKLMNOPQRST 1 A_WeaponReady(WRF_NOFIRE);
Idle:
EBLI A 1
{
@ -640,32 +640,32 @@ Class UTRocketLauncher : UTWeapon
FireOne:
EBF1 A 0 A_FireRockets(1);
EBF1 ABCDEFGH 2;
EBLI A 2;
EBLI A 10;
Goto Idle;
FireTwo:
EBF2 A 0 A_FireRockets(2);
EBF2 ABCDEFGHIJK 2;
EBLI A 2;
EBLI A 10;
Goto Idle;
FireThree:
EBF3 A 0 A_FireRockets(3);
EBF3 ABCDEFGHIJ 2;
EBLI A 2;
EBLI A 10;
Goto Idle;
FireFour:
EBF4 A 0 A_FireRockets(4);
EBF4 ABCDEFGHIJK 2;
EBLI A 2;
EBLI A 10;
Goto Idle;
FireFive:
EBF5 A 0 A_FireRockets(5);
EBF5 ABCDEFGHIJKLM 2;
EBLI A 2;
EBLI A 10;
Goto Idle;
FireSix:
EBF6 A 0 A_FireRockets(6);
EBF6 ABCDEFGHIJKLMNOP 2;
EBLI A 2;
EBLI A 10;
Goto Idle;
Deselect:
EBLD ABCDEFGHIJK 1;

View file

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

View file

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

View file

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

View file

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

View file

@ -197,6 +197,7 @@ Class PulseBoltCap : Actor
+NOGRAVITY;
+NOCLIP;
+DONTSPLASH;
+FORCEXYBILLBOARD;
Scale 0.15;
}
States
@ -217,6 +218,7 @@ Class PulseBoltHit : Actor
+NOGRAVITY;
+NOCLIP;
+DONTSPLASH;
+FORCEXYBILLBOARD;
Scale 0.15;
}
States
@ -293,8 +295,8 @@ Class PulseBolt : Actor
weffect.Destroy();
weffect = null;
}
if ( !weffect ) weffect = Spawn("PulseBoltHit",t.Results.HitPos-t.Results.HitVector);
else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector,true);
if ( !weffect ) weffect = Spawn("PulseBoltHit",t.Results.HitPos-t.Results.HitVector*4);
else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector*4,true);
A_SprayDecal("BoltScorch",beamsize+8);
if ( next )
{
@ -325,8 +327,8 @@ Class PulseBolt : Actor
weffect.Destroy();
weffect = null;
}
if ( !weffect ) weffect = Spawn("PulseBoltCap",t.Results.HitPos-t.Results.HitVector);
else weffect.SetOrigin(t.Results.HitPos-t.Results.HitVector,true);
if ( !weffect ) weffect = Spawn("PulseBoltCap",t.Results.HitPos);
else weffect.SetOrigin(t.Results.HitPos,true);
}
else
{
@ -496,7 +498,12 @@ Class PulseGun : UTWeapon
action void A_StartBeam()
{
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;
}
action void A_StopBeam()
@ -531,7 +538,7 @@ Class PulseGun : UTWeapon
PGNP B -1;
Stop;
Ready:
PGNS ABCDEFGHIJKLMNOPQRSTUVW 1;
PGNS ABCDEFGHIJKLMNOPQRSTUVW 1 A_WeaponReady(WRF_NOFIRE);
Idle:
PGNI A 1
{
@ -622,7 +629,7 @@ Class PulseGun : UTWeapon
Goto Idle;
Reload:
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 BCDEFGHIJKLMNOPQRSTUVWXYZ 1;
PGR2 ABCDEFGHIJKLMNOPQRSTUVWX 1;

View file

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

View file

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

View file

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

View file

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

View file

@ -157,6 +157,14 @@ Class UTPlayer : DoomPlayer
}
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

View file

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