From b1b38561c1de2c5ee1c7fa9ceddad502ecd526ee Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Wed, 30 May 2018 14:38:03 +0200 Subject: [PATCH] Increased spread of rockets, increased tween time after firing (it looks weird for some fire animations, but it also did in UT anyway). --- readme.txt | 6 ++++++ sndinfo.txt | 5 +++++ zscript/biorifle.zsc | 5 +++-- zscript/chainsaw.zsc | 1 + zscript/eightball.zsc | 24 +++++++++++----------- zscript/enforcer.zsc | 12 +++++------ zscript/flakcannon.zsc | 6 +++--- zscript/impacthammer.zsc | 2 +- zscript/minigun.zsc | 2 +- zscript/pulsegun.zsc | 21 ++++++++++++------- zscript/ripper.zsc | 8 ++++---- zscript/shockrifle.zsc | 15 ++++++++------ zscript/sniperrifle.zsc | 40 ++++++++++++++++++++----------------- zscript/translocator.zsc | 4 ++-- zscript/utcommon.zsc | 8 ++++++++ zscript/warheadlauncher.zsc | 7 ++++--- 16 files changed, 101 insertions(+), 65 deletions(-) diff --git a/readme.txt b/readme.txt index be7d5d6..89b2f37 100644 --- a/readme.txt +++ b/readme.txt @@ -45,3 +45,9 @@ In progress: - Add some more effects, maybe some nicer recoil on guns too. - General polishing and bugfixing. - 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. diff --git a/sndinfo.txt b/sndinfo.txt index 5b219a9..4c55933 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -87,6 +87,11 @@ $playeralias player female *pain75-drowning ut/femaledrowning $playeralias player female *pain50-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 misc/secret capsound diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index be8a375..89acdd6 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -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 { diff --git a/zscript/chainsaw.zsc b/zscript/chainsaw.zsc index 978e4f6..cba9361 100644 --- a/zscript/chainsaw.zsc +++ b/zscript/chainsaw.zsc @@ -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); } diff --git a/zscript/eightball.zsc b/zscript/eightball.zsc index fc8c1e8..673ee07 100644 --- a/zscript/eightball.zsc +++ b/zscript/eightball.zsc @@ -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 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: diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index 4b4b310..263d2c9 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -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; diff --git a/zscript/impacthammer.zsc b/zscript/impacthammer.zsc index 5d766f5..2b0cfbd 100644 --- a/zscript/impacthammer.zsc +++ b/zscript/impacthammer.zsc @@ -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; diff --git a/zscript/minigun.zsc b/zscript/minigun.zsc index d31f373..3a3e017 100644 --- a/zscript/minigun.zsc +++ b/zscript/minigun.zsc @@ -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 { diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index 80e3a04..73ee493 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -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; diff --git a/zscript/ripper.zsc b/zscript/ripper.zsc index 77b99ad..65097cf 100644 --- a/zscript/ripper.zsc +++ b/zscript/ripper.zsc @@ -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 { diff --git a/zscript/shockrifle.zsc b/zscript/shockrifle.zsc index 8f1cabd..1d5eed0 100644 --- a/zscript/shockrifle.zsc +++ b/zscript/shockrifle.zsc @@ -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 { diff --git a/zscript/sniperrifle.zsc b/zscript/sniperrifle.zsc index 0d28a02..70216d5 100644 --- a/zscript/sniperrifle.zsc +++ b/zscript/sniperrifle.zsc @@ -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 { diff --git a/zscript/translocator.zsc b/zscript/translocator.zsc index 118b45d..7095b68 100644 --- a/zscript/translocator.zsc +++ b/zscript/translocator.zsc @@ -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"); diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index dabeb42..87beeff 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -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 diff --git a/zscript/warheadlauncher.zsc b/zscript/warheadlauncher.zsc index 8985e32..c55dc27 100644 --- a/zscript/warheadlauncher.zsc +++ b/zscript/warheadlauncher.zsc @@ -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 {