*~@3w-S*"E&|L3NoneCore BDSniperEngineBDSniperWeaponSystemAdvancedEngine EndAimedMode DOTZEngineToggleAimedModeStartAimedModeActionPickupMessageSetSensitivityTemp StaticMeshMeshInventoryType DrawTypeSniperRifleStandIdle SniperHitBDSniperAmmunitionUserXDOTZPlayerControllerSniperRifleCrouchIdleiMinInaccuracyMuzzleFlashEmitterClass WeaponMode PreBeginPlay HitAnimNameSniperRifleFireCrouchIdleAnimNameStandIdleAnimName FireAnimNamePawnAnimationPackageTraceEmitterClassThirdPersonMuzzleFlashClass AimedOffsetBDSniperAttachment OfficialNameMouseSenseLevelZoomLevelFOVs MultiTimer HitSpread StartSwayBDSniperPickup ItemNameFireKarma Lighting CollisionForce LightColor Movement ScopeTexAltFire WeaponChange Reloading reZoomLevel NormalFireMaxDesireabilityGetLocalPlayerControllerAttachmentClass MyDamageTypePlayReloadingEndSwayVectorAutoSwitchPriorityInventoryGroupdrawFirstPersonWeaponBDSniperAmmoPickup AmmoAmount bInstantHit AimedFOV PickupClass MutBDSniperMaxAmmo FireSound AmmoNamePickupAmmoCount ReloadCount DamageAmountPC InstigatorbSilentValueGameSpecificLevelInfoClipXMultiPlayerLevelInfoStartingWeaponClipYSetPosDrawTileScaledfAdvancedWeapon ScriptTextCAdvancedPlayerController ReturnValue EngineExWeapon LevelInfoAmmo ControllerbRenderWeaponMeshSwayMagAdvancedWeaponAttachmentscaleYscaleXtimerIDPlayerControllerMutatorCanvasLevelPawn SkeletalMeshBitmapMaterialActorVSizeUSizebAimingStaticReticuleAccuracyIndicator SniperRifleRangedSoundDOTZGunWeaponTextureDOTZWeaponPickupDOTZBulletDamageDOTZAmmunitionBaseDOTZAmmoPickup BBParticlesDOTZTInterface DOTZXWeaponsBBPMediumTracerBBPSniperRifleMuzzleFlash DOTZSWeaponsSniperRifleClip SniperScopeMixdownMixdownRangedSniperRifleShootClassPackageConst PlayerInput TextBufferObject ZoomOutDelay FunctionStateZOOM_OUT_TIMER bWasAimedcurrentZoomLevel texScaleX texScaleYDOTZA3rdPersonWeapons3PSniperRifle DOTZAWeaponsArrayPropertyObjectPropertyFloatProperty BoolProperty IntProperty BytePropertyMouseSensitivity @+2^Kz+O"J"xF= $02 9BЌL9ZL9Z33q{3q{3Jq Ic\; IcL9sߊ4'Y  &Y ???8" ]DOTZAHumans.3PSniperRifle$ #<)$#:@xG" %MBDSniper RifleLM" NA"BH <,MBDSniper Rifle&+2 *< ])(Press Action to take the BDSniper Rifle:$@?  *$խ)6"!K @,) A**.*$9?  #;@-9D9?&9?7&K |%   & & 5(&a/!(   371740C=7-9? 9? -(-'  I@&.BDSniper.BDSniperWeapon Oclass MutBDSniper extends Mutator; function PreBeginPlay() { Super.PreBeginPlay(); MultiPlayerLevelInfo(Level.GameSpecificLevelInfo).StartingWeapon[1] = "BDSniper.BDSniperWeapon"; } ! I2"tNE_RJq!/z30/2.1-OP$-a( JIclass BDSniperWeapon extends DOTZGunWeapon config(user); // configurable var() Texture ScopeTex; var() float ZoomOutDelay; var() Array ZoomLevelFOVs; var() Array MouseSenseLevel; var() int SwayMag; // internal const ZOOM_OUT_TIMER = 371740; var protected bool bWasAimed; var protected int currentZoomLevel; // 0 (no zoom) ... N (max zoom) var protected int reZoomLevel; simulated function AltFire( float Value ) { //ON PC ONLY if (Instigator.Controller.IsA('XDotzPlayerController') == false){ ToggleAimedMode(); } //super.AltFire(Value); does reload } /** * Cycle through zoom levels instead of on/off toggle... */ simulated function ToggleAimedMode() { local PlayerController pc; pc = Level.GetLocalPlayerController(); if ( bAiming ) { currentZoomLevel = (currentZoomLevel + 1) % (ZoomLevelFOVs.length + 1); } //re-aiming, set zoom level to whatever it was when we un-zoomed else { currentZoomLevel = reZoomLevel; } if ( currentZoomLevel == 0 ){ pc.SetSensitivityTemp(class'PlayerInput'.default.MouseSensitivity); EndAimedMode(); // EndAimedMode(); } else { pc.SetSensitivityTemp(MouseSenseLevel[currentZoomLevel - 1]); StartAimedMode( ZoomLevelFOVs[currentZoomLevel - 1] ); } } /** * Draw the scope first when zoomed in, and disable rendering of the gun. */ simulated function drawFirstPersonWeapon( canvas c, float scaleX, float scaleY ) { local float texScaleX, texScaleY; if ( bAiming ) { c.setPos( 0,0 ); texScaleX = c.clipX / scopeTex.uSize; texScaleY = c.clipY / scopeTex.vSize; c.drawTileScaled( scopeTex, texScaleX, texScaleY ); bRenderWeaponMesh = false; } else { bRenderWeaponMesh = true; } super.drawFirstPersonWeapon( c, scaleX, scaleY ); } /** * Start the timer to kick out of the scope view... */ simulated function Fire(float Value) { //NOTE this would probably be better as a notify on the fire anim... if ( bAiming ) SetMultiTimer( ZOOM_OUT_TIMER, ZoomOutDelay, false ); super.Fire( value ); } /** * Timers... */ simulated function MultiTimer( int timerID ) { switch ( timerID ) { case ZOOM_OUT_TIMER: EndAimedMode(); bWasAimed = true; break; default: super.MultiTimer( timerID ); } } /** * End all zooming effects */ simulated function PlayReloading() { // Log( self @ "PLAYRELOADING" ) ; currentZoomLevel = 0; EndAimedMode(); super.PlayReloading(); } /** * At the end of the fire anim, go back to zoomed mode. */ state NormalFire { /* HACKED OUT, REQUIRE PLAYER TO MANUALLY RE-ZOOM function AnimEnd(int Channel) { // from base class... Finish(); CheckAnimating(); // re-enagage aim... if ( bWasAimed && !bAiming && currentZoomLevel > 0 ) { StartAimedMode(ZoomLevelFOVs[currentZoomLevel - 1]); } } */ } /** * Make sure we disable aimed mode. */ simulated function Weapon WeaponChange( byte F, bool bSilent ) { EndAimedMode(); return super.WeaponChange( f, bSilent ); } /***************************************************************** * StartAimedMode * Sniper rifle does sway when zoomed ***************************************************************** */ simulated function StartAimedMode( optional int AimedFOV ) { super.StartAimedMode(AimedFOV); AccuracyIndicator = none; StaticReticule = none; AdvancedPlayerController(Instigator.Controller).StartSway( SWAY_SIDEWAYS, SwayMag ); } /***************************************************************** * EndAimedMode ***************************************************************** */ simulated function EndAimedMode() { reZoomLevel = 1; //max( 1, currentZoomLevel ); super.EndAimedMode(); AccuracyIndicator = default.AccuracyIndicator; StaticReticule = default.StaticReticule; AdvancedPlayerController(Instigator.Controller).EndSway(); } state Reloading{ simulated function ToggleAimedMode() { } simulated function StartAimedMode( optional int AimedFOV ) { } } //NOTE could do the same for Reloading-AnimEnd... //=========================================================================== // DefaultProperties //=========================================================================== #(W 0 -'.  |class BDSniperPickup extends DOTZWeaponPickup placeable; //=========================================================================== // DefaultProperties //=========================================================================== %>hA % '9}J (6 - uclass BDSniperAttachment extends AdvancedWeaponAttachment; //=========================================================================== // DefaultProperties //=========================================================================== oclass BDSniperAmmunition extends DOTZAmmunitionBase; //=========================================================================== // DefaultProperties //=========================================================================== 5class BDSniperAmmoPickup extends DOTZAmmoPickup; -D2. ռW ]('Press Action to pick up BD sniper ammoE"  B &.? /27Y  13 V MMML\LSMLnL_LLLaLPLpLQLsL|L_L^LmLOLV^xLl^eLc^wMaL}`vMB^Q^oL~L@S>S-S(S`fLrLTL]LALFSCLhL`S6SS MGT7]W_cSZ_X_UT9^TSYatMCMDauS5LbS LLeLNM\MZMzMI}ILbqyMJLE y{Kq[Md H W q-^ }- 4 J.P W. ' d.pq.X a0%k m0Y y0 8 E1zQ1+VK8i a:)[ m: R z:$iF;j o< & {<)R H= g T= @`= V `>#S l>G x> HD?S LA 57XA U OB CI[B& dD' pD"K|D"]4ZGFIqaI -2RK ]4UIDL (;Y ]4GT >&[ 9*A 6(k]4@S]4zS)`M.]4?[DWZ >q 7*o0 Y0 u2G Q