Áƒ*žE@cM‡“C‚`ÜÉü˜–nK‚Sz³’0mcNone FireAnimsFireCore BLZarkV3EngineSystemColor PostRenderClientAltFireProcessTraceHit NormalFire ModifyPlayer PlayIdleAnimVector TraceFireBotBeginPickupMessageZoomingIconIdleTimer BeginState EndState AdjustAimCollisionHeightCollisionRadius ReplaceWith ItemNamePickupViewMesh InternalTime TraceShot TakeDamageBotpack Viewport SniperRifleMesh PlayerPawnEjectStillFire2 ShockRifle AssaultRiflePaletteRegisterHUDMutatorAmmoCarcassUsedInWeaponSlotWeaponMaxAmmoVSizeUSizePostNetBeginPlay AmmoAmount MFTextureFlashSFlashCFlashOFlashYbDrawMuzzleFlash SelectSound FireSoundAltDamageType MyDamageType FireOffset GiveWeaponVBitsVClampFire3UBitsMipZero MaxColorbMaskedWeaponDescriptionFire4TickAltFirebCollideActorsSwitchToBestWeaponSetHand WarnTarget PlayFiringFinishAnimEndFire5 DeathMessagePhysics GiveAmmo RateSelfMaxDesireability BulletBoxUseAmmoRotator ShockCore PlayRecoil FiringSpeed RifleShellBLMuteCheckReplacementbAltInstantHit ClientFire BulletBox199 bShowMag Decapitatedshot bInstantHit StopZoombShowRangeTextPickupAmmoCount AmmoName bNoSmooth bShowRange PickupSoundMuzzleFlashTextureMuzzleFlashScale NameColorAltRefireRate AIRating RefireRatebShowriflename BobDampingPlayerViewScalePlayerViewOffsetAutoSwitchPriority shaketimeMuzzleFlashMeshMuzzleFlashStylebMuzzleFlashParticles shakemag shakevert FlashLength StatusIconInventoryGroup bShowDotsThirdPersonMesh MuzzleScale riflenameUClamp ToggleZoomPlayerViewMesh bbPlayer HUDMutator RotationSkin HitNormal StartTraceEnemyGamebestAim InstigatormyHUDOwner TimeSecondsdist NextMutatorbSuperRelevantValue Palette1 EndTraceClipY bSniping HitLocation CrosshairPhand DeltaTimeCalcDrawOffsetbHighDetailModebAlwaysMouseLook DefaultFOV FlashCountOldFlashCount DesiredFOV aimerrorSoundDampeningSetPos DrawIcon Location bUseAltMode PawnOwnerbIsPawnPlayOwnedSound AmmoType bPointingStyle DrawColorbOwnsCrosshair DrawScaleXZY ViewRotationPitch ScriptText AdjustedAimS bMuzzleFlashBRG bestDist ReturnValueDynamicLoadObjectFireDir AccuracyScaleMutator LevelInfo EyeHeightbFire bAltFireClipX InventoryCanvasFontLevelIconsActorPawnRifleLodMeshtargPickups WeaponPickup WhiteFontSkinsflak RiflePickupNumFire I_RIFLEAmmo ChunkHitPlayerDeathMatchPlusSoundTextureClassPackage TextBufferTournamentWeapon ChallengeHUDObjectUT_SpriteSmokePuff FunctionStateTournamentAmmoStructCrosshairColor UnrealShareRangeUT_HeavyWallHitEffect FireAdjust UT_ShellCasebNoviceXLengthbCanClientFireRifle2m RiflePick RifleHand MuzzleFlash2 UseRifle SniperFiremuzzsr3Muzzy3OwnerLocation StillTime StillStart BulletBoxM BulletBoxTUnrealI StrPropertyStructProperty RRetickle NamePropertyObjectPropertyFloatProperty BoolProperty IntProperty ByteProperty HUDOwner radpitchOther€‚9 €„‡_€„……&‡˜ObNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ „?l˜=$:e‡> £Y‡> £YŠX©'†"�€�  !��#€�¨‡*� ��€�„�€�:„-�€�,�€�€…�(��H€„%�+� �L@/€‚02€35ÃPfÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ275Rú¶ÃîL#!"†6" 2"Ç0� ] You got a box of rifle rounds.]Box of Rifle RoundsÍZ$�Âu>ðWPÇ%Í$pA$ ANÓ€÷>\G/…33s?.…ˆ/r*q! t°áØ —?,¸ ô@¯¢Ä& &¢Ä —9 ž b:ˆ —;w.…*a®€?«?,Ã(-¥'.…QHCƒa®ÍÌÌ>«ÍÌÌ?Ã(ƒ‚š:©%š:¸%-¥( §M}.§ßØ ä; ~c2§a ¨ !Ø××׈ —ôÕ?,Õ®«333@6ýõ @#Ô?&Þw*ú@T'Ô××Õ®«Ãš™™>ÍÌÌ>Õ®«ÃÍÌL>ÍÌL>#Õ®«Ãš™™>€??,  r¢a Æ × P¥¥‚‚w wˆ w*d-´a ñ €@ ÈB-‚‚-´7±¯6È 6È —«R¸?ûC„²a/!&-‚²a/!�.–²-ö)!,d.…ˆ Õ?¸ˆÞ^(!,-.…ˆ Õ`êFÙ¥‚�-´�a/!/a ù × Ô?,  Å?< Qµ.‹Ø ÿÿÿÿÿÿÿÿÿÿ ÁA4MF0.  4 €ÂCa @à- q!' ãDBR7 ,’âá$«.…ˆÏ@@a§,.® @« @þÍÌL=�‚w.‡ˆ*)´.‡ˆ¡.‡ˆ ‹è ÐI P,Ø+OÐ B´ ?&¹.ËÿBotpack.Rifle2mL ËM¹ Õ Ì=S–Q66.‚›:.…ˆ©% °Ãš™?Ì ëEG¡C7.…ˆˆbÏå ž×ˆ —ÕÀ­ $tID«?,�((9­!×Õ?p '(! '( '€€ÛJ)Yó)ô˜¯Â%À)%W‚w.–ˆ*.–ˆ-½®®33“?ìw.…ˆÁ*áØ.…ˆÁ —ˆ —ì±?°ѱ?Ю®@?®®ô«·Ñ8ffæ>® ÔKƒ¬d Ô.‡ˆ* ‚w*µ¡ -×'¬“?€H”¯«?“«?,€¯«?�«?,€ä¢-æº$õº$‹b&?,.¶.‡ˆÅÌò Nº$Ñ-0H”®«?“«?,¯«?�«?,6›‹=,ÿ6š‹$6™‹$aÑ---------H”¯«?“«?,¯«?�«?,aÑ---------H”¯«?“«?,®«?�«?,aÑ^¬ ¡í -39Cå.…ˆ ž,+%¢‚™6¬.…ˆ ž% ˜6¬.…ˆ žPF«¬?6¬.…ˆ ž?,¶¬ÛI@?,´Ù«¬?“6¬.…ˆ žÿÿ?,¶¬ÛI@?,´ ׈ —ÔÕ.…ˆÀ%¼­.…ˆ $tI D«0@�(("× Õ? N9­*.…ˆ -" ¯¬áØ ?,0€>³ »6›‹$6š‹=,ÿ6™‹$¬ ¡P -5û³?,È6›‹$6š‹=,ÿ6™‹$Z”¬«ÈB“?‘¯®¬«€@�?,¬�?‘?, aÑVERY FARÑ‚²fæGC ³?,–6›‹=,ÿ6š‹=,ÿ6™‹$Z”¬«ÈB“?‘¯®¬«€@�?,¬�?‘?,aÑFAR«‚²fæC ³?,d6›‹=,ÿ6š‹=,ÿ6™‹=,ÿZ”¬«ÈB“?‘¯®¬«€@�?,¬�?‘?, aÑMEDIUMƒ‚²ÍÌÇB ³?,26›‹=,ÿ6š‹$6™‹=,ÿZ”¬«ÈB“?‘¯®¬«€@�?,¬�?‘?, aÑCLOSEP ²ÃõGB6›‹=,ÿ6š‹$6™‹$Z”¬«ÈB“?‘¯®¬«€@�?,¬�?‘?,aÑVERY CLOSEU”¬«ÈB“?‘®¬«€@�?,¬�?‘6aÑpppp[SD.SD¯«?, ?�, D m] -6³ »6›‹$6š‹=,ÿ6™‹$¬ ¡U”¬«ŒC“?‘®¬«€@�?,¬�?‘5aÑpppp[SD.SD¯«?, ?�, Dx]' -2³ »6›‹C¯?,ÿ«33³@6š‹C¯?,ÿ«33³@6™‹C¯?,ÿ«33³@¬ ¡M”¯«?“?,F®zC®«?�«?,(¬?, aÑ/2 -×(b ó.‡ˆ-Ê'.‡ˆ-Ê' Ó65h¤¥Ó .‡ˆ£‚‚w * a/!Mw Å*/a0 aa10£r*a ˆ-   .@ÿ Fÿüÿ&ÿnÿÿ 6ÿ Zÿ‚ÿÿ.ÿ Vÿvÿÿ >ÿ bÿ†ÿ ÿ Nÿ~ÿ2ÿÿ Jÿ*ÿrÿÿ :ÿ ^ÿÿzÿ"ÿ Bÿ fÿ‚ÿ 2ÿÿ`�ÿDÿõÿwÿàˆÿ”ÅÿDÿÿÍÿ«ÿºÿÜÿøÿœÿyÿÿXÜ‚ÿDÄÿÿÿàÿ”ÿDÿÿÿÅÿÿÿxyÿÏÿÖÿwÿºÿàÅÿýÔÿwÿ@ÿÅÝÿõÿwÿ³^ÿÏÝÿÖõÿwwÿ‡Èÿ ÄÿÿÿP•ÿÏÿ#Ö§ÿ#wÿ8‚Àÿ1ÿíÿwÿ8J0ÿÿ&ÿÿ(øÀÿœ1ÿyíÿwÿÿÿÿÿÿâÿÔÿÿÿÿÿÿøÿÁÿÿÿ ¨ÿÆÅÿÿÿØÿÅÿÿÿÿ$ÿøÿwÿ LÿcÊÿ÷õÿwwÿÿÿÿÿÿÿÿÿ¶ÿÜÿõÿwÿùLÿØÊÿõõÿwwÿ°hÿÄÊÿõÿwÿ 8ÿ$ÿÔÿwÿ @ÿùÿõ§ÿwÿhÿ2ÿÇÿwÿƒÿ2ÿ§ÇÿwÿÀÀ8ÿ1©ÆÿíÊÿwwÿt0 ÿP·ªÿÙèÿwwÿ¨ÿ-ªÿÇèÿwwÿ Á ÿÆãÿÔ§ÿwÿ#úÿ]©ÿÙèÿwwÿ#øÿœÿyÿÿ5`ÿ�ÿ\ØÿwÿÎÿuÿÕ§ÿwÿóJÿ«ÿš&ÿqÿÂÿÆÿ#ÿÿN@ÿùÿÿÿ’@ÿùÿeÿÿˆ ÿÅeÿìÿwÿ`(ÿÄ$ÿæÿwÿ”ÿÿçÿÿ—ÿÿqÿÿÂ@¨ÿùªÿ#èÿwÿ€ÿÕëÿØAÿwÿPpÿ îÿ˜Ôÿqwÿ JŠÿå¬ÿ—&èÿqwÿàxúÿ”Å©ÿDèÿwÿ FŠÿå ãÿ—×Ôÿqwwÿ#ÿÿÿÿ ‚ÿyÿÿÿIÓ,MFC4"3"J"D"G*H*ü†ÿ"Ùr&ñ¢µIÿ(@€ !             !                      "   "   "      ""   "   "   "  ""  " "! "      "" !   " ! " "! !  ""   "  ""     ""   " "  "   ""     " " "  ""   "   "  ""  " "  "        !                 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " !                     "  " "    ""     "  "   "     ""   "  ""  ""    " ""      ""  "   " "   ""   "  "" ""  " !  " "     ""    "   "     ""    "  " ! "             "              !     @ //================================================================================ // WKAHeadRemover HUD MUTATOR // // // This will allow custom crosshair to work with UTPURERC6D and UTPURERC6E // //================================================================================ class HUDMutator expands Mutator; var PlayerPawn HUDOwner; simulated event PostRender( canvas Canvas ) { if (HUDOwner != None && HUDOwner.Weapon != None) { // if (Owner.Weapon.IsA('WKARifle')) // You may want to enable this. HUDOwner.Weapon.PostRender(Canvas); } } J//============================================================================= // BulletBox. // BulletBox199 suplements the Zark 199 Rifle, allowing it to refill // to the max capacity of 199 rounds. // // Code mods by {BL}Gypsy Angel April 8, 2004 //============================================================================= class BulletBox199 extends TournamentAmmo; åFUÜ�<t-¥(0˜¯Â%.…ˆOU›:.…ˆ©%v!T  ÿÿÿÿÿÿÿÿÿÿdÀ8³B9-r¯*X.…ˆ+¯\&q! -ø'-¥'ñˆa/!Ÿ‚.–ˆ-½ °Ãff&?�¬�ö €?Añæ°á؈ —?,�¬�ö«? €?@@ñ .…ˆ _ç��e8 c// ---------------------------------------------------------------------------------------- // BLZark by {BL}Ticklemonster, using the mutator by {BL}GypsyAngel - The Black Legion - 04/12/05 // Website http://www.theblacklegion.com // // ZarkAssaultRifle-II by |ZM|Snake - TEAMZM (Zark Mercenaries) - - Apr 30/2003 // // (Jun 26/2003) Final version // // Contact: snakesabode@shaw.ca // // Website http://www.zarkmercs.com // // Original Zark Assault Rifle concept and implementation : Chris 'Zark' Houghton // // - Full Zark Assault Rifle specifications // - MOUSELOOK is forced true by the ZarkAssaultRifle-II - aiming skill required :) // - 199 is the Black Legion's 199 round capacity rifle - great for high speed games. // - 199 V2 corrects the error limiting reloads to only 50. Requires BulletBox199.uc // ---------------------------------------------------------------------------------------- class BLMute expands Mutator; function ModifyPlayer(Pawn Other) { DeathMatchPlus(Level.Game).GiveWeapon(Other,"BLZarkV3.AssaultRifle"); if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); } function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { if ((Other.IsA('weapon')) || (Other.IsA('ammo'))) { if ( (Other.IsA('ShockCore')) || (Other.IsA('RifleShell')) || (Other.IsA('BulletBox')) ) { ReplaceWith(Other,"BLZarkV3.BulletBox199"); return false; } if ((Other.IsA('ShockRifle')) || (Other.IsA('SniperRifle'))) { ReplaceWith(Other,"BLZarkV3.AssaultRifle"); return false; } if (Other.IsA('SniperRifle')) return false; return true; } return true; } µRÑè;$-¥(a®ÍÌÌ>«ÍÌÌ?Ã(µ §TØ^<a(§ QYÝ?ÿÿÿÿÿÿÿÿÿÿóXLêß=trš:.…ˆ¸%b‚w.‡ˆ* .‡ˆ¿a/!#.‡ˆka(q! €µWõß>�Vˆa/!&J.‡ˆ¿a/!#.‡ˆKaÍÌL>'�.…ˆ©$.…ˆ¸$8 ÃV F@#!w¹Úa!(€?ÍÌL= à$ ùZ.Æ¢ü"B$BLZarkV3.AssaultRifleXw¾*¾  $ ˜S]bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \bWK˜=$:e„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�XœŽ�”Æ-¤%n˜=$:e†Ý[c"Òøô„a/!1a/!.Ž„„a/!^a/!aa/![BLZarkV3.BulletBox199(Ü„a/!*a/!$BLZarkV3.AssaultRifle(òa/!$('' K‚// ---------------------------------------------------------------------------------------- // Major thanks to Rob, [WKA]Tech, for letting me use the rangefinder in this version // of the Zark Assault rifle!!! // BL Clan Zark Rifle with added reach by {BL}Ticklemonster // Hoser said, "Hey, can you make me a Zark that will hit things on the // other side of the map?" So I said, "You are a Zark that will hit things on // the other side of the map!" And all was good in the world. Then I changed a value // in the ProcessTraceHit so that the Zark would do it, too. // April 12, 2005 // ZarkRifle199 V2 by {BL}GypsyAngel - The Black Legion - - Apr 8/2004 // Website http://www.theblacklegion.com // // ZarkAssaultRifle-II by |ZM|Snake - TEAMZM (Zark Mercenaries) - - Apr 30/2003 // // (Jun 26/2003) Final version // // Contact: snakesabode@shaw.ca // // Website http://www.zarkmercs.com // // Original Zark Assault Rifle concept and implementation : Chris 'Zark' Houghton // // - Full Zark Assault Rifle specifications // - MOUSELOOK is forced true by the ZarkAssaultRifle-II - aiming skill required :) // - 199 is the Black Legion's 199 round capacity rifle - great for high speed games. // - 199 V2 corrects the error limiting reloads to only 50. Requires BulletBox199.uc // ---------------------------------------------------------------------------------------- class AssaultRifle extends TournamentWeapon; #exec MESH ORIGIN MESH=Rifle2m X=0 Y=0 Z=0 YAW=64 PITCH=0 ROLL=0 #exec MESH SEQUENCE MESH=Rifle2m SEQ=All STARTFRAME=0 NUMFRAMES=75 #exec MESH SEQUENCE MESH=Rifle2m SEQ=Select STARTFRAME=0 NUMFRAMES=17 RATE=28 GROUP=Select #exec MESH SEQUENCE MESH=Rifle2m SEQ=Still STARTFRAME=17 NUMFRAMES=1 #exec MESH SEQUENCE MESH=Rifle2m SEQ=Fire STARTFRAME=17 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2m SEQ=Fire2 STARTFRAME=27 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2m SEQ=Fire3 STARTFRAME=37 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2m SEQ=Fire4 STARTFRAME=47 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2m SEQ=Fire5 STARTFRAME=57 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2m SEQ=Down STARTFRAME=67 NUMFRAMES=7 #exec MESHMAP SCALE MESHMAP=Rifle2m X=0.008 Y=0.004 Z=0.016 #exec MESHMAP SETTEXTURE MESHMAP=Rifle2m NUM=0 TEXTURE=Rifle2a #exec MESHMAP SETTEXTURE MESHMAP=Rifle2m NUM=1 TEXTURE=Rifle2b #exec MESHMAP SETTEXTURE MESHMAP=Rifle2m NUM=2 TEXTURE=Rifle2c #exec MESHMAP SETTEXTURE MESHMAP=Rifle2m NUM=3 TEXTURE=Rifle2d #exec MESH ORIGIN MESH=Rifle2mL X=0 Y=0 Z=0 YAW=64 PITCH=0 ROLL=0 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=All STARTFRAME=0 NUMFRAMES=75 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Select STARTFRAME=0 NUMFRAMES=17 RATE=28 GROUP=Select #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Still STARTFRAME=17 NUMFRAMES=1 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Fire STARTFRAME=17 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Fire2 STARTFRAME=27 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Fire3 STARTFRAME=37 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Fire4 STARTFRAME=47 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Fire5 STARTFRAME=57 NUMFRAMES=10 RATE=15 #exec MESH SEQUENCE MESH=Rifle2mL SEQ=Down STARTFRAME=67 NUMFRAMES=7 #exec MESHMAP SCALE MESHMAP=Rifle2mL X=0.008 Y=0.004 Z=0.016 #exec MESHMAP SETTEXTURE MESHMAP=Rifle2mL NUM=0 TEXTURE=Rifle2a #exec MESHMAP SETTEXTURE MESHMAP=Rifle2mL NUM=1 TEXTURE=Rifle2b #exec MESHMAP SETTEXTURE MESHMAP=Rifle2mL NUM=2 TEXTURE=Rifle2c #exec MESHMAP SETTEXTURE MESHMAP=Rifle2mL NUM=3 TEXTURE=Rifle2d #exec MESH ORIGIN MESH=RiflePick X=0 Y=0 Z=0 YAW=64 #exec MESH SEQUENCE MESH=RiflePick SEQ=All STARTFRAME=0 NUMFRAMES=1 #exec MESH SEQUENCE MESH=RiflePick SEQ=Still STARTFRAME=0 NUMFRAMES=1 #exec MESHMAP SCALE MESHMAP=RiflePick X=0.1 Y=0.1 Z=0.2 #exec MESHMAP SETTEXTURE MESHMAP=RiflePick NUM=2 TEXTURE=JRifle2 #exec MESH ORIGIN MESH=RifleHand X=15 Y=170 Z=-30 YAW=64 PITCH=0 ROLL=0 #exec MESH SEQUENCE MESH=RifleHand SEQ=All STARTFRAME=0 NUMFRAMES=1 #exec MESHMAP SCALE MESHMAP=RifleHand X=0.07 Y=0.07 Z=0.14 #exec MESHMAP SETTEXTURE MESHMAP=RifleHand NUM=2 TEXTURE=JRifle2 #exec MESH LODPARAMS MESH=muzzsr3 MINVERTS=8 STRENGTH=0.7 ZDISP=800.0 #exec MESH ORIGIN MESH=muzzsr3 X=0 Y=980 Z=-75 YAW=64 #exec MESH SEQUENCE MESH=muzzsr3 SEQ=All STARTFRAME=0 NUMFRAMES=3 #exec MESH SEQUENCE MESH=muzzsr3 SEQ=Shoot STARTFRAME=0 NUMFRAMES=3 #exec MESHMAP NEW MESHMAP=muzzsr3 MESH=muzzsr3 #exec MESHMAP SCALE MESHMAP=muzzsr3 X=0.04 Y=0.1 Z=0.08 #exec TEXTURE IMPORT NAME=RRetickle FILE=Images\RRetickle.bmp FLAGS=2 MIPS=OFF var bool bShowMag; var bool bShowRangeText; var bool bShowRange; var bool bShowriflename; var bool bShowDots; var string riflename; var int NumFire; var name FireAnims[5]; var vector OwnerLocation; var float StillTime, StillStart; simulated event PostNetBeginPlay() { local HUDMutator crosshair; local PlayerPawn HUDOwner; Super.PostNetBeginPlay(); // If owner is the local player, check that the HUD Mutator exists. Also check for the presense of a bbPlayer (UTPure enabled) HUDOwner = PlayerPawn(Owner); if (HUDOwner != None && HUDOwner.IsA('bbPlayer') && HUDOwner.myHUD != None) { ForEach AllActors(Class'HUDMutator', crosshair) break; if (crosshair == None) { crosshair = Spawn(Class'HUDMutator', Owner); crosshair.RegisterHUDMutator(); crosshair.HUDOwner = HUDOwner; } } } simulated function PostRender( canvas Canvas ) /// zoom canvas { local PlayerPawn P; local float Scale; local float Xlength; local float range; local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z; local float radpitch; local actor Other; Super.PostRender(Canvas); P = PlayerPawn(Owner); if ( (P != None) && (P.DesiredFOV != P.DefaultFOV) ) { bOwnsCrossHair = true; ////////Cross hair lens Scale = Canvas.ClipX/640; Canvas.SetPos(0.5 * Canvas.ClipX - 128 * Scale, 0.5 * Canvas.ClipY - 128 * Scale ); if ( Level.bHighDetailMode ) Canvas.Style = ERenderStyle.STY_Translucent; else Canvas.Style = ERenderStyle.STY_Normal; Canvas.DrawColor = 15*ChallengeHUD(PlayerPawn(Owner).myhud).CrosshairColor; //? Canvas.DrawIcon(Texture'RRetickle', Scale); /// dots Canvas.Style = ERenderStyle.STY_Normal; if(bShowDots) { Canvas.SetPos(0.5 * Canvas.ClipX + 5 * Scale, 0.5 * Canvas.ClipY - 6 * Scale); Canvas.DrawColor.R = 255; Canvas.DrawColor.G = 0; Canvas.DrawColor.B = 0; Canvas.DrawText("---------"); //left Canvas.SetPos(0.5 * Canvas.ClipX - 27 * Scale, 0.5 * Canvas.ClipY - 6 * Scale); Canvas.DrawText("---------"); //right Canvas.SetPos(0.5 * Canvas.ClipX - 2 * Scale, 0.5 * Canvas.ClipY + 5 * Scale); Canvas.DrawText("^"); //bottom } Scale = P.DefaultFOV/P.DesiredFOV; if (bShowRange) { // Calc range XLength=255.0; GetAxes(Pawn(owner).ViewRotation,X,Y,Z); if ((Pawn(Owner).ViewRotation.Pitch >= 0) && (Pawn(Owner).ViewRotation.Pitch <= 18000)) radpitch = float(Pawn(Owner).ViewRotation.Pitch) / float(182) * (Pi/float(180)); else radpitch = float(Pawn(Owner).ViewRotation.Pitch - 65535) / float(182) * (Pi/float(180)); StartTrace = Owner.Location + Pawn(Owner).EyeHeight*Z*cos(radpitch); AdjustedAim = pawn(owner).AdjustAim(1000000, StartTrace, 2.75*AimError, False, False); EndTrace = StartTrace +(20000 * vector(AdjustedAim)); Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); range = Vsize(StartTrace-HitLocation)/48-0.25; // Range Display defults Canvas.Font = Font'Botpack.WhiteFont'; Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 0; Scale = P.DefaultFOV/P.DesiredFOV; //draw range colour if (bShowRangeText) { if (range>=200) { Canvas.DrawColor.R = 0; //green Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 0; Canvas.SetPos( 100*Canvas.ClipX/401, 4*Canvas.ClipY/7 + Canvas.ClipY/401 -25 ); Canvas.DrawText( "VERY FAR" ); } if (range<=199.9 && range>=150) { Canvas.DrawColor.R = 255; // yellow Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 0; Canvas.SetPos( 100*Canvas.ClipX/401, 4*Canvas.ClipY/7 + Canvas.ClipY/401 -25 ); Canvas.DrawText( "FAR" ); } if (range<=149.9 && range>=100) { Canvas.DrawColor.R = 255; // white Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 255; Canvas.SetPos( 100*Canvas.ClipX/401, 4*Canvas.ClipY/7 + Canvas.ClipY/401 -25 ); Canvas.DrawText( "MEDIUM" ); } if (range<=99.9 && range>=50) { Canvas.DrawColor.R = 255; //purple Canvas.DrawColor.G = 0; Canvas.DrawColor.B = 255; Canvas.SetPos( 100*Canvas.ClipX/401, 4*Canvas.ClipY/7 + Canvas.ClipY/401 -25 ); Canvas.DrawText( "CLOSE" ); } if (range<=49.99) { Canvas.DrawColor.R = 255; //red Canvas.DrawColor.G = 0; Canvas.DrawColor.B = 0; Canvas.SetPos( 100*Canvas.ClipX/401, 4*Canvas.ClipY/7 + Canvas.ClipY/401 -25 ); Canvas.DrawText( "VERY CLOSE" ); } } Canvas.SetPos( 100*Canvas.ClipX/401, 4*Canvas.ClipY/7 + Canvas.ClipY/401 ); Canvas.DrawText( "["$int(range)$"."$int(10*range-10*int(range))$" m]" ); // stick range on the screen } //draw mag if (bShowMag) { Canvas.Font = Font'Botpack.WhiteFont'; Canvas.DrawColor.R = 0; Canvas.DrawColor.G = 255; Canvas.DrawColor.B = 0; Scale = P.DefaultFOV/P.DesiredFOV; Canvas.SetPos( 280*Canvas.ClipX/401, 4*Canvas.ClipY/7 + Canvas.ClipY/401 ); Canvas.DrawText( "["$int(Scale)$"."$int(10 * Scale - 10 * int(Scale))$"x]" ); } // Rifle Name Text if (bShowriflename) { Canvas.Font = Font'Botpack.WhiteFont'; Canvas.DrawColor.R = 255-(Scale*5.6); Canvas.DrawColor.G = 255-(Scale*5.6); Canvas.DrawColor.B = 255-(Scale*5.6); Scale = P.DefaultFOV/P.DesiredFOV; Canvas.SetPos(0.5 * Canvas.ClipX - 70 , 250 +(0.5 * Canvas.ClipY + 40 * (Scale/10))); Canvas.DrawText((riflename)); } } else { bOwnsCrossHair = false; } if ( PlayerPawn(Owner).bAlwaysMouseLook != true ) { PlayerPawn(Owner).bAlwaysMouseLook = true; } } function float RateSelf( out int bUseAltMode ) { local float dist; if ( AmmoType.AmmoAmount <=0 ) return -2; bUseAltMode = 0; if ( (Bot(Owner) != None) && Bot(Owner).bSniping ) return AIRating + 1.15; if ( Pawn(Owner).Enemy != None ) { dist = VSize(Pawn(Owner).Enemy.Location - Owner.Location); if ( dist > 1200 ) { if ( dist > 2000 ) return (AIRating + 0.75); return (AIRating + FMin(0.0001 * dist, 0.45)); } } return AIRating; } // set which hand is holding weapon function setHand(float Hand) { Super.SetHand(Hand); if ( Hand == 1 ) Mesh = mesh(DynamicLoadObject("Botpack.Rifle2mL", class'Mesh')); else Mesh = mesh'Rifle2m'; } simulated function PlayFiring() { local int r; PlayOwnedSound(FireSound, SLOT_None, Pawn(Owner).SoundDampening*3.0); PlayAnim(FireAnims[Rand(5)],2.5 + 2.5 * FireAdjust, 0.05); if ( (PlayerPawn(Owner) != None) && (PlayerPawn(Owner).DesiredFOV == PlayerPawn(Owner).DefaultFOV) ) bMuzzleFlash++; } simulated function bool ClientAltFire( float Value ) { GotoState('Zooming'); return true; } function AltFire( float Value ) { ClientAltFire(Value); } state NormalFire { function EndState() { Super.EndState(); OldFlashCount = FlashCount; } Begin: FlashCount++; } function Timer() { local actor targ; local float bestAim, bestDist; local vector FireDir; local Pawn P; bestAim = 0.95; P = Pawn(Owner); if ( P == None ) { GotoState(''); return; } if ( VSize(P.Location - OwnerLocation) < 6 ) StillTime += FMin(2.0, Level.TimeSeconds - StillStart); else StillTime = 0; StillStart = Level.TimeSeconds; OwnerLocation = P.Location; FireDir = vector(P.ViewRotation); targ = P.PickTarget(bestAim, bestDist, FireDir, Owner.Location); if ( Pawn(targ) != None ) { SetTimer(1 + 4 * FRand(), false); bPointing = true; Pawn(targ).WarnTarget(P, 200, FireDir); } else { SetTimer(0.4 + 1.6 * FRand(), false); if ( (P.bFire == 0) && (P.bAltFire == 0) ) bPointing = false; } } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local UT_Shellcase s; s = Spawn(class'UT_ShellCase',, '', Owner.Location + CalcDrawOffset() + 30 * X + (2.8 * FireOffset.Y+5.0) * Y - Z * 1); if ( s != None ) { s.DrawScale = 2.0; s.Eject(((FRand()*0.3+0.4)*X + (FRand()*0.2+0.2)*Y + (FRand()*0.3+1.0) * Z)*160); } if (Other == Level) Spawn(class'UT_HeavyWallHitEffect',,, HitLocation+HitNormal, Rotator(HitNormal)); else if ( (Other != self) && (Other != Owner) && (Other != None) ) { if ( Other.bIsPawn ) Other.PlaySound(Sound 'ChunkHit',, 4.0,,100); if ( Other.bIsPawn && (HitLocation.Z - Other.Location.Z > 0.62 * Other.CollisionHeight) && (instigator.IsA('PlayerPawn') || (instigator.IsA('Bot') && !Bot(Instigator).bNovice)) ) Other.TakeDamage(100, Pawn(Owner), HitLocation, 35000 * X, AltDamageType); else Other.TakeDamage(45, Pawn(Owner), HitLocation, 30000.0*X, MyDamageType); if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9); } } function Finish() { if ( (Pawn(Owner).bFire!=0) && (FRand() < 0.6) ) Timer(); Super.Finish(); } function TraceFire( float Accuracy ) { local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z; local actor Other; local Pawn PawnOwner; PawnOwner = Pawn(Owner); Owner.MakeNoise(PawnOwner.SoundDampening); GetAxes(PawnOwner.ViewRotation,X,Y,Z); StartTrace = Owner.Location + PawnOwner.Eyeheight * Z; AdjustedAim = PawnOwner.AdjustAim(1000000, StartTrace, 2*AimError, False, False); X = vector(AdjustedAim); EndTrace = StartTrace + 70000 * X; Other = PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); ProcessTraceHit(Other, HitLocation, HitNormal, X,Y,Z); } state Idle { function Fire( float Value ) { if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if (AmmoType.UseAmmo(1)) { GotoState('NormalFire'); bCanClientFire = true; bPointing=True; if ( Owner.IsA('Bot') ) { // simulate bot using zoom if ( Bot(Owner).bSniping && (FRand() < 0.65) ) AimError = AimError/FClamp(StillTime, 1.0, 8.0); else if ( VSize(Owner.Location - OwnerLocation) < 6 ) AimError = AimError/FClamp(0.5 * StillTime, 1.0, 3.0); else StillTime = 0; } Pawn(Owner).PlayRecoil(FiringSpeed); TraceFire(0.0); AimError = Default.AimError; ClientFire(Value); } } function BeginState() { bPointing = false; SetTimer(0.4 + 1.6 * FRand(), false); Super.BeginState(); } function EndState() { SetTimer(0.0, false); Super.EndState(); } Begin: bPointing=False; if ( AmmoType.AmmoAmount<=0 ) Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo if ( Pawn(Owner).bFire!=0 ) Fire(0.0); Disable('AnimEnd'); PlayIdleAnim(); } /////////////////////////////////////////////////////// state Zooming { simulated function Tick(float DeltaTime) { if ( Pawn(Owner).bAltFire == 0 ) { if ( (PlayerPawn(Owner) != None) && PlayerPawn(Owner).Player.IsA('ViewPort') ) PlayerPawn(Owner).StopZoom(); SetTimer(0.0,False); GoToState('Idle'); } } simulated function BeginState() { if ( Owner.IsA('PlayerPawn') ) { if ( PlayerPawn(Owner).Player.IsA('ViewPort') ) PlayerPawn(Owner).ToggleZoom(); SetTimer(0.2,True); } else { Pawn(Owner).bFire = 1; Pawn(Owner).bAltFire = 0; Global.Fire(0); } } } /////////////////////////////////////////////////////////// simulated function PlayIdleAnim() { if ( Mesh != PickupViewMesh ) PlayAnim('Still',1.0, 0.05); } `€€@€Ü1‘@>‚w*wÖ*Ö 1  •^Z+ÿÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿÿÿÿ2tcõµä•©&Ì»„œÔ�X‡> £YÎR@G¢‡> £Y…žtÈ…žtÈ…žtȇ> £YÎR@G¢‡> £Y£Ñ¸™B„œÔ�X–ýúL]„œÔ�X…žtȣѸ™B…žtÈ…žtÈ„œÔ�X…žtÈ…žtÈ„œÔ�X…žtÈ…žtÈ…žtÈ…žtÈ„œÔ�X¨}ÚöM¨}ÚöM„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X…žtÈ…žtÈ–ýúL]„œÔ�X„œÔ�X„œÔ�X„œÔ�X…žtÈœŽ�”œŽ�”…žtÈ…žtÈ…žtÈ„œÔ�X…žtÈ…žtÈ…žtÈ…žtȇ> £Y‡> £Y£Ñ¸™B–ýúL]…žtÈ…žtÈ…žtÈ„œÔ�X‡> £Y‡> £Y‚x�‚x�‚x�‚x�œŽ�”‚x�‚x�‚x�‡> £Y¶²‘¿!‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‡> £Y‡> £Y…žtÈ…žtÈ…žtÈ…žtÈ…žtÈ„œÔ�X…žtÈ…žtÈ…žtÈ‚x�‚x�‚x�‚x�‡> £Y‡> £Y‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‡> £Y‡> £Y‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‚x�‡> £Y‡> £Y‚x�‚x�‚x�‚x�‡> £Y‡> £Y‡> £Y‡> £Y „?l „?l"†gÓlÓpÓxÓFÓI] BL Zark†)–E–K–UJ]XVClassification: Long Range/High Capacity Ballistic Assault Rifle/You hit what you seen7m"ÇjÓdÓ`$ffæ?A: ÀÀ@i?hA$ÈC}$š™>B$Av$q= ?w$¤p}?u$š™™>>Ò=ïV]"!%k just messed up ol' %o's head.t*ÿ<ÓH$€?;$®Gá=:$B`e<9$¶óýsüÿÿÿvsöÿÿÿRsöÿÿÿ töÿÿÿTäÿÿÿhSöÿÿÿ`VöÿÿÿEmÕÿÿÿ_j—ÿÿÿ`söÿÿÿmÄÿÿÿYmÄÿÿÿcmÄÿÿÿ\j’ÿÿÿdk”ÿÿÿfj“ÿÿÿgsþÿÿÿqsüÿÿÿLsÜÿÿÿgOöÿÿÿATêÿÿÿ}süÿÿÿTëÿÿÿl÷ÿÿÿrSüÿÿÿ|SüÿÿÿRäÿÿÿTSóÿÿÿSëÿÿÿ{súÿÿÿKsëÿÿÿsëÿÿÿMsëÿÿÿ sëÿÿÿ lÿÿÿÿktëÿÿÿ l÷ÿÿÿzk·ÿÿÿLlÿÿÿÿ,lýÿÿÿVlýÿÿÿQlýÿÿÿNOÊÿÿÿw]÷ÿÿÿB]÷ÿÿÿFm÷ÿÿÿ\kqÿÿÿCm÷ÿÿÿ$joÿÿÿEk·ÿÿÿG’JV WC‘JN dC’=Y pC‘Jy }C’Jd ID’]YVD’;d dD’Ft qD‘cI ~D’KW JE˜NsWE�JR JG�=b WG’Kc dG�FR qG�F} ~G‘IZ KH�=} WH’=D dH’ W qH‘JX ~H�;L JI�cH WI�F~ dI�=Q qI’;^ ~I�F KJ�=~ XJ‘;U eJ’FY qJ�Jb ~J‘De KK�F_ WK�J_ dK�= qK’[Y ~K�J~ KL‘cJ XL�Fb dL�FQ qL±Is ~L’JY KM�J XM�J} eM�JQ rMÊc MËcI KNŸcF XN’bV dNŸcx qNŸcp }N‘?] IOŸcl UOŸcg aOÃfQmO‘R] ~R‘J~ JS‘;I VSŽ÷cabSާ>%CXŽäc |hX·Åc =d`ŽÁcM#aaŸAJ DbŽÂc $Pb±CG tbŽãcRD@cŽÐcPUDeŽÌcSCYfŽëcx\g‘FM Tj‘IJ `jŽÛcYHljŽÔcf"tmŽÓc5FZ�±ce `’È^Cl’ÄPZ�o¢° B4K I¤ °7B4UT­ ·åcxi³ ŽÀQjaµ °\B4nK¹ ޵Q8yÓ Ž§Q(qÔ ·c+YÕ ŽóVLjDÖ ‘Wf n× ŽµVzz× ŽÃc 6tÙ Žà\ \jÚ ˜b}FÜ ŽÝ\c[Cß °cB4W‚^â É]\uä Ÿ]J Cå ‘A] Oå ŽÜ G\å •+`"cæ