*~@3-S*{ O_DLSpuf}3NoneCore BDSniper2EngineBDSniper2WeaponSystemAdvancedEngine EndAimedMode DOTZEngineStartAimedModeToggleAimedModeSetSensitivityTempInventoryType StaticMeshMesh DrawTypeActionPickupMessageSniperRifleStandIdle SniperHitBDSniper2AmmunitionUserXDOTZPlayerControllerSniperRifleCrouchIdleiMinInaccuracyEffectiveRangeMuzzleFlashEmitterClass PreBeginPlay WeaponModeSniperRifleFire HitAnimNameCrouchIdleAnimNameStandIdleAnimName FireAnimNamePawnAnimationPackageTraceEmitterClassThirdPersonMuzzleFlashClassSwayMag AimedOffsetMouseSenseLevelBDSniper2Attachment MultiTimerdrawFirstPersonWeaponZoomLevelFOVs HitSpread ItemNameFireKarma Lighting CollisionForce LightColor Movement ScopeTexAltFire WeaponChange Reloading StartSway NormalFireMaxDesireabilityGetLocalPlayerControllerAttachmentClass MyDamageTypePlayReloadingBDSniper2Pickup reZoomLevelAutoSwitchPriorityInventoryGroupVector AimedFOV AmmoAmount bInstantHitEndSway PickupClassBDSniper2AmmoPickupMaxAmmo FireSound AmmoNamePickupAmmoCount OfficialName DamageAmount MutBDSniper2MouseSensitivity InstigatorGameSpecificLevelInfoClipXMultiPlayerLevelInfoStartingWeaponPCbSilentClipYSetPosAdvancedWeaponDrawTileScaledfAdvancedPlayerController ScriptTextC ReturnValue EngineExWeapon LevelInfobRenderWeaponMeshAmmoAdvancedWeaponAttachmentscaleYscaleXtimerID ControllerPlayerControllerMutatorCanvasLevelPawn SkeletalMeshBitmapMaterialActorVSizeUSizebAimingStaticReticuleAccuracyIndicator SniperRifleRangedSoundDOTZGunWeaponTextureDOTZWeaponPickupDOTZBulletDamageDOTZAmmunitionBaseDOTZAmmoPickup BBParticlesDOTZTInterface DOTZXWeaponsBBPMediumTracerBBPSniperRifleMuzzleFlash DOTZSWeaponsSniperRifleClip SniperScopeMixdownMixdownRangedSniperRifleShootClassPackageConst PlayerInput TextBufferObject ZoomOutDelay FunctionStateZOOM_OUT_TIMER bWasAimedcurrentZoomLevel texScaleX texScaleYDOTZA3rdPersonWeapons3PSniperRifle DOTZAWeaponsArrayPropertyObjectPropertyFloatProperty BoolProperty IntProperty BytePropertyValue @+2NO+O"J"xF= $02 BЌL9ZL9Z33q{3q{3Jq Ic\; IcL9sߊ4*Y  &Y ???$"@"!]DOTZAHumans.3PSniperRifle "$ #<+$%:CxD" NMBDSniper RifleLM" A"BH <,MBDSniper Rifle&?2 T]<])(Press Action to take the BDSniper Rifle:$@?   *'4>Y)6#"K @,) A**.8$9?  #;@-9D9?&9?7&K |%   & & 5(&a/!(   371740)=8-9? 9? -(-'  JB&.BDSniper2.BDSniper2Weapon Rclass MutBDSniper2 extends Mutator; function PreBeginPlay() { Super.PreBeginPlay(); MultiPlayerLevelInfo(Level.GameSpecificLevelInfo).StartingWeapon[1] = "BDSniper2.BDSniper2Weapon"; } ! P2"OdbE_RJq!/z30/2.1-OQ$-a( KIclass BDSniper2Weapon 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 BDSniper2Pickup extends DOTZWeaponPickup placeable; //=========================================================================== // DefaultProperties //=========================================================================== %>hB % '9}K (6 - vclass BDSniper2Attachment extends AdvancedWeaponAttachment; //=========================================================================== // DefaultProperties //=========================================================================== pclass BDSniper2Ammunition extends DOTZAmmunitionBase; //=========================================================================== // DefaultProperties //=========================================================================== 6class BDSniper2AmmoPickup extends DOTZAmmoPickup; -I2.4beռW]('Press Action to pick up BD sniper ammoE"  B &.G /27Z  13 W MMML[LSMLnL_LLLaLPLpLQLsL|L^L^LmLOLU^xLl^kLd^wMbL}`vMB^R^oL~L@S>S-S(S`eLrLTL]LALFS)LgL`S6SS MGT7]V_QS\_Y_TT9^SSZatMCMDauS5LcS LLkLNM\MZMzMI}ILbqyMJLE y{Kq[Mf H W {-` G. 4 T.W a. * n.p{.X k0%j w0Y C1 @ O1D[1?V_8h u:)] A; R N;'iZ;i C= & O=)X \= $ h= @t= V t>#c @?D L? HX?c `A 57lA U cB )HoB& wD* CE"MOE"_4]\FPqyI -2jK _4VI\L (;r _4Hm >&u 9*[ 6(E_4Am_4{n)ai._4@wIWw ?N 7*M0 w0 S2D o