class HK417AR extends ScopedWeapon; var bool bChangedViewOffset; //stores if vieweoffset has been changed //overidden to add PlayerViewOffset change simulated event OnZoomInFinished() { local name anim; local float frame, rate; GetAnimParams(0, anim, frame, rate); if ( !bChangedViewOffset) { PlayerViewOffset.X += 1.00; //move the viewmodel further from the camera bChangedViewOffset = True; } if (ClientState == WS_ReadyToFire) { // Play the iron idle anim when we're finished zooming in if (anim == IdleAnim) { PlayIdle(); } } Super.OnZoomInFinished(); //needed to draw textured scope } //overridden to reset bool without having to wait for zoom out to finish, to fix if player spams ironsight toggle simulated exec function ToggleIronSights() { if( bHasAimingMode ) { bChangedViewOffset = False; //reset my bool var if( bAimingRifle ) { PerformZoom(false); TweenAnim(IdleAnim,ZoomTime/2); //fix zoom out } else { if( Owner != none && Owner.Physics == PHYS_Falling && Owner.PhysicsVolume.Gravity.Z <= class'PhysicsVolume'.default.Gravity.Z ) { return; } InterruptReload(); if( bIsReloading || !CanZoomNow() ) return; PerformZoom(True); TweenAnim(IdleAimAnim,ZoomTime/2); //fix zoom in } } } exec function ReloadMeNow() { local float ReloadMulti; if(!AllowReload()) return; if ( bHasAimingMode && bAimingRifle ) { FireMode[1].bIsFiring = False; ZoomOut(false); if( Role < ROLE_Authority) ServerZoomOut(false); } if ( KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo) != none && KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill != none ) ReloadMulti = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill.Static.GetReloadSpeedModifier(KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo), self); else ReloadMulti = 1.0; bIsReloading = true; ReloadTimer = Level.TimeSeconds; bShortReload = MagAmmoRemaining > 0; if ( bShortReload ) ReloadRate = Default.ReloadShortRate / ReloadMulti; else ReloadRate = Default.ReloadRate / ReloadMulti; if( bHoldToReload ) { NumLoadedThisReload = 0; } ClientReload(); Instigator.SetAnimAction(WeaponReloadAnim); if ( Level.Game.NumPlayers > 1 && KFGameType(Level.Game).bWaveInProgress && KFPlayerController(Instigator.Controller) != none && Level.TimeSeconds - KFPlayerController(Instigator.Controller).LastReloadMessageTime > KFPlayerController(Instigator.Controller).ReloadMessageDelay ) { KFPlayerController(Instigator.Controller).Speech('AUTO', 2, ""); KFPlayerController(Instigator.Controller).LastReloadMessageTime = Level.TimeSeconds; } } simulated function ClientReload() { local float ReloadMulti; if ( bHasAimingMode && bAimingRifle ) { FireMode[1].bIsFiring = False; ZoomOut(false); if( Role < ROLE_Authority) ServerZoomOut(false); } if ( KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo) != none && KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill != none ) ReloadMulti = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill.Static.GetReloadSpeedModifier(KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo), self); else ReloadMulti = 1.0; bIsReloading = true; if (MagAmmoRemaining <= 0) { PlayAnim(ReloadAnim, ReloadAnimRate*ReloadMulti, 0.1); } else if (MagAmmoRemaining >= 1) { PlayAnim(ReloadShortAnim, ReloadAnimRate*ReloadMulti, 0.1); } } function AddReloadedAmmo() { local int a; UpdateMagCapacity(Instigator.PlayerReplicationInfo); a = MagCapacity; if ( bShortReload ) a++; // 1 bullet already bolted if ( AmmoAmount(0) >= a ) MagAmmoRemaining = a; else MagAmmoRemaining = AmmoAmount(0); // this seems redudant -- PooSH // if( !bHoldToReload ) // { // ClientForceKFAmmoUpdate(MagAmmoRemaining,AmmoAmount(0)); // } if ( PlayerController(Instigator.Controller) != none && KFSteamStatsAndAchievements(PlayerController(Instigator.Controller).SteamStatsAndAchievements) != none ) { KFSteamStatsAndAchievements(PlayerController(Instigator.Controller).SteamStatsAndAchievements).OnWeaponReloaded(); } } defaultproperties { lenseMaterialID=8 scopePortalFOVHigh=40.000000 scopePortalFOV=40.000000 ZoomMatRef="ScrnWeaponPack_T.HK417AR.HK417Scope_FB" ScriptedTextureFallbackRef="KF_Weapons_Trip_T.Rifles.CBLens_cmb" CrosshairTexRef="ScrnWeaponPack_T.HK417AR.HK417Scope" ReloadShortAnim="Reload" ReloadShortRate=2.570000 bHasScope=True ZoomedDisplayFOVHigh=60.000000 MagCapacity=15 ReloadRate=3.150000 ReloadAnim="Reload" ReloadAnimRate=1.000000 WeaponReloadAnim="Reload_M4" Weight=8.000000 bHasAimingMode=True IdleAimAnim="Iron_Idle" StandardDisplayFOV=65.000000 bModeZeroCanDryFire=True SleeveNum=0 TraderInfoTexture=Texture'ScrnWeaponPack_T.HK417AR.HK417_Trader' MeshRef="ScrnWeaponPack_A.HK417_mesh" SkinRefs(0)="KF_Weapons3_Trip_T.hands.Priest_Hands_1st_P" SkinRefs(1)="ScrnWeaponPack_T.HK417AR.hk417_sk1_d2" SkinRefs(2)="ScrnWeaponPack_T.HK417AR.mueller" SkinRefs(3)="ScrnWeaponPack_T.HK417AR.body" SkinRefs(4)="ScrnWeaponPack_T.HK417AR.body2" SkinRefs(5)="ScrnWeaponPack_T.HK417AR.hk416_5" SkinRefs(6)="ScrnWeaponPack_T.HK417AR.clip_hk417" SkinRefs(7)="ScrnWeaponPack_T.HK417AR.hk416_8" SkinRefs(8)="KF_Weapons_Trip_T.Rifles.CBLens_cmb" SelectSoundRef="ScrnWeaponPack_SND.HK417AR.HK417_select" HudImageRef="ScrnWeaponPack_T.HK417AR.HK417_Unselected" SelectedHudImageRef="ScrnWeaponPack_T.HK417AR.HK417_selected" PlayerIronSightFOV=32.000000 ZoomedDisplayFOV=60.000000 FireModeClass(0)=Class'ScrnWeaponPack.HK417Fire' FireModeClass(1)=Class'KFMod.NoFire' PutDownAnim="PutDown" SelectAnimRate=1.000000 BringUpTime=1.000000 SelectForce="SwitchToAssaultRifle" AIRating=0.650000 CurrentRating=0.650000 Description="The Heckler & Koch HK417 is a gas-operated, selective fire rifle with a rotating bolt and is essentially an enlarged HK416 assault rifle. Chambered for the full power 7.62x51mm NATO round, instead of a less powerful intermediate cartridge, the HK417 is intended for use as a designated marksman rifle, and in other roles where the greater penetrative power and range of the 7.62x51mm NATO round are required." DisplayFOV=65.000000 Priority=100 CustomCrosshair=11 CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5" InventoryGroup=4 GroupOffset=3 PickupClass=Class'ScrnWeaponPack.HK417Pickup' PlayerViewOffset=(X=14.000000,Y=7.000000,Z=-4.000000) BobDamping=6.000000 AttachmentClass=Class'ScrnWeaponPack.HK417Attachment' IconCoords=(X1=253,Y1=146,X2=333,Y2=181) ItemName="HK-417 SE" }