*(27= X}SGR)m uuuwwzzzzzL)****01222222222222NoneEngine UTClassicCore XWeaponsSystemFireModeClassOriginalClassesUserReplacementClassesInventoryType PickupClassProjectileClassVector FireAnimRate FireRate UnrealGamePostBeginPlayDamage DamageMinNone Momentum DamageMaxTransTrailClass NetDamage Movement LightColorForce Collision LightingKarma TakeDamageClassicMinigunFireClassicMinigunAltfireClassicMinigunClassicFlakShellClassicFlakFireClassicFlakChunkClassicMinigunPickupClassicFlakCannonPickupClassicFlakCannonClassicFlakAltFireClassicTransBeaconClassicBlueBeaconClassicBioRiflePickupClassicBioRifleClassicBioGlobClassicBioFireClassicBioChargedFireAmmoChargeRate GroupNameClassicRedBeaconClassicRocketFireClassicRocketLauncherClassicRocketLauncherPickupClassicRocketMultifireClassicShieldGunNone DrawScaleNoneCalcDrawOffset AddGameRulesClassicShockBeamFire GetViewAxesCheckReplacementNone DamageRadiusNone FriendlyName DescriptionClassicShockProjectileSpawnProjectile ViewPlayerShakeOffsetRateShakeOffsetTime ShakeRotRate ShakeRotTimeNoneClassicShockProjFireClassicShockRifleNoneNoneClassicShockRiflePickup ShakeRotMagShakeOffsetMagNoneFullyChargedTimeNone MaxDamage MinDamageTransFlareClassClassicSniperFireDoTraceClassicSniperRifleClassicSniperRiflePickup MutUTClassicClassicTransFireWeaponCenteredClassicTranslauncherClassShieldFire LightHueUTClassicGameRules HitNormalOther Instigator HitLocationStartDirEnd DeathMatchTranslauncher UnrealPawnNone ShieldGunFloatProperty xWeaponBase XEffectsTransFlareBluedistTransTrailRed FlakCannonMinigunRocketLauncher ShockRifle SniperRifle BioRifleBioRiflePickupSniperRiflePickupShockRiflePickupRocketLauncherPickupMinigunPickupFlakCannonPickup FlakShell FlakChunkXGamexPawnNone WeaponType BoolProperty MinigunFireBioGlobNone instigatedByGameRulesModifiersShockProjectileBioChargedFire TransFire TraceRangeinjuredRocketMultiFireOriginalDamageShockBeamFireTeambSuperRelevant TeamIndex mSpawnVecAGameNextGameRules EffectOffsetObjectPropertyTransFireSoundRecallFireSoundNoneNoneNoneNoneHeadShotDamageMulthandDamageTypeHeadShotShockProjFire ShieldFire RocketFireMinigunAltFire FlakFire FlakAltFire TransBeacon GameRulesBioFire InstantFireNonebWorldGeometry ScriptTextNoneNoneNoneNoneNoneNonearcEndNone IntPropertyXiYZGNone LocationNoneNone ReturnValue xEmitterWeapon WeaponFire LevelInfo GameInfo ProjectilePlayerReplicationInfo DamageType TeamInfoMutatorLevelPawnActorNoneClassPropertyStructPropertyNoneClassPackage TextBufferObject FunctionRotatorStructTransTrailBlue StrProperty BytePropertyRequiredEquipmentNoneNoneNoneAimUpNonePutDownAnimRateSelectAnimRate MaxHoldTimeNone mLifeRangebModViewShakeNoneNonebCanWallDodgebCanDodgeDoubleJumpbCanDoubleJump MaxMultiJumpNoneNoneNoneNoneNoneAddPrecacheMaterialMinMaxRange ImpactSounds SpawnEffects DrawType ReplaceWith StaticMeshPlayerControllerColor LifeSpan FireAnims MaleSuicideIntBoxIsFirstPersonX2Dummy01X1Y2PickupMessage PickupSound PickupForcePostNetBeginPlay WeaponClassY1 LightPeriodLightSaturationTexture IconMaterial DeathString LightEffect RangeVector LightRadiusFemaleSuicidePutDown LightTypeGetLocalPlayerController ItemName IconCoordsLightBrightness RemoteRoleGetTipLocation RelativeSizeEndZoom RelativeTime mSizeRange mRegenDistRenderOverlaysClientPlayForceFeedback mAttenKamMaxParticlesmParticleTypeUseColorScaleFadeOutStartTime MaxParticlesRespawnDeadParticlesStartLocationShapeSphereRadiusRangeSpinParticlesRotationOffsetSpinsPerSecondRangeStartSpinRange UseSizeScaleUseRegularSizeScale SizeScale UniformSizeInitialParticlesPerSecondAutomaticInitialSpawning DrawStyleTextureUSubdivisionsTextureVSubdivisionsBlendBetweenSubdivisionsUseRandomSubdivisionLifetimeRange AutoDestroyThirdPersonEffects Emitters PlayFiringFlashMuzzleFlash bSpecialClientStartFireInventoryGroup righthand InitEffects GroupOffsetFlashEmitterClass BobDampingBotRefireRateMaxAmmo AmmoPerFire AmmoClass HeadhunterAllowTranslocInitialAmountClientStopFire SelectAnim FireSoundNone bNoDelete FireForceAttachmentClassPickupFadeOutFire1Fire2 SelectForceStaticPrecacheDDJHelpWDHelpDJHelp DDJString WDString DJStringEffectIsRelevantPlayerViewOffsetbReplicateMovementPlayerViewPivot ToggleZoomSniperWallHitEffect AIRating MutUseSniperMutUseLightningLongBulletDecal NetPriorityDamTypeClassicSniperMaxDesireabilityDamTypeClassicHeadshot AccelerationRelativeLocationClassicSniperSmokeBringUpClientWeaponThrownGetEffectStartClassicSniperAttachmentClassicSniperAmmoPickupClassicSniperAmmo aimerrorCurrentRatingAimAtSuggestDefenseStyleReceiveLocalizedMessagebAlwaysSeversfire3SuggestAttackStyleRelativeRotationStyleSkinsMesh GetAIRatingClassicBulletTrail BestModeCollisionHeightRecommendRangedAttackCustomCrossHairColor StopZoom FillPlayInfoNone PutDownAnimIncrementKills CenteredYaw Destroyed AmmoAmountAddPrecacheStaticMesh bTryHeadShotWarnTargetPct ChargeColor SelectSoundbReplicateInstigator WeaponLightKillerMessageCenteredOffsetYMuzFlashClassSmallViewOffsetGetDescriptionText HudColor DisplayFOVUpdatePrecacheMaterialsHighDetailOverlay bSniping TimeSecondsUTWeaponPickupNetMode UTAmmoPickup TweenTimeSetBoneRotation SoundGroup PrevWeaponPlayOwnedSoundKillerNone SniperZoomEffects mMuzFlash3rdxPRI SetDrawScaleMultiJumpRemainingLastFOVzoomedbarOrgXbarOrgY barSizeX barSizeYModeWeaponSpecMap2RoleRUT2004WeaponsxWeaponAttachment LocalMessagexPlayerReplicationInfo FireMode bNetInitialResultSpecialKillMessageNewWeaponSoundsNewSniperShotNewSniper_load PickupSounds ShockBeamTex XWeapons_rcScaleSniperAmmoPickupMuzFlash3ClassNewWeaponStaticNewSniperRifle 1stPersonnewsniperpickupCogAssaultZoomedCrosshairsniper2 NewSniper1 FireStart EyeHeightCanvasAShader CombinerEmitter PlayInfo SkeletalMeshCollisionRadiusSpriteEmitterTransientSoundVolumeBSoundInfoCEnemyVSizeUSizeBitmapMaterial DefaultFOVPhysicsVolume DesiredFOVWeaponStaticMesh Controller AmmunitionSpriteEmitter0hnhlImpact3YAxisImpact2Impact1 Impact7Snd Impact5Snd Impact3Snd Impact2Snd Impact1Snd FiringMode bWaterVolumeSLastRenderTimeLLightningZoomInLightningZoomOut LightningGun WeaponSoundsSmokeReOrdered PropNameFramed ExplosionTexShockMuzFlash3rdShockMuzFlashpclImpactSmoke WallSparks BulletDecalAssaultMuzFlash3rd SmokeLoc SmokeOffsetcXcYAssaultMuzFlash1stLineDirLinePos ReverseRot SniperAnimsWeaponShadersWeaponEnvShaderSniperRifle_1st XGameShadersWeaponAttachmentHUDNoneNoneCoordsOriginZDiffNone headcountWeaponDamageType AttachToBonePCTeamPlayerReplicationInfo Attachment NameProperty UnrealPlayer DrawColor SetDrawColorSetPosClipYNone FlashCountClipX WhiteTextureNoneYawmStartParticles FireCount FlashEmitterZAxis bIsFiring NextFireTimeBot NewLocation RotationGetBoneCoordsNone MinReloadPct BringUpTime EnemyVisible CullDistanceVehicleDamageScalingSetTightSpread GetFireModeServerPlayLoadingHitWall WeapString WeapHelpTranslocString TranslocHelp ModeTick MaxSpeedLanded bBulletHit bOwnerNoSeeCheckForHeadShot PriorityIsShootingObjective PrePivotbClassicTranslocator PlayLoadTracerProjectile DoFireEffect bNeverSeversMaxLoadbModifyWeaponDamage ShieldRangeSpeedIncrementFlashCount ProcessTouchIdleStoppedWantsZoomFadeClientDelayedAnnouncementNamedIsLocallyControlled IsHeadShotClassicGrenadeFire PutDownTimeTouch FlakTrailNewWeapons2004Trail WeaponEntry ViewTarget HeadShotPawndtGrenademRegenWallloadbViewed HUDContentOwner Sniper3rdWeaponsHitScanBlockingVolume Velocity bNowWaitingFOVBias HoldTimeVehicle FireAnim RulesGroup ChargeBar ThisModeNumArrayPropertyClassicSniperAmmoMGeneric WeaponLockerNone ModeDoFireNoneNoneNoneNoneTimer CanSplash bTraceWater BulletSplash HitActorNone OldLocationbReadyToSplashFluidSurfaceInfoNone SmokeOffsetZNoneNoneNoneNoneNoneTargetNoneNoneNoneNoneNoneNoneq q q 9q q q q ^q q q q q q q q q q q q q Lw*; s6utq q 1q q bq q q q q q q Ib6ۉխ1$?M $?q r."Ⱥa]F$Aq h"6yU gek$@?N $?M $? )q q q SO6`.2k$?N $ff>M $? 6q q q q-6!;k$?N $ff>M $? 'q m(6|1AG7#k$@?N $?M $? 3q uU]6x qYԈh||hhh||||ʁ)|h||h|h|hh||h,eh uhh uKihh uKih,eh uhh uh uh uh uh uKi3}Ki3}Kiҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽҽډډhh uKia*E8[aY^k$@?j$G?u $z?N $?be]NewSniperLoads$ף0?E$ף0?nE]AThis high muzzle velocity sniper rifle with a 10X scope is a lethal weapon at any range, especially if you can land a head shot.^: BAk$pB`  j*Eh: B A`f$[" U*EM P mq \b56"ye)KiKi3}Ki*Rk$@?N $?M $? (q n)#bp@ Aq ]4$&,$x $fff?$?q o+;%)G s6Zdq `3;&י: s6q p,2'ㄢ# q Y62(uv "q a&2)   q Xe7 *[ڇIqYԆKi3}qYԆKi3}qYԈh)h "l$ff@$\B?$?q q :q W86,<x@wCk$?N $ff>M $?q q +q V>.N#D3T"2"2$+?$Y?T: I: J$q q -q UF#0&$$BB$Bq q /q TN2lLS: K: L$ 0q l'23ug4 q k%:4| C=|Ǐ$pAq q q QR26G0l q j$7TAg 4q Oa[8cV6qYԉqYԉqYԉqYԈhqYԉqYԈhhqYԉqYԉqYԉqYԉqYԋ3}hqYԈhʁ)}Lhhʁ)ʁ)qYOqYԉqYf$@h@GcGdGJP"<"<S$ЄF$?\_]NewSniperShot$q=?VvU"L$@T: p AI: zzEJ$?S$>`$?QD$TDq q Pq q Zq t0;]3D6$P q NX^2 <G5Pv3}3}3}3}3}3}3}3}3}3}3}y$@?  O]You got the Sniper Rifle.PQ]SniperRiflePickupAC:$= W>q s/>$0 q J_`?v,ۉխhhzVGBqYԈhzVGBJqYԉqYԢۉխqYԢۉխۉխutۉխqY  q q zq i^#*A!Wq q @q GcC4ODXj $CY$AX$BV$@q HRe2D}FLo>+o>+q Fb_6EL{jWввввв̟̟̟̟̋3}ư;;3}Zs3}Zs3}Zso>+3}Zs    "    ,trsi c l]Allow Double Jumpingk]Allow Wall Dodgingj]Allow Dodge Double Jumpingi];:If enabled, players can double jump at the peak of jumps.h]*)If enabled, players can dodge off walls.g]B@If enabled, players can double jump at the peak of dodge jumps.V ]Modify Weapon DamageW ]%$If enabled, weapons do more damage.X ]Modify TranslocatorY ],+If enabled, translocator recharges faster.2]ArenaD= UT ClassicE]0/Classic UT style weapons and movement options.q q K-class MutUTClassic extends Mutator; var class OriginalClasses[8]; var class ReplacementClasses[8]; var config bool bCanDoubleJump; var config bool bCanWallDodge; var config bool bCanDodgeDoubleJump; var config bool bModifyWeaponDamage; var config bool bClassicTranslocator; var localized string DJString, WDString, DDJString, DJHelp, WDHelp, DDJHelp, WeapString, WeapHelp, TranslocString, TranslocHelp; function PostBeginPlay() { local GameRules G; Super.PostBeginPlay(); if ( bModifyWeaponDamage ) { G = spawn(class'UTClassicGameRules'); if ( Level.Game.GameRulesModifiers == None ) Level.Game.GameRulesModifiers = G; else Level.Game.GameRulesModifiers.AddGameRules(G); } Level.Game.bModViewShake = false; } function bool CheckReplacement( Actor Other, out byte bSuperRelevant ) { local int i; bSuperRelevant = 0; if ( xPawn(Other) != None ) { if ( !bCanDoubleJump ) { xPawn(Other).MaxMultiJump = 0; xPawn(Other).MultiJumpRemaining = 0; } xPawn(Other).bCanWallDodge = bCanWallDodge; xPawn(Other).bCanDodgeDoubleJump = bCanDodgeDoubleJump; xPawn(Other).RequiredEquipment[1] = "UTClassic.ClassicShieldGun"; if ( bClassicTranslocator && Deathmatch(Level.Game).AllowTransloc() ) xPawn(Other).RequiredEquipment[2] = "UTClassic.ClassicTranslauncher"; } else if ( xWeaponBase(Other) != None ) { for ( i=0; i<8; i++ ) if ( xWeaponBase(Other).WeaponType == OriginalClasses[i] ) { xWeaponBase(Other).WeaponType = ReplacementClasses[i]; return true; } } else if ( SniperAmmoPickup(Other) != None ) { ReplaceWith( Other, "UTClassic.ClassicSniperAmmoPickup"); return false; } else if ( bClassicTranslocator && (Translauncher(Other) != None) ) { if ( ClassicTransLauncher(Other) == None ) return false; } return true; } static function FillPlayInfo(PlayInfo PlayInfo) { Super.FillPlayInfo(PlayInfo); PlayInfo.AddSetting(default.RulesGroup, "bCanDoubleJump", default.DJString, 0, 1, "Check"); PlayInfo.AddSetting(default.RulesGroup, "bCanWallDodge", default.WDString, 0, 1, "Check"); PlayInfo.AddSetting(default.RulesGroup, "bCanDodgeDoubleJump", default.DDJString, 0, 1, "Check"); PlayInfo.AddSetting(default.RulesGroup, "bModifyWeaponDamage", default.WeapString, 0, 1, "Check"); PlayInfo.AddSetting(default.RulesGroup, "bClassicTranslocator", default.TranslocString, 0, 1, "Check"); } static event string GetDescriptionText(string PropName) { switch (PropName) { case "bCanDoubleJump": return default.DJHelp; case "bCanWallDodge": return default.WDHelp; case "bCanDodgeDoubleJump": return default.DDJHelp; case "bModifyWeaponDamage": return default.WeapHelp; case "bClassicTranslocator": return default.TranslocHelp; } return Super.GetDescriptionText(PropName); } q .class ClassShieldFire extends ShieldFire; q Sclass UTClassicGameRules extends GameRules; function int NetDamage( int OriginalDamage, int Damage, pawn injured, pawn instigatedBy, vector HitLocation, out vector Momentum, class DamageType ) { Damage = Damage * 1.2; if ( NextGameRules != None ) return NextGameRules.NetDamage( OriginalDamage,Damage,injured,instigatedBy,HitLocation,Momentum,DamageType ); return Damage; } q Sclass ClassicTranslauncher extends Translauncher HideDropDown CacheExempt; q Jclass ClassicTransFire extends TransFire; function projectile SpawnProjectile(Vector Start, Rotator Dir) { local TransBeacon TransBeacon; if (TransLauncher(Weapon).TransBeacon == None) { if ( (Instigator == None) || (Instigator.PlayerReplicationInfo == None) || (Instigator.PlayerReplicationInfo.Team == None) ) TransBeacon = Weapon.Spawn(class'ClassicTransBeacon',,, Start, Dir); else if ( Instigator.PlayerReplicationInfo.Team.TeamIndex == 0 ) TransBeacon = Weapon.Spawn(class'ClassicRedBeacon',,, Start, Dir); else TransBeacon = Weapon.Spawn(class'ClassicBlueBeacon',,, Start, Dir); TransLauncher(Weapon).TransBeacon = TransBeacon; Weapon.PlaySound(TransFireSound,SLOT_Interact,,,,,false); } else { TransLauncher(Weapon).ViewPlayer(); TransLauncher(Weapon).TransBeacon.Destroy(); TransLauncher(Weapon).TransBeacon = None; Weapon.PlaySound(RecallFireSound,SLOT_Interact,,,,,false); } return TransBeacon; } q B-Ma DZr* =-( Gq gclass ClassicTransbeacon extends Transbeacon; function bool AimUp() { return Super.AimUp(); } q K@ c9$w.*M-z.%.%.--x.--y&.UTClassic.ClassicShieldGun-H.X,.UTClassic.ClassicTranslauncherw.*%,r.B.@'1w.*BUTClassic.ClassicSniperAmmoPickup(-Hw.*r.*(' Gq `class ClassicSniperRiflePickup extends UTWeaponPickup; #exec OBJ LOAD FILE=NewWeaponStatic.usx static function StaticPrecache(LevelInfo L) { L.AddPrecacheMaterial(Material'XGameShaders.WeaponEnvShader'); L.AddPrecacheMaterial(Texture'NewSniperRifle.COGAssaultZoomedCrosshair'); L.AddPrecacheMaterial(Texture'NewSniperRifle.NewSniper1'); L.AddPrecacheMaterial(Texture'NewSniperRifle.Sniper2'); L.AddPrecacheMaterial(Texture'Engine.WhiteTexture'); L.AddPrecacheStaticMesh(StaticMesh'NewWeaponStatic.newsniperpickup'); } simulated function UpdatePrecacheMaterials() { Level.AddPrecacheMaterial(Material'XGameShaders.WeaponEnvShader'); Level.AddPrecacheMaterial(Texture'NewSniperRifle.COGAssaultZoomedCrosshair'); Level.AddPrecacheMaterial(Texture'NewSniperRifle.NewSniper1'); Level.AddPrecacheMaterial(Texture'NewSniperRifle.Sniper2'); Level.AddPrecacheMaterial(Texture'Engine.WhiteTexture'); super.UpdatePrecacheMaterials(); } q w*class ClassicSniperFire extends InstantFire; var() float HeadShotDamageMult; var() class DamageTypeHeadShot; var name FireAnims[3]; function InitEffects() { Super.InitEffects(); if ( FlashEmitter != None ) Weapon.AttachToBone(FlashEmitter, 'dummy01'); } function FlashMuzzleFlash() { local rotator r; r.Yaw = 16384; Weapon.SetBoneRotation('dummy01', r, 0, 1.f); Super.FlashMuzzleFlash(); } function DoTrace(Vector Start, Rotator Dir) { local Vector X,Y,Z, End, HitLocation, HitNormal, ArcEnd; local Actor Other; local SniperWallHitEffect S; local Pawn HeadShotPawn; Weapon.GetViewAxes(X, Y, Z); if ( Weapon.WeaponCentered() ) ArcEnd = (Instigator.Location + Weapon.EffectOffset.X * X + 1.5 * Weapon.EffectOffset.Z * Z); else ArcEnd = (Instigator.Location + Instigator.CalcDrawOffset(Weapon) + Weapon.EffectOffset.X * X + Weapon.Hand * Weapon.EffectOffset.Y * Y + Weapon.EffectOffset.Z * Z); X = Vector(Dir); End = Start + TraceRange * X; Other = Weapon.Trace(HitLocation, HitNormal, End, Start, true); if ( (Level.NetMode != NM_Standalone) || (PlayerController(Instigator.Controller) == None) ) Weapon.Spawn(class'TracerProjectile',Instigator.Controller,,Start,Dir); if ( Other != None && (Other != Instigator) ) { if ( !Other.bWorldGeometry ) { if (Vehicle(Other) != None) HeadShotPawn = Vehicle(Other).CheckForHeadShot(HitLocation, X, 1.0); if (HeadShotPawn != None) HeadShotPawn.TakeDamage(DamageMax * HeadShotDamageMult, Instigator, HitLocation, Momentum*X, DamageTypeHeadShot); else if ( (Pawn(Other) != None) && Pawn(Other).IsHeadShot(HitLocation, X, 1.0)) Other.TakeDamage(DamageMax * HeadShotDamageMult, Instigator, HitLocation, Momentum*X, DamageTypeHeadShot); else Other.TakeDamage(DamageMax, Instigator, HitLocation, Momentum*X, DamageType); } else HitLocation = HitLocation + 2.0 * HitNormal; } else { HitLocation = End; HitNormal = Normal(Start - End); } if ( (HitNormal != Vect(0,0,0)) && (HitScanBlockingVolume(Other) == None) ) { S = Weapon.Spawn(class'SniperWallHitEffect',,, HitLocation, rotator(-1 * HitNormal)); if ( S != None ) S.FireStart = Start; } } function PlayFiring() { Weapon.PlayAnim(FireAnims[Rand(3)], FireAnimRate, TweenTime); Weapon.PlayOwnedSound(FireSound,SLOT_Interact,TransientSoundVolume,,,Default.FireAnimRate/FireAnimRate,false); ClientPlayForceFeedback(FireForce); FireCount++; } q q q Kclass ClassicShockRiflePickup extends ShockRiflePickup notplaceable; q 5]9D9??Tw*)51/-+: Gq Mclass ClassicShockRifle extends ShockRifle HideDropDown CacheExempt; q 6class ClassicShockProjFire extends ShockProjFire; q :class ClassicShockProjectile extends ShockProjectile; q 6class ClassicShockBeamFire extends ShockBeamFire; q Mclass ClassicShieldGun extends ShieldGun HideDropDown CacheExempt; q @ class ClassicRocketMultifire extends RocketMultifire; function ModeTick(float dt) { // auto fire if loaded last rocket if (HoldTime > 0.0 && Load >= Weapon.AmmoAmount(ThisModeNum) && !bNowWaiting) { bIsFiring = false; } Super(ProjectileFire).ModeTick(dt); if ( (Load <= 5) && HoldTime >= FireRate*Load) { if (Instigator.IsLocallyControlled()) RocketLauncher(Weapon).PlayLoad(false); else ServerPlayLoading(); Load = Load + 1.0; } } event ModeDoFire() { MaxHoldTime = 0; Super.ModeDoFire(); MaxHoldTime = Default.MaxHoldTime; } function DoFireEffect() { Weapon.GetFireMode(0).NextFireTime = Level.TimeSeconds + FireRate; Weapon.GetFireMode(1).NextFireTime = Level.TimeSeconds + FireRate; Super.DoFireEffect(); } q Sclass ClassicRocketLauncherPickup extends RocketLauncherPickup notplaceable; q q q Tclass ClassicRocketLauncher extends RocketLauncher HideDropDown CacheExempt; simulated event ClientStartFire(int Mode) { if ( Mode == 0 ) { SetTightSpread(false); } else if ( FireMode[0].bIsFiring || (FireMode[0].NextFireTime > Level.TimeSeconds) ) { if ( FireMode[0].Load > 0 ) SetTightSpread(true); return; } Super(Weapon).ClientStartFire(Mode); } q 0class ClassicRocketFire extends RocketFire; q U  Gq G"r.*r*r*r*a %a & a % .a$ (}.H.a.*a$ ( Gq 7class ClassicRedBeacon extends ClassicTransBeacon; q Eclass ClassicMinigunPickup extends MinigunPickup notplaceable; q q q 2class ClassicMinigunFire extends MinigunFire; q ^ \?a  6 ի?6    <6 ի6 6 99 a '9:9:$r.*!a K 3w* w-(w.*A._ ?pwA*A19D9?kiw.*$.s ?19D9?ki&0@R  #r.*^a O 9P9?w^*^ E  Gc e̓q q 8class ClassicMinigunAltFire extends MinigunAltFire; f!gXW,.q q Gclass ClassicMinigun extends Minigun HideDropDown CacheExempt; q sclass ClassicFlakShell extends FlakShell; simulated function PostBeginPlay() { Super.PostBeginPlay(); } q ,class ClassicFlakFire extends FlakFire; q .class ClassicFlakChunk extends FlakChunk; q Kclass ClassicFlakCannonPickup extends FlakCannonPickup notplaceable; q Mclass ClassicFlakCannon extends FlakCannon HideDropDown CacheExempt; q 2class ClassicFlakAltFire extends FlakAltFire; q 8class ClassicBlueBeacon extends ClassicTransBeacon; q Gclass ClassicBioRiflePickup extends BioRiflePickup notplaceable; q Iclass ClassicBioRifle extends BioRifle HideDropDown CacheExempt; q *class ClassicBioGlob extends BioGlob; q *class ClassicBioFire extends BioFire; q 8class ClassicBioChargedFire extends BioChargedFire; q xuclass ClassicSniperRifle extends Weapon config(user); var transient float LastFOV; var() bool zoomed; var color ChargeColor; #exec OBJ LOAD FILE=NewSniperRifle.utx #exec OBJ LOAD FILE=..\Sounds\NewWeaponSounds.uax simulated function PostBeginPlay() { Super.PostBeginPlay(); FireMode[1].FireAnim = 'Idle'; } simulated function ClientWeaponThrown() { if( (Instigator != None) && (PlayerController(Instigator.Controller) != None) ) PlayerController(Instigator.Controller).EndZoom(); Super.ClientWeaponThrown(); } simulated function IncrementFlashCount(int Mode) { if ( Mode == 1 ) return; Super.IncrementFlashCount(Mode); } simulated event RenderOverlays( Canvas Canvas ) { local float CX,CY,Scale; local float chargeBar; local float barOrgX, barOrgY; local float barSizeX, barSizeY; if ( PlayerController(Instigator.Controller) == None ) { Super.RenderOverlays(Canvas); zoomed=false; return; } if ( LastFOV > PlayerController(Instigator.Controller).DesiredFOV ) { PlaySound(Sound'WeaponSounds.LightningGun.LightningZoomIn', SLOT_Misc,,,,,false); } else if ( LastFOV < PlayerController(Instigator.Controller).DesiredFOV ) { PlaySound(Sound'WeaponSounds.LightningGun.LightningZoomOut', SLOT_Misc,,,,,false); } LastFOV = PlayerController(Instigator.Controller).DesiredFOV; if ( PlayerController(Instigator.Controller).DesiredFOV == PlayerController(Instigator.Controller).DefaultFOV ) { Super.RenderOverlays(Canvas); zoomed=false; } else { if ( FireMode[0].NextFireTime <= Level.TimeSeconds ) { chargeBar = 1.0; } else { chargeBar = 1.0 - ((FireMode[0].NextFireTime-Level.TimeSeconds) / FireMode[0].FireRate); } CX = Canvas.ClipX/2; CY = Canvas.ClipY/2; Scale = Canvas.ClipX/1024; Canvas.Style = ERenderStyle.STY_Alpha; Canvas.SetDrawColor(0,0,0); // Draw the crosshair Canvas.SetPos(CX-169*Scale,CY-155*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair',169*Scale,310*Scale, 164,35, 169,310); Canvas.SetPos(CX,CY-155*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair',169*Scale,310*Scale, 332,345, -169,-310); // Draw Cornerbars Canvas.SetPos(160*Scale,160*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', 111*Scale, 111*Scale , 0 , 0, 111, 111); Canvas.SetPos(Canvas.ClipX-271*Scale,160*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', 111*Scale, 111*Scale , 111 , 0, -111, 111); Canvas.SetPos(160*Scale,Canvas.ClipY-271*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', 111*Scale, 111*Scale, 0 , 111, 111, -111); Canvas.SetPos(Canvas.ClipX-271*Scale,Canvas.ClipY-271*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', 111*Scale, 111*Scale , 111 , 111, -111, -111); // Draw the 4 corners Canvas.SetPos(0,0); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair',160*Scale,160*Scale, 0, 274, 159, -158); Canvas.SetPos(Canvas.ClipX-160*Scale,0); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair',160*Scale,160*Scale, 159,274, -159, -158); Canvas.SetPos(0,Canvas.ClipY-160*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair',160*Scale,160*Scale, 0,116, 159, 158); Canvas.SetPos(Canvas.ClipX-160*Scale,Canvas.ClipY-160*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair',160*Scale,160*Scale, 159, 116, -159, 158); // Draw the Horz Borders Canvas.SetPos(160*Scale,0); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', Canvas.ClipX-320*Scale, 160*Scale, 284, 512, 32, -160); Canvas.SetPos(160*Scale,Canvas.ClipY-160*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', Canvas.ClipX-320*Scale, 160*Scale, 284, 352, 32, 160); // Draw the Vert Borders Canvas.SetPos(0,160*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', 160*Scale, Canvas.ClipY-320*Scale, 0,308, 160,32); Canvas.SetPos(Canvas.ClipX-160*Scale,160*Scale); Canvas.DrawTile(texture'NewSniperRifle.COGAssaultZoomedCrosshair', 160*Scale, Canvas.ClipY-320*Scale, 160,308, -160,32); // Draw the Charging meter Canvas.DrawColor = ChargeColor; Canvas.DrawColor.A = 255; if(chargeBar <1) Canvas.DrawColor.R = 255*chargeBar; else { Canvas.DrawColor.R = 0; Canvas.DrawColor.B = 0; } if(chargeBar == 1) Canvas.DrawColor.G = 255; else Canvas.DrawColor.G = 0; Canvas.Style = ERenderStyle.STY_Alpha; Canvas.SetPos( barOrgX, barOrgY ); Canvas.DrawTile(Texture'Engine.WhiteTexture',barSizeX,barSizeY*chargeBar, 0.0, 0.0,Texture'Engine.WhiteTexture'.USize,Texture'Engine.WhiteTexture'.VSize*chargeBar); zoomed = true; } } simulated function ClientStartFire(int mode) { if (mode == 1) { FireMode[mode].bIsFiring = true; if( Instigator.Controller.IsA( 'PlayerController' ) ) PlayerController(Instigator.Controller).ToggleZoom(); } else { Super.ClientStartFire(mode); } } simulated function ClientStopFire(int mode) { if (mode == 1) { FireMode[mode].bIsFiring = false; if( PlayerController(Instigator.Controller) != None ) PlayerController(Instigator.Controller).StopZoom(); } else { Super.ClientStopFire(mode); } } simulated function BringUp(optional Weapon PrevWeapon) { if ( PlayerController(Instigator.Controller) != None ) LastFOV = PlayerController(Instigator.Controller).DesiredFOV; Super.BringUp(PrevWeapon); } simulated function bool PutDown() { if( Instigator.Controller.IsA( 'PlayerController' ) ) PlayerController(Instigator.Controller).EndZoom(); if ( Super.PutDown() ) return true; return false; } // AI Interface function float SuggestAttackStyle() { return -0.4; } function float SuggestDefenseStyle() { return 0.2; } /* BestMode() choose between regular or alt-fire */ function byte BestMode() { return 0; } function float GetAIRating() { local Bot B; local float ZDiff, dist, Result; B = Bot(Instigator.Controller); if ( B == None ) return AIRating; if ( B.IsShootingObjective() ) return AIRating - 0.15; if ( B.Enemy == None ) { if ( (B.Target != None) && VSize(B.Target.Location - B.Pawn.Location) > 8000 ) return 0.78; return AIRating; } if ( B.Stopped() ) result = AIRating + 0.1; else result = AIRating - 0.1; if ( Vehicle(B.Enemy) != None ) result -= 0.2; ZDiff = Instigator.Location.Z - B.Enemy.Location.Z; if ( ZDiff < -200 ) result += 0.1; dist = VSize(B.Enemy.Location - Instigator.Location); if ( dist > 2000 ) { if ( !B.EnemyVisible() ) result = result - 0.15; return ( FMin(2.0,result + (dist - 2000) * 0.0002) ); } if ( !B.EnemyVisible() ) return AIRating - 0.1; return result; } function bool RecommendRangedAttack() { local Bot B; B = Bot(Instigator.Controller); if ( (B == None) || (B.Enemy == None) ) return true; return ( VSize(B.Enemy.Location - Instigator.Location) > 2000 * (1 + FRand()) ); } // end AI Interface simulated function bool WantsZoomFade() { return true; } q q q vhL  Gq y@q q M@q q x@q q Sq q zq q rq q q q tq q wq q Uq q Kq q q q  q q Tq q _q q Yq q q q X q q q q q q Fq q c q mnr -9:9:$GOvbQ 3}3} u uʁ) ubQ u uh uhAdF$L>q q ]q q q q |q q Rq q cq q q q Lq q Hq q s]q [q q q q eq q q q ~q q Aq Oq Vq v}@`5HYyF^Sq q `@q q q q Bq gB2dt«qG w]" vO]You picked up sniper ammo.PQ]SniperAmmoPickupACb : AS$Aq q Dq q q q N@q q g@q q f[q i[q mq q q q h@q q n@q q o@q q p@q q uq q q q fq q q [C2vY\"T"#Y"_ dXbZIM"T"K"N"q aMSniper Bulletsq q kq wZAx @3}hhhhh,e3}hhhBBBBBFe $ A_Z dVc$C\$@UO|: @L:_:$ #>q q Eq sv`zhGtP $F$@Aq q |q q }q q ~q q q tx35"1'iS Y]%k put a hole in %o]]%o shot herself in the foot.H]%o shot himself in the foot.g ] Q $ff&?q uWz3@DŽ1'i u,e,eB,B,IPeS Y] %k put a bullet in %o's skull.]]%o shot herself in the head.H]%o shot himself in the head.IKQ $ff&?q q q q q q DA~LI;w.*J.A Gq O\Zi[\&\-(Xw.*.Vf\ Gq CF^J:a/!D.gE'( Gq q q EHK  ̾ Gq q q GJGK L> Gq q q ILR$ Gq q q KNP#G.*rG*IGa >rG*wG*<G G 9?@G?Go L=L=w.G*LL>_6 6G o_9?8L=VG  V9?GO LL>@LV9?Q9GO =L Gq Gq q RZLm_Z&Z-'\a/!D.qjZ GQiQ-9:9:$G@PеUBhhhqYԈhqYԈh̋3}@@hhh3} u uh uh3}gon"n$@?j$Ci$Ai@Bm$=coSdw$@@F$@?WNYMq q S"class ClassicBulletTrail extends xEmitter; var Vector HitNormal; var class MuzFlashClass; var class MuzFlash3Class; replication { reliable if (bNetInitial && Role == ROLE_Authority) HitNormal; } function AimAt(Vector hl, Vector hn) { HitNormal = hn; mSpawnVecA = hl; if (Level.NetMode != NM_DedicatedServer) SpawnEffects(); } simulated function PostNetBeginPlay() { MakeNoise(0.5); if (Role < ROLE_Authority) SpawnEffects(); } simulated function SpawnEffects() { local xWeaponAttachment Attachment; local PlayerController PC; local vector Dir, LineDir, NewLocation, LinePos; if (Instigator != None) { if ( Instigator.IsFirstPerson() ) { if ( (Instigator.Weapon != None) && (Instigator.Weapon.Instigator == Instigator) ) SetLocation(Instigator.Weapon.GetEffectStart()); else SetLocation(Instigator.Location); } else { Attachment = xPawn(Instigator).WeaponAttachment; if (Attachment != None && (Level.TimeSeconds - Attachment.LastRenderTime) < 1) NewLocation = Attachment.GetTipLocation(); else NewLocation = Instigator.Location + Instigator.EyeHeight*Vect(0,0,1) + Normal(mSpawnVecA - Instigator.Location) * 25.0; // see if local player controller near bullet, but missed PC = Level.GetLocalPlayerController(); if ( (PC != None) && (PC.Pawn != None) ) { Dir = Normal(mSpawnVecA - NewLocation); LinePos = (NewLocation + (Dir dot (PC.Pawn.Location - NewLocation)) * Dir); LineDir = PC.Pawn.Location - LinePos; if ( VSize(LineDir) < 150 ) { SetLocation(LinePos); if ( FRand() < 0.5 ) PlaySound(sound'Impact3Snd',,,,80); else PlaySound(sound'Impact7Snd',,,,80); } } SetLocation(NewLocation); Spawn(MuzFlash3Class); } } if ( EffectIsRelevant(mSpawnVecA + HitNormal*2,false) && (HitNormal != Vect(0,0,0)) ) Spawn(class'SniperWallHitEffect',,, mSpawnVecA, rotator(-1 * HitNormal)); } q V{k&X .r.*{-X( fJ.a $ (J.a $ (J...{-X( A%z?z?%%S{9?,R{9?,|{9?{${ $$${*S9?,|R9?,|{4a )C|C|$C B)CC{SR9?,|{4a )C|C|CC){ C| C|{4a B|B|BB{0{9?| C|{4a B|B|BB{0 C|{9?|{4a B|B|BB{B{9?|{9?|{4a B|B|BB{{4a  C| C|CC{&{9?,|{4a  C| C|CC{&{9?,|{4a  C| C|BCC{<{9?,|{9?,|{4a  C| C|CBC{ C|{Fa {9?@| C|CDB {- C|{9?,|{Fa {9?@| C|CCB C{ C|{Fa  C|{9?@|C CB{-{9?,| C|{Fa  C|{9?@| CC B{s6{9=,z9?&6{9C9?,z6{$6{$z9?&6{9=, 6{${${{|{Ja }~z9? 9? z-X' G q MTTm{Q.<rQ*rQ*'Q  9?9?& Gq Qq q a}LCw*w.*.g Gq Df{D { D { D { D { D { D ^  G q lCZ r.C* .CHl%C**K.CwK*KK,w.C*.C q !W$ G q Vl^m {  {  {  {  {  Gq q q \Ye3999?,d Gq \class ClassicSniperAmmo extends Ammunition; #EXEC OBJ LOAD FILE=InterfaceContent.utx q _PGe9:%9:9:$;9:%dJP #?99 6Pra ` PL>r}*}a ~ 0!N]9?6~9?,#}9a 6~]6~9?,6~@} ?}a+9P9?6~}P6~]a ` P G q kO -*w*!L Gq ]bJ`86b@!Lb%? Gq }\ w}*}a Gq @q q dIP _a,f!$ (l Gq daiQ a bCanDoubleJumpn 8bCanWallDodgeh VbCanDodgeDoubleJumpg tbModifyWeaponDamageP bClassicTranslocatorI a G(q Bq q MIWFII(bbCanDoubleJumpq$$CheckI'bbCanWallDodgep$$CheckI-bbCanDodgeDoubleJumpo$$CheckI-bbModifyWeaponDamageN$$CheckI.bbClassicTranslocatorJ$$Check G q NrF,8Nur59:9:$@ Gq {q q 8class ClassicSniperAmmoPickup extends UTAmmoPickup; q eR!b?9:9:$@ Gq hM@#;w*Jrw*ra  @a  ;M.wM*$M9?&BM e=B #? AF`+wF*wF*TBUBTF BTcF U+c9?,a U?a  B+a  Ba BaBmN9?,(N#a O 9P9?N Gq @@lt$Qw.@*Nr.@ .@ gw.@*B@UTClassic.ClassicSniperRiflePickupgw.@*B@UTClassic.ClassicSniperAmmoPickupgew.@*.@{%`{7Vr6{ 6{ {'g'( Gq |q q A@\w$Qw.A*Nr.A .A Ww.<A*BAXWeapons.SniperRiflePickupWw.dA*BAXWeapons.SniperAmmoPickupWUw.A*~.A|%P|7~Fr6|~ 6|~ |'W'( Gq E$//============================================================================= // xHeavyWallHitEffect. //============================================================================= class SniperWallHitEffect extends Effects; var sound ImpactSounds[6]; var vector FireStart; replication { reliable if ( Role == ROLE_Authority ) FireStart; } simulated function SpawnEffects() { local rotator ReverseRot; local PlayerController PC; local vector Dir, LinePos, LineDir; local bool bViewed; PlaySound(ImpactSounds[Rand(6)],, 2.5*TransientSoundVolume,,200); PC = Level.GetLocalPlayerController(); if ( (PC != None) && (PC.ViewTarget != None) && (VSize(PC.Viewtarget.Location - Location) < 3000*PC.FOVBias) ) { Spawn(class'LongBulletDecal'); bViewed = true; } if ( !PhysicsVolume.bWaterVolume ) { ReverseRot = rotator(-1 * vector(Rotation)); if ( bViewed ) Spawn(class'pclImpactSmoke',,,,ReverseRot); Spawn(class'WallSparks',,,,ReverseRot); } if ( FireStart != vect(0,0,0) ) { // see if local player controller near bullet, but missed if ( (PC != None) && (PC.Pawn != None) ) { Dir = Normal(Location - FireStart); LinePos = (FireStart + (Dir dot (PC.Pawn.Location - FireStart)) * Dir); LineDir = PC.Pawn.Location - LinePos; if ( VSize(LineDir) < 150 ) { SetLocation(LinePos); if ( FRand() < 0.5 ) PlaySound(sound'Impact3Snd',,,,80); else PlaySound(sound'Impact7Snd',,,,80); } } } } simulated function PostNetBeginPlay() { if ( Role == ROLE_Authority ) { if ( Instigator != None ) MakeNoise(0.5); } if ( Level.NetMode != NM_DedicatedServer ) { SpawnEffects(); SetTimer(0.01,false); } Super.PostNetBeginPlay(); } simulated function Timer() { local Actor HitActor; local vector HitLocation, HitNormal; if ( FireStart == vect(0,0,0) ) return; // check for splash bTraceWater = true; HitActor = Trace(HitLocation,HitNormal,Location,FireStart,true); bTraceWater = false; if ( HitLocation == FireStart ) return; if ( (FluidSurfaceInfo(HitActor) != None) || ((PhysicsVolume(HitActor) != None) && PhysicsVolume(HitActor).bWaterVolume) ) Spawn(class'BulletSplash',,,HitLocation,rot(16384,0,0)); } q s class MutUseSniper extends Mutator; function bool CheckReplacement( Actor Other, out byte bSuperRelevant ) { local int i; local WeaponLocker L; bSuperRelevant = 0; if ( xWeaponBase(Other) != None ) { if ( xWeaponBase(Other).WeaponType == class'XWeapons.SniperRifle' ) xWeaponBase(Other).WeaponType = class'UTClassic.ClassicSniperRifle'; } else if ( SniperRiflePickup(Other) != None ) ReplaceWith( Other, "UTClassic.ClassicSniperRiflePickup"); else if ( SniperAmmoPickup(Other) != None ) ReplaceWith( Other, "UTClassic.ClassicSniperAmmoPickup"); else if ( WeaponLocker(Other) != None ) { L = WeaponLocker(Other); for (i = 0; i < L.Weapons.Length; i++) if (L.Weapons[i].WeaponClass == class'SniperRifle') L.Weapons[i].WeaponClass = class'ClassicSniperRifle'; return true; } else return true; return false; } njt2oU_&jW;;|Rߚ|Rߚ|R2]ArenaD]Sniper RiflesE]0/Replace all lightning guns with sniper rifles.q q t class MutUseLightning extends Mutator; function bool CheckReplacement( Actor Other, out byte bSuperRelevant ) { local int i; local WeaponLocker L; bSuperRelevant = 0; if ( xWeaponBase(Other) != None ) { if ( xWeaponBase(Other).WeaponType == class'UTClassic.ClassicSniperRifle' ) xWeaponBase(Other).WeaponType = class'XWeapons.SniperRifle'; } else if ( ClassicSniperRiflePickup(Other) != None ) ReplaceWith( Other, "XWeapons.SniperRiflePickup"); else if ( ClassicSniperAmmoPickup(Other) != None ) ReplaceWith( Other, "XWeapons.SniperAmmoPickup"); else if ( WeaponLocker(Other) != None ) { L = WeaponLocker(Other); for (i = 0; i < L.Weapons.Length; i++) if (L.Weapons[i].WeaponClass == class'ClassicSniperRifle') L.Weapons[i].WeaponClass = class'SniperRifle'; return true; } else return true; return false; } plu2q^tĭjW;;|Rߚ|Rߚ|R2]ArenaDMLightning GunsE]0/Replace all sniper rifles with lightning guns.q q yW@ a,y  @ HCH`wH*wH*:H 9? Ha z-D'-W9P9?99-Da  Wa  WE#wH*wH*YE[EYH EYeH [e9?,a [?a  Ba  B Gq /class LongBulletDecal extends BulletDecal; q Fclass DamTypeClassicSniper extends WeaponDamageType abstract; q j class DamTypeClassicHeadshot extends WeaponDamageType abstract; var class KillerMessage; var sound HeadHunter; // OBSOLETE static function IncrementKills(Controller Killer) { local xPlayerReplicationInfo xPRI; if ( PlayerController(Killer) == None ) return; PlayerController(Killer).ReceiveLocalizedMessage( Default.KillerMessage, 0, Killer.PlayerReplicationInfo, None, None ); xPRI = xPlayerReplicationInfo(Killer.PlayerReplicationInfo); if ( xPRI != None ) { xPRI.headcount++; if ( (xPRI.headcount == 15) && (UnrealPlayer(Killer) != None) ) UnrealPlayer(Killer).ClientDelayedAnnouncementNamed('HeadHunter',15); } } q .class ClassicSniperSmoke extends Emitter; q Sclass ClassicSniperAttachment extends xWeaponAttachment; var xEmitter mMuzFlash3rd; var float SmokeOffsetZ; simulated function Destroyed() { if (mMuzFlash3rd != None) mMuzFlash3rd.Destroy(); Super.Destroyed(); } simulated event ThirdPersonEffects() { local vector SmokeLoc, SmokeOffset; local coords C; if ( (FlashCount != 0) && (Level.NetMode != NM_DedicatedServer) ) { if (FiringMode == 0) WeaponLight(); if ( Instigator.IsFirstPerson() ) { SmokeLoc = Instigator.Location + Instigator.Eyeheight * vect(0,0,1) + Instigator.CollisionRadius * vector(Instigator.Controller.Rotation); SmokeLoc.Z += SmokeOffsetZ; Spawn(class'ClassicSniperSmoke',,,SmokeLoc); } else if ( Level.TimeSeconds - Instigator.LastRenderTime < 0.2 ) { if (mMuzFlash3rd == None) mMuzFlash3rd = Spawn(class'XEffects.AssaultMuzFlash3rd'); C = Instigator.GetBoneCoords('righthand'); SmokeOffset = -1 * C.ZAxis * (Instigator.CollisionRadius + 35); mMuzFlash3rd.SetLocation( C.Origin + SmokeOffset + C.ZAxis * 23 + C.YAxis*4.5); mMuzFlash3rd.SetDrawScale(1.0); mMuzFlash3rd.SetRotation(rotator(-1 * C.ZAxis)); mMuzFlash3rd.mStartParticles++; SmokeLoc = C.Origin + SmokeOffset; Spawn(class'ClassicSniperSmoke',,,SmokeLoc); } } Super.ThirdPersonEffects(); } simulated function Vector GetTipLocation() { return Location - vector(Rotation) * 100; } q rR="T#9:9:$#w*b?K9:9:$@a #<( GpbsSvz{S}SCD{: Aq$@r"tuJ~|$@A}$@Aq w:_xZ[DJ~|$}$=q AJ~|$}$q BJ~|$}$q q yZ[DJ~|$}$?q AJ~|$}$q BJ~|$}$q q |Y!h$f$L>q h$?f$?q ~$C@WA"B"EJ~|$ @}$@@q q q {q q q q ~q q Cq q q q q q q q q q Fq q Bq q q q q q qq q q q q@q q @q q I@q d^e *K'ȵ3}3}3}bQ B3} u uh uh3}Bk $@F[ $@FACcSF$@:$@M^ q q Qq q H@q q P@q q q q J@q q iq *gft RLV%*[ڇqY q q p}R99:9:$r`a 9:9:$-@a @99}`w}*w}*CBC} CF} BF9?,qa B?a  Ba  Ba q Gq q q STp d' Gq UEl f E& E Gq SXv = G"q q q WZm A Gq [q q q q Y]\ Ea Gq q q \_U Jba Gq `q q q q J &!n  Gq GL}G%R (oo%-!%m%9?%R ' G G q OZ F9? ] --(O9?,r .d (T ? Gq tclass TracerProjectile extends Projectile; var xEmitter Trail; simulated function Destroyed() { if ( Trail !=None ) Trail.mRegen=False; Super.Destroyed(); } simulated function bool CanSplash() { return (bReadyToSplash && (Level.NetMode != NM_Standalone)); } simulated function PostNetBeginPlay() { local PlayerController PC; local vector Dir,LinePos,LineDir, OldLocation; if ( (Level.NetMode == NM_Client) && (Level.GetLocalPlayerController() == Owner) ) { Destroy(); return; } if ( Level.NetMode != NM_DedicatedServer ) { if ( !PhysicsVolume.bWaterVolume ) { Trail = Spawn(class'FlakTrail',self); Trail.Lifespan = Lifespan; } } Velocity = Vector(Rotation) * (Speed); Super.PostNetBeginPlay(); // see if local player controller near bullet, but missed PC = Level.GetLocalPlayerController(); if ( (PC != None) && (PC.Pawn != None) ) { Dir = Normal(Velocity); LinePos = (Location + (Dir dot (PC.Pawn.Location - Location)) * Dir); LineDir = PC.Pawn.Location - LinePos; if ( VSize(LineDir) < 150 ) { OldLocation = Location; SetLocation(LinePos); if ( FRand() < 0.5 ) PlaySound(sound'Impact3Snd',,,,80); else PlaySound(sound'Impact7Snd',,,,80); SetLocation(OldLocation); } } } simulated singular function Touch(Actor Other) { } simulated function ProcessTouch (Actor Other, vector HitLocation) { } simulated function Landed( Vector HitNormal ) { Destroy(); } simulated function HitWall( vector HitNormal, actor Wall ) { Destroy(); } q jf iS $S $ Gq LG!a LQ Gq {class ClassicGrenadeFire extends ClassicRocketMultifire; function Projectile SpawnProjectile(Vector Start, Rotator Dir) { return Weapon.Spawn(ProjectileClass,,, Start, Dir); } q @\l%w@*@-( Gq q q cV ( Gq lq q mq q q q xk[ P`E# -'kalmE'-(XlE w.k*'w.k*.k-a  l"@ Gq q q ho\ %-9:9:$ Gq q q q [[ZU[Z]ZKZdZTZJZZZL[FZ^ZDZ\` _hZXZ__J[XEZz_S[tZT Zs_z[][\ZGZrZIZnZH W_ZJ^z_hZbZr_TZ~ZNZRZpr~_Nr{ZUZMZwZKZp`lcqXxZWro`EZoZzrsWIrA _r`_ZiQ F _\WX[X^rG rxbN ^RZ|rBZR^\ZDZqZccHZOrWSZL JF _o`z XJ ZM^@_O[R_SZPrlr[[_JoC_OoErJIZ}ZwZyZq^L^kXE Z{~ZxC^_{ WaZWZu^f ^V oT^Zh^l ^^~^^_O^ZZo^^hZhZQZ{rXmZYZ@_k ZiZPZWZjcCcMrcZAcIZkZB_]ZK_XZl^irK ZmZEZC^WZ{ZnZ~^l^ZL_D Zq^O^JZQZprFZrrKZmZtZo_w~IpbHd[g[DdfCe^GW?i[=S ZY[C XH rkZVJ] W7V[6{[WW`[3O[PW1Q[(Su4Nu4MoGoF^K oD^~oB[To[yZwZaZu[Uo"YZUZ^ JOZQZWrmZw [JgGC&EZXZZZ_Js_h~~u^r^e^t^[ ^\ ^w^I^Z ~C W Jtb__D _\rsvM rm~P ZLZ~ ZG ce~uZJoJI ^^yJrcv}cvHcn^Z~s~tX@~B J ^U ZZz~A rA^m ^LZa^v ^\ Jb rk ^fWP^p rSZc ^\rJ ^GoS^K^P^Z ^G_`_a^G[x Zl^R^TZvrgoACR rvjE [cjfdilq Mg{dJdgYM@idfw_oFdjUd|ddlsq *_BRa_ko_j@q q q q KCOdB^q bkm.eX"@}dA}OLdkK-~[(~Y]fWq 5b})c_4kB +km 3bX,bz6b\&b~7I`Ri8xxRip>^RN]FmlRTYNJh'br%eTRVyRcG$bj[JLMYVRPf0bx^XZq /br`@TE T#aeEFc}WenT_y BEu4W-{Cu49RDu4_Ku4_j?u4VIEO_ u4snE@Ya<u4lz8u4C+fMHi6u4WwDWNu4Ye2u4A~0u4E.u4AD,u4YE*u4L ^(u4_jRHIq "u4`W$u4;wA&r?GiX&u4BA)u4QC_HTeu4=c8\T ` `tgu4CT!`Wu4SwAu4J7u47I4u49@3u4Wyu4YP#u4=i%u4Cf'u4Siu4U|u45Q>u45F;u4C{ u4Dv~wHB h)PEryEsHEtWdfXv|EqUq gdgtI DxTLdbssDnTsdit @D}SPcuqfArTS[gnw^F]UkdatvCbR AckrFBaPF`\ndJ~nO}o^RMI\`lBG|`C8GSEgaEhp8hq 8fQe`WrEiBEjQEk`Elo~~ aNY]}mCr|YnAF~DvpUBECTDcErxQ@z[QvlZ{ ~QL Zj] ^WGH^ K+lHW G+eHP R(^HF PAUHV LoeQOTu4_"c kCB TEHD VS<fwiZg`<lhGHoe5~u4hsGj[8OAE8JKF\;QHL8IdZEiw~guEWRGFIYHbu4CqR>t@Qr@xCH{@gJu4Q$qu4 BtcAu4@ducd@bGu4:iu4Rcu4v uu49ku4_dRfC|XiO A@P@_snL~LM y \d| kazkJB ZFh`v"FFEc TEY cEX qe D@&jDEi TEV c#} rEW @&kO*t m` RXMHe p 's l 7Z v %Qgv m %Egjiz \ (Ifq U (@fh@ x 6G"L}*Z o| u4@k*f lkG9Wu4GP \>W&HU*V 8d._ \.il.f|[ kK0Hv \ ?Da Ce R