From 6984c2819ddac4f98696a98eee82397a32a9698a Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Wed, 11 Sep 2019 23:19:55 +0200 Subject: [PATCH] Rifle implemented. Misc. adjustments to Biorifle and Razorjack. --- Readme.md | 8 +- gldefs.txt | 6 + graphics/UReticle.png | Bin 0 -> 49274 bytes modeldef.rifle | 100 ++++++++++++++ shaders/glsl/URifleScope.fp | 12 ++ sndinfo.txt | 4 + zscript/miscitems.zsc | 17 ++- zscript/razorjack.zsc | 2 + zscript/rifle.zsc | 268 +++++++++++++++++++++++++++++++++++- zscript/ubiorifle.zsc | 2 +- zscript/unrealcommon.zsc | 3 +- 11 files changed, 410 insertions(+), 12 deletions(-) create mode 100644 graphics/UReticle.png create mode 100644 shaders/glsl/URifleScope.fp diff --git a/Readme.md b/Readme.md index 80dfb66..a8fff77 100644 --- a/Readme.md +++ b/Readme.md @@ -25,6 +25,9 @@ Doom Tournament (currently the devel branch is required). - GES Bio Rifle (slot 8) (replaces plasma rifle) - "Hold up to 2 seconds" feature from Unreal Bible - Biorifle splashes like UT (toggleable) + - Rifle (slot 9) (replaces plasma rifle) + - Restored rapid fire + - Restored flashlight - SMP 7243 (slot 0) (replaces bfg9000) - Backpack (replaces backpack, identical to Doom Tournament version) - Unreal 1 HUD @@ -58,15 +61,10 @@ Doom Tournament (currently the devel branch is required). ## In progress - - Rifle (slot 9) (replaces plasma rifle) - Minigun (slot 0) (replaces chaingun) ## Planned - - Unreal Bible & prototype build behaviour restoration - - Rifle restored rapid fire - - Rifle restored flashlight - - Stunner (slot 4) (replaces chainsaw) - Razorclaw (slot 1) (replaces chainsaw) - Teleport Capsules (slot 1) diff --git a/gldefs.txt b/gldefs.txt index 2e89414..726b598 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -752,3 +752,9 @@ HardwareShader Texture "models/JSentry1_.png" { Shader "shaders/glsl/AmbientGlow.fp" } +// PP shaders +HardwareShader PostProcess scene +{ + Name "URifleScope" + Shader "shaders/glsl/URifleScope.fp" 330 +} \ No newline at end of file diff --git a/graphics/UReticle.png b/graphics/UReticle.png new file mode 100644 index 0000000000000000000000000000000000000000..b53fce41b8127ead673018d83c4cf11814830148 GIT binary patch literal 49274 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 Zch%g sz.y ) p.x *= sz.x/sz.y; + else p.y *= sz.y/sz.x; + vec3 col = texture(InputTexture,uv+p*pow(length(p),8.)*40.).rgb; + col = max(col.r,max(col.g,col.b))*vec3(1.,0.2,.1); + col *= 1.-clamp(pow(length(p)*2.,16.),0.,1.); + FragColor = vec4(col,1.0); +} diff --git a/sndinfo.txt b/sndinfo.txt index 1023093..4677340 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -220,6 +220,10 @@ automag/fire shot automag/click click automag/reload reload +rifle/fire riflesht +rifle/scopeon rifllon +rifle/scopeoff riflloff + translator/event transa3 detector/start detact diff --git a/zscript/miscitems.zsc b/zscript/miscitems.zsc index 32580d2..5e35901 100644 --- a/zscript/miscitems.zsc +++ b/zscript/miscitems.zsc @@ -1263,7 +1263,7 @@ Class UFlashLight1 : DynamicLight override void Tick() { Super.Tick(); - if ( !target || !UnrealInventory(master) ) + if ( !target || !master ) { Destroy(); return; @@ -1272,9 +1272,18 @@ Class UFlashLight1 : DynamicLight else SetOrigin(target.vec3Offset(0,0,target.height*0.75),true); A_SetAngle(target.angle,SPF_INTERPOLATE); A_SetPitch(target.pitch,SPF_INTERPOLATE); - args[LIGHT_RED] = int(basecolor[0]*clamp(UnrealInventory(master).charge/1400.,0.,1.)); - args[LIGHT_GREEN] = int(basecolor[1]*clamp(UnrealInventory(master).charge/1400.,0.,1.)); - args[LIGHT_BLUE] = int(basecolor[2]*clamp(UnrealInventory(master).charge/1400.,0.,1.)); + if ( UnrealInventory(master) ) + { + args[LIGHT_RED] = int(basecolor[0]*clamp(UnrealInventory(master).charge/1400.,0.,1.)); + args[LIGHT_GREEN] = int(basecolor[1]*clamp(UnrealInventory(master).charge/1400.,0.,1.)); + args[LIGHT_BLUE] = int(basecolor[2]*clamp(UnrealInventory(master).charge/1400.,0.,1.)); + } + else + { + args[LIGHT_RED] = basecolor[0]; + args[LIGHT_GREEN] = basecolor[1]; + args[LIGHT_BLUE] = basecolor[2]; + } bDORMANT = (target.health <= 0); if ( Inventory(target) && target.bInvisible ) bDORMANT = true; // alert monsters hit by the light diff --git a/zscript/razorjack.zsc b/zscript/razorjack.zsc index 51ea4eb..1c87d7c 100644 --- a/zscript/razorjack.zsc +++ b/zscript/razorjack.zsc @@ -212,6 +212,8 @@ Class Razorjack : UnrealWeapon if ( !weap ) return; if ( weap.Ammo1.Amount <= 0 ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; + if ( self is 'UTPlayer' ) + UTPlayer(self).PlayAttacking3(); A_PlaySound("ripper/fire",CHAN_WEAPON,pitch:bAlt?1.:(1.+invoker.special1*.1)); invoker.FireEffect(); UTMainHandler.DoFlash(self,Color(16,255,0,255),1); diff --git a/zscript/rifle.zsc b/zscript/rifle.zsc index dc11a33..898c871 100644 --- a/zscript/rifle.zsc +++ b/zscript/rifle.zsc @@ -3,6 +3,7 @@ Class URifleAmmo : Ammo Default { Tag "$T_RIFLEAMMO"; + Inventory.Icon "I_RifleA"; Inventory.PickupMessage ""; Inventory.Amount 8; Inventory.MaxAmount 50; @@ -44,11 +45,183 @@ Class URifleAmmo2 : URifleAmmo Class URifle : UnrealWeapon { + double sniperzoom; + ui TextureID reticle; + transient ui Font zfont; + bool bLightOn; + UFlashLight1 lt[2]; + + override void PreRender( double lbottom ) + { + if ( sniperzoom <= 1. ) return; + if ( reticle.IsNull() ) reticle = TexMan.CheckForTexture("UReticle",Texman.Type_Any); + Screen.DrawTexture(reticle,false,300,300,DTA_VirtualWidth,600,DTA_VirtualHeight,600,DTA_LegacyRenderStyle,STYLE_Stencil,DTA_FillColor,Color(0,0,0)); + if ( !zfont ) zfont = Font.GetFont('UTFont40'); + Screen.DrawText(zfont,Font.CR_UNTRANSLATED,700,700,String.Format("X%.1f",sniperzoom),DTA_VirtualWidth,1280,DTA_VirtualHeight,960,DTA_LegacyRenderStyle,STYLE_Stencil,DTA_FillColor,Color(0,0,0)); + } + override void DetachFromOwner() + { + Super.DetachFromOwner(); + PlayerInfo p = players[consoleplayer]; + if ( p.Camera == Owner ) Shader.SetEnabled(p,"URifleScope",false); + bLightOn = false; + if ( lt[0] ) lt[0].Destroy(); + if ( lt[1] ) lt[1].Destroy(); + } + override void RenderOverlay( RenderEvent e ) + { + PlayerInfo p = players[consoleplayer]; + if ( (p.Camera != Owner) || (sniperzoom <= 1.) ) Shader.SetEnabled(p,"URifleScope",false); + else Shader.SetEnabled(p,"URifleScope",true); + } + override void DoEffect() + { + Super.DoEffect(); + bALT_AMMO_OPTIONAL = !sting_rifle; + if ( sniperzoom > 1.0 ) crosshair = 99; + else crosshair = 0; + } + action void A_ToggleLight() + { + invoker.bLightOn = !invoker.bLightOn; + A_PlaySound(invoker.bLightOn?"lite/pickup":"lite/off",CHAN_ITEM); + if ( invoker.bLightOn ) + { + if ( !invoker.lt[0] ) invoker.lt[0] = UFlashLight1(Spawn("UFlashLight1",pos)); + invoker.lt[0].target = self; + invoker.lt[0].master = invoker; + invoker.lt[0].basecolor[0] = 255; + invoker.lt[0].basecolor[1] = 224; + invoker.lt[0].basecolor[2] = 192; + invoker.lt[0].args[3] = 480; + invoker.lt[0].SpotInnerAngle = 2; + invoker.lt[0].SpotOuterAngle = 9; + if ( !invoker.lt[1] ) invoker.lt[1] = UFlashLight1(Spawn("UFlashLight2",pos)); + invoker.lt[1].target = self; + invoker.lt[1].master = invoker; + invoker.lt[1].basecolor[0] = 128; + invoker.lt[1].basecolor[1] = 112; + invoker.lt[1].basecolor[2] = 96; + invoker.lt[1].args[3] = 500; + invoker.lt[1].SpotOuterAngle = 15; + } + else + { + if ( invoker.lt[0] ) invoker.lt[0].Destroy(); + if ( invoker.lt[1] ) invoker.lt[1].Destroy(); + } + } + action void A_RifleFire( bool zoomed = false, bool alt = false ) + { + Weapon weap = Weapon(invoker); + if ( !weap ) return; + if ( weap.Ammo1.Amount <= 0 ) return; + if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; + if ( self is 'UTPlayer' ) + UTPlayer(self).PlayAttacking3(); + invoker.FireEffect(); + UTMainHandler.DoFlash(self,Color(32,0,0,255),1); + if ( alt ) A_PlaySound("rifle/fire",CHAN_WEAPON,Dampener.Active(self)?.3:1.,pitch:FRandom[Sniper](0.9,1.1)); + else A_PlaySound("rifle/fire",CHAN_WEAPON,Dampener.Active(self)?.3:1.); + if ( !Dampener.Active(self) ) A_AlertMonsters(); + if ( zoomed ) + { + A_QuakeEx(1,1,1,2,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.09); + for ( int i=0; i<3; i++ ) + UTMainHandler.DoSwing(self,(FRandom[Sniper](-0.3,0.05),FRandom[Sniper](-0.3,0.1)),2,-0.5,Random[Sniper](3,4),SWING_Spring,Random[Sniper](3,4),Random[Sniper](4,5)); + } + else + { + A_QuakeEx(2,2,2,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12); + for ( int i=0; i<(alt?6:3); i++ ) + UTMainHandler.DoSwing(self,(FRandom[Sniper](-0.3,0.05),FRandom[Sniper](-0.3,0.1)),4,-1,Random[Sniper](3,4),SWING_Spring,Random[Sniper](3,4),Random[Sniper](4,5)); + A_Overlay(-2,"MuzzleFlash"); + A_OverlayFlags(-2,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true); + A_OverlayRenderstyle(-2,STYLE_Add); + } + let l = Spawn("SniperLight",pos); + l.target = self; + Vector3 x, y, z; + [x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll); + Vector3 origin = Vec2OffsetZ(0,0,player.viewz)+10.0*x; + if ( !zoomed ) origin = origin+y*3.0-z*2.0; + FLineTraceData d; + LineTrace(angle,10000,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + if ( d.HitType == TRACE_HitActor ) + { + int dmg = 45; + if ( d.HitLocation.z >= (d.HitActor.pos.z+d.HitActor.height*0.81) ) + { + dmg = d.HitActor.DamageMobj(invoker,self,100,'Decapitated',DMG_USEANGLE|DMG_THRUSTLESS,atan2(d.HitDir.y,d.HitDir.x)); + UTMainHandler.DoKnockback(d.HitActor,d.HitDir,35000); + } + else + { + dmg = d.HitActor.DamageMobj(invoker,self,dmg,'shot',DMG_USEANGLE|DMG_THRUSTLESS,atan2(d.HitDir.y,d.HitDir.x)); + UTMainHandler.DoKnockback(d.HitActor,d.HitDir,30000); + } + if ( d.HitActor.bNOBLOOD ) + { + let p = Spawn("BulletImpact",d.HitLocation); + p.scale *= 1.5; + p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + p.pitch = asin(d.HitDir.z); + } + else + { + d.HitActor.TraceBleed(dmg,self); + d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); + } + } + else if ( d.HitType != TRACE_HitNone ) + { + Vector3 hitnormal = -d.HitDir; + if ( d.HitType == TRACE_HitFloor ) + { + if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; + else hitnormal = d.HitSector.floorplane.Normal; + } + else if ( d.HitType == TRACE_HitCeiling ) + { + if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; + else hitnormal = d.HitSector.ceilingplane.Normal; + } + else if ( d.HitType == TRACE_HitWall ) + { + hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); + if ( !d.LineSide ) hitnormal *= -1; + } + let p = Spawn("BulletImpact",d.HitLocation+hitnormal*0.01); + p.scale *= 1.5; + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + } + for ( int i=0; i<24; i++ ) + { + let s = Spawn("UTStaticViewSmoke",origin); + UTViewSmoke(s).ofs = (10,3,-2); + UTViewSmoke(s).vvel += (FRandom[Sniper](-0.05,0.15),FRandom[Sniper](-1.2,1.2),FRandom[Sniper](-0.1,0.1)); + s.target = self; + s.scale *= 1.8; + s.alpha *= 0.3; + } + origin += x*4.0+y*6.0-z*10.0; + let c = Spawn("UCasing",origin); + c.scale *= 1.25; + c.vel = x*FRandom[Junk](-1.5,1.5)+y*FRandom[Junk](2,4)+z*FRandom[Junk](2,3); + } + override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) + { + if ( mod == 'Decapitated' ) return StringTable.Localize("$O_SNIPERDECAP"); + return Obituary; + } Default { Tag "$T_RIFLE"; + Obituary "$O_SNIPER"; Inventory.PickupMessage "$I_RIFLE"; - Weapon.UpSound "rifle/select"; + Weapon.UpSound "sniper/select"; Weapon.SlotNumber 9; Weapon.SelectionOrder 9; Weapon.AmmoType "URifleAmmo"; @@ -56,7 +229,9 @@ Class URifle : UnrealWeapon Weapon.AmmoType2 "URifleAmmo"; Weapon.AmmoUse2 1; Weapon.AmmoGive 8; + Weapon.Kickback 250; UTWeapon.DropAmmo 4; + +NOEXTREMEDEATH; } States { @@ -65,5 +240,96 @@ Class URifle : UnrealWeapon Stop; SRFP B -1; Stop; + Select: + SRFS A 1 A_Raise(int.max); + Wait; + Ready: + SRFS A 0 A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); + SRFS ABCDEFGHIJKLMNOPQRST 1 A_WeaponReady(WRF_NOFIRE); + Idle: + SRFI A 1 + { + A_CheckReload(); + A_WeaponReady(sting_riflel?(WRF_ALLOWZOOM|WRF_ALLOWRELOAD):WRF_ALLOWZOOM); + } + Wait; + ZoomedIdle: + TNT1 A 1 + { + A_CheckReload(); + A_WeaponReady(sting_riflel?(WRF_ALLOWZOOM|WRF_ALLOWRELOAD):WRF_ALLOWZOOM); + } + Wait; + Fire: + SRFF A 0 A_JumpIf(invoker.sniperzoom>1.0,"ZoomedFire"); + SRFF A 0 A_RifleFire(); + SRFF ABCDEFGHIJ 2; + Goto Idle; + ZoomedFire: + SRSI A 20 A_RifleFire(true); + Goto ZoomedIdle; + AltFire: + SRFF A 0 A_JumpIf(!sting_rifle,"Zoom"); + SRFF A 0 A_JumpIf(invoker.sniperzoom>1.0,"ZoomedAltFire"); + SRFF A 0 A_RifleFire(false,true); + SRFF ABCDEFG 1; + SRFF A 0 A_JumpIfNoAmmo("AltFireEnd"); + SRFF A 0 A_RifleFire(false,true); + SRFF ABCDEFG 1; + SRFF A 0 A_JumpIfNoAmmo("AltFireEnd"); + SRFF A 0 A_RifleFire(false,true); + SRFF ABCDEFG 1; + AltFireEnd: + SRFF HIJ 1; + SRFI A 3; + Goto Idle; + ZoomedAltFire: + SRSI A 7 A_RifleFire(true,true); + SRSI A 0 A_JumpIfNoAmmo("ZoomedAltFireEnd"); + SRSI A 7 A_RifleFire(true,true); + SRSI A 0 A_JumpIfNoAmmo("ZoomedAltFireEnd"); + SRSI A 7 A_RifleFire(true,true); + ZoomedAltFireEnd: + SRSI A 6; + Goto Idle; + Reload: + SRFI A 8 A_ToggleLight(); + Goto Idle; + Zoom: + SRSU A 0 A_JumpIf(invoker.sniperzoom>1.0,"ZoomOut"); + SRSU A 0 A_PlaySound("rifle/scopeon",CHAN_ITEM,.5); + SRSU ABCDEFGHIJKLMN 1; + Goto ZoomHold; + ZoomHold: + TNT1 A 1 + { + if ( invoker.sniperzoom <= 8.0 ) + A_ZoomFactor(invoker.sniperzoom*=1.1); + invoker.sniperzoom = min(invoker.sniperzoom,8.1); + } + TNT1 A 0 A_JumpIf(player.cmd.buttons&(BT_ALTATTACK|BT_ZOOM),"ZoomHold"); + Goto ZoomedIdle; + ZoomOut: + SRSD A 0 A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); + SRSD A 0 A_PlaySound("rifle/scopeoff",CHAN_ITEM,.5); + SRSD ABCDEFGHIJKLMNO 1; + Goto Idle; + Deselect: + SRFD A 0 A_JumpIf(invoker.sniperzoom<=1.0,"Deselect2"); + SRSD A 0 A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); + SRSD A 0 A_PlaySound("rifle/scopeoff",CHAN_ITEM,.5); + SRSD ABCDEFGHIJKLMNO 1; + Deselect2: + SRFD A 0 + { + A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); + if ( invoker.bLightOn ) A_ToggleLight(); + } + SRFD ABCDEFG 1; + SRFD H 1 A_Lower(int.max); + Wait; + MuzzleFlash: + SMUZ A 3 Bright; + Stop; } } diff --git a/zscript/ubiorifle.zsc b/zscript/ubiorifle.zsc index f40f5b0..7ff7367 100644 --- a/zscript/ubiorifle.zsc +++ b/zscript/ubiorifle.zsc @@ -593,7 +593,7 @@ Class UBioRifle : UnrealWeapon else A_PlaySound("ges/fire",CHAN_WEAPON,Dampener.Active(self)?.17:1.); invoker.FireEffect(); UTMainHandler.DoFlash(self,Color(48,0,255,0),1); - A_AlertMonsters(); + if ( !Dampener.Active(self) ) A_AlertMonsters(); if ( bAlt ) A_QuakeEx(1+int(0.5*invoker.chargesize),1+int(0.5*invoker.chargesize),1+int(0.5*invoker.chargesize),5+int(1.2*invoker.chargesize),0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05+0.01*invoker.chargesize); else A_QuakeEx(1,1,1,5,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05); Vector3 x, y, z; diff --git a/zscript/unrealcommon.zsc b/zscript/unrealcommon.zsc index 7b442eb..c7066d4 100644 --- a/zscript/unrealcommon.zsc +++ b/zscript/unrealcommon.zsc @@ -234,7 +234,8 @@ Class UPlayer : UTPlayer if ( ((player.ReadyWeapon is 'UBioRifle') && (player.buttons&BT_ALTATTACK)) || (player.ReadyWeapon is 'Eightball') || ((player.ReadyWeapon is 'DispersionPistol') && DispersionPistol(player.ReadyWeapon).bCharging) - || ((player.ReadyWeapon is 'UBioRifle') && UBioRifle(player.ReadyWeapon).bCharging) ) + || ((player.ReadyWeapon is 'UBioRifle') && UBioRifle(player.ReadyWeapon).bCharging) + || (player.ReadyWeapon is 'Razorjack') ) { if ( !InStateSequence(CurState,FindState("MissileRepStill")) ) SetStateLabel("MissileRepStill");