diff --git a/modeldef.eightball b/modeldef.eightball index 53ef201..9250963 100644 --- a/modeldef.eightball +++ b/modeldef.eightball @@ -27,10 +27,11 @@ Model "UTGrenade" Path "models" Model 0 "UTRocket_d.3d" Skin 0 "JuRocket1.png" - Scale 0.07 0.0822 0.09864 + Offset 0 0 1.4796 + Scale 0.0822 0.0822 0.09864 USEACTORPITCH USEACTORROLL - AngleOffset -90 + AngleOffset 90 FrameIndex RCKT A 0 0 } @@ -39,10 +40,11 @@ Model "UTRocket" Path "models" Model 0 "UTRocket_d.3d" Skin 0 "JuRocket1.png" - Scale 0.07 0.0822 0.09864 + Offset 10.175 0 1.4796 + Scale 0.0822 0.0822 0.09864 USEACTORPITCH USEACTORROLL - AngleOffset -90 + AngleOffset 90 FrameIndex RCKT B 0 1 } diff --git a/readme.txt b/readme.txt index 21bff4a..be7d5d6 100644 --- a/readme.txt +++ b/readme.txt @@ -38,14 +38,10 @@ Currently implemented: - Jump Boots (radsuit, has "iron boots" powerup effect to compensate) - Minigun (slot 7) - Sniper Rifle (slot 0) + - Rocket Launcher (slot 9) In progress: - - Rocket Launcher (slot 9) - -Things to do eventually: - - - Trim out unused animations. - Add some more effects, maybe some nicer recoil on guns too. - - Unreal 1 weapons? - - Think of what item(s) the jump boots can replace. + - General polishing and bugfixing. + - Trim out unused animations. diff --git a/sndinfo.txt b/sndinfo.txt index 2d156dc..5b219a9 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -219,6 +219,7 @@ utrl/seeklock seeklock utrl/seeklost seeklost utrl/fly rcktfly1 utrl/explode expl2 +utrl/bounce hit1 sniper/select riflepck sniper/fire sniperf diff --git a/sounds/RcktFly1.ogg b/sounds/RcktFly1.ogg index c0c6c58..183f936 100644 Binary files a/sounds/RcktFly1.ogg and b/sounds/RcktFly1.ogg differ diff --git a/textures.eightball b/textures.eightball index 73c0c79..76fc810 100644 --- a/textures.eightball +++ b/textures.eightball @@ -179,4 +179,6 @@ Sprite "EBLDG0",1,1{} Sprite "EBLDH0",1,1{} Sprite "EBLDI0",1,1{} Sprite "EBLDJ0",1,1{} -Sprite "EBLDK0",1,1{} \ No newline at end of file +Sprite "EBLDK0",1,1{} +Graphic "XHAIRS99",16,16{} +Graphic "XHAIRB99",16,16{} diff --git a/textures.enforcer b/textures.enforcer index b8fbc9c..f141b8a 100644 --- a/textures.enforcer +++ b/textures.enforcer @@ -257,4 +257,4 @@ Sprite "BIMPA0",1,1{} Sprite "BIMPB0",1,1{} Sprite "BIMPC0",1,1{} Sprite "BIMPD0",1,1{} -Sprite "BIMPE0",1,1{} +Sprite "BIMPE0",1,1{} \ No newline at end of file diff --git a/zscript/eightball.zsc b/zscript/eightball.zsc index bbc8be1..fc8c1e8 100644 --- a/zscript/eightball.zsc +++ b/zscript/eightball.zsc @@ -36,45 +36,236 @@ Class UTRocketAmmo2 : UTRocketAmmo } } +Class RocketLight : DynamicLight +{ + Default + { + DynamicLight.Type "Point"; + Args 255,224,128,32; + } + override void Tick() + { + Super.Tick(); + if ( !target ) + { + Destroy(); + return; + } + SetOrigin(target.pos,true); + } +} + +Class UTRocketTrail : Actor +{ + Default + { + RenderStyle "Add"; + Radius 0.1; + Height 0; + +NOBLOCKMAP; + +NOGRAVITY; + +DONTSPLASH; + +FORCEXYBILLBOARD; + Scale 0.2; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + let l = Spawn("RocketLight",pos); + l.target = self; + } + override void Tick() + { + Super.Tick(); + if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) ) + { + Destroy(); + return; + } + SetOrigin(target.pos,true); + } + States + { + Spawn: + RFLA A -1 Bright; + Stop; + } +} + +Class RocketExplLight : SlugLight +{ + Default + { + Args 255,224,128,120; + } +} + Class UTRocket : Actor { Default { Obituary "%o was smacked down by %k's Rocket Launcher."; + DamageFunction Random[Eightball](70,80); + DamageType 'RocketDeath'; + Radius 2; + Height 0; + Speed 30; + PROJECTILE; + +SKYEXPLODE; + +SEEKERMISSILE; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + let l = Spawn("UTRocketTrail",pos); + l.target = self; + A_PlaySound("utrl/fly",CHAN_VOICE,1.0,true,2.5); + } + action void A_RocketExplode() + { + bFORCEXYBILLBOARD = true; + A_SetRenderStyle(1.0,STYLE_Add); + A_SprayDecal("RocketBlast",150); + A_NoGravity(); + A_SetScale(0.75); + A_Explode(Random[Eightball](60,70),200); + A_QuakeEx(3,3,3,8,0,300,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2); + A_PlaySound("utrl/explode",CHAN_VOICE); + A_AlertMonsters(); + Spawn("RocketExplLight",pos); + int numpt = Random[Eightball](15,30); + for ( int i=0; i 2000 ) continue; + if ( reldir.unit() dot viewdir < 0.99 ) continue; + if ( reldist < closest ) + { + closest = reldist; + invoker.LockedTarget = a; + } + } + if ( invoker.LockedTarget ) A_PlaySound("utrl/seeklock",CHAN_6); + else if ( invoker.LockedOn ) A_PlaySound("utrl/seeklost",CHAN_6); + if ( invoker.LockedTarget ) invoker.LockedOn = true; } Default @@ -134,14 +402,26 @@ Class UTRocketLauncher : UTWeapon Idle: EBLI A 1 { + invoker.locktics = 0; A_CheckReload(); A_WeaponReady(); } + EBLI A 1 + { + A_CheckReload(); + A_WeaponReady(); + invoker.locktics++; + if ( invoker.locktics > 42 ) + { + invoker.locktics = 0; + A_CheckTarget(); + } + } Wait; Fire: AltFire: // one is loaded already - EBLI A 3 A_LoadRocket(); + EBLI A 3 A_LoadRocket(false); EBLI A 0 A_LoadedRefire(1); Goto FireOne; // load two diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index a63365e..4b4b310 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -68,10 +68,6 @@ Class ChunkLight : DynamicLight DynamicLight.Type "Point"; Args 255,224,128,8; } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - } override void Tick() { Super.Tick(); @@ -146,7 +142,7 @@ Class FlakChunk : Actor { Obituary "%o was ripped to shreds by %k's Flak Cannon."; Radius 2; - Height 2; + Height 0; Speed 50; DamageFunction Random[Flak](12,18); DamageType 'Shredded'; @@ -365,13 +361,13 @@ Class FlakSlug : Actor { Obituary "%o was ripped to shreds by %k's Flak Cannon."; DamageType 'FlakDeath'; - Radius 4; - Height 4; + DamageFunction Random[Flak](60,80); + Radius 2; + Height 0; Speed 40; PROJECTILE; -NOGRAVITY; +SKYEXPLODE; - +FORCERADIUSDMG; +HITTRACER; } override void PostBeginPlay() @@ -398,7 +394,7 @@ Class FlakSlug : Actor A_SprayDecal("RocketBlast",150); A_NoGravity(); A_SetScale(1.2); - A_Explode(Random[Flak](60,80),150); + A_Explode(Random[Flak](40,60),150); A_QuakeEx(4,4,4,8,0,200,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2); A_PlaySound("flak/explode",CHAN_VOICE); A_AlertMonsters(); diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index 0ca5b6e..80e3a04 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -98,8 +98,8 @@ Class PulseBall : Actor PROJECTILE; Scale 0.2; Speed 30; - Radius 4; - Height 4; + Radius 2; + Height 0; } override void PostBeginPlay() { diff --git a/zscript/shockrifle.zsc b/zscript/shockrifle.zsc index 858779d..8f1cabd 100644 --- a/zscript/shockrifle.zsc +++ b/zscript/shockrifle.zsc @@ -814,8 +814,8 @@ Class ShockBall : Actor Obituary "%k inflicted mortal damage upon %o with the Shock Rifle"; RenderStyle "Add"; DamageType 'jolted'; - Radius 4; - Height 4; + Radius 2; + Height 0; Scale 0.4; Speed 20; PROJECTILE; @@ -876,8 +876,8 @@ Class SuperShockBall : Actor Obituary "%k electrified %o with the Enhanced Shock Rifle."; RenderStyle "Add"; DamageType 'jolted'; - Radius 4; - Height 4; + Radius 2; + Height 0; Scale 0.5; Speed 25; PROJECTILE; diff --git a/zscript/translocator.zsc b/zscript/translocator.zsc index 14c52ed..118b45d 100644 --- a/zscript/translocator.zsc +++ b/zscript/translocator.zsc @@ -119,7 +119,7 @@ Class TranslocatorModule : Actor Default { Radius 2; - Height 2; + Height 0; Speed 25; PROJECTILE; -NOGRAVITY;