*~@0G)G&Q"diGv+0None MP5SWeaponAdvancedEngine EndAimedModeEngineCoreBDMP5S DOTZEngineSystemStartAimedModeToggleAimedMode DrawTypeInventoryTypeSetSensitivityTempActionPickupMessage StaticMeshMeshXDOTZPlayerController ScopeTexUserVectorAccuracyIndicatoriMinInaccuracy HitAnimNameM16HitCrouchIdleAnimName M16StandIdleStandIdleAnimName FireAnimNamePawnAnimationPackage ImpactFlesh WeaponType'SwayMag AimedOffset MultiTimerMP5SAmmoPickupM16CrouchIdledrawFirstPersonWeapon ItemNameFireZoomLevelFOVsAltFire WeaponChange ReloadingMP5SAmmunition NormalFirePickupMessageMaxDesireabilityGetLocalPlayerControllerAttachmentClass MyDamageTypePlayReloading HitSpread StartSwayAutoSwitchPriorityInventoryGroupM16FireMouseSenseLevel AmmoAmount bInstantHitMP5SAttachment PickupClass OfficialNameMaxAmmo AmmoNamePickupAmmoCount ReloadCountEndSway MP5SPickup AimedFOV DamageAmountValueClipXMouseSensitivity InstigatorPCbSilentAdvancedWeaponClipYSetPosAdvancedPlayerControllerDrawTileScaledf ScriptTextC ReturnValueWeaponbRenderWeaponMesh LevelInfoAdvancedWeaponAttachment ControllerscaleYscaleXtimerIDPlayerControllerCanvasLevelPawn SkeletalMeshBitmapMaterialActorVSizebAimingStaticReticuleUSizeTextureDOTZGunWeaponClassDOTZWeaponPickupDOTZBigBulletDamageDOTZAmmunitionBaseDOTZAmmoPickupBBPImpactFlesh BBParticles SniperScopePackageConst PlayerInput TextBufferObject Function ZoomOutDelayState reZoomLevelZOOM_OUT_TIMER bWasAimedcurrentZoomLevel texScaleX texScaleYClipAK-74SMArrayPropertyObjectPropertyFloatProperty BoolProperty ByteProperty IntPropertyMP5_MMP5SMP5_TMP5SBMP5RETMP5_A3PMP5S  @(-2 1+G"@"Z<3)!-2 xBЋL9ZL9Z33q{3q{3Jq Ic\; IcL9sߊ)Y:Y?!"]DOTZAHumans.3PM169%$ #<5$":xF" ?]MP5SA B"C7"8>2']MP5S#E2t< ]Press Action to take the MP5S0$@?  /]You got the MP5S @ & A**.6$9? + %1@-9D9?&9?7&K |%   & & '=GWc)6&?<-9?9?-(-' *$2ռW]"!Press Action to pick up MP5 ammo;"   371740(QU$-a ( OI// BD class MP5SWeapon 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 //=========================================================================== #Y 0 -'.  xclass MP5SPickup extends DOTZWeaponPickup placeable; //=========================================================================== // DefaultProperties //=========================================================================== "4jF % $.O %+ -  qclass MP5SAttachment extends AdvancedWeaponAttachment; //=========================================================================== // DefaultProperties //=========================================================================== kclass MP5SAmmunition extends DOTZAmmunitionBase; //=========================================================================== // DefaultProperties //=========================================================================== 1class MP5SAmmoPickup extends DOTZAmmoPickup; *(&a/!(  B &.D ,/,^  .0 [ tttlNtlyl`lFlIlllblxlwlelElQlkljlvEl_EKEhGgE[lmy4lpy(ldy#GXl{tLlDtOlGy&lZloy+yy FJ{,yRFOFIyPEa{.IftrIiy*lWy lnlYl[lqtCBtJluMlHcPjsjNcK  H&U T&L a&  n& ) {&@ H'A T'"^ `'-ql' | ])&M i) z u)IA*EeJ0 : o2&S |2 ! I3\ U3 ~ a3 @m3 H m4F y4] E5 GQ5=]X7 &Hu8$N}:+H K= } W=: c=) o= (2{= T4ZIm> #;GT4CB 4&E .*k +(UT4|} T4vy&V oT4;| *6w ?m ,*l- V- r/F N