*!@ 5 CBgNoneSetTextGetTextWinTopCaptionWinLeft WinWidthTargetPracticeHintCoreEngine__OnCreateComponent__DelegateInternalOnCreateComponent IniOptionSystem CaptionWidthIntOnly XWeapons FloatOnlyColorFireModeClassCalculateAccuracyDroneComboHit TextColor AmmoClassDroneTransHitVSizeUSize TextFontFormatVBitsUClampVClampUBits TakeDamage__OnKeyEvent__Delegate PitchOffsetHitWallPitchDeviationInternalOnKeyEvent YawDeviationBringUpDroneFireRate ItemNameFireRateDeviation WinHeight__OnClick__Delegate Priority DoFireEffectRenderOverlaysMeshUserDamagePostBeginPlayMomentumTransfer AmmoPerFire DroneGunVectorRestoreDefaultsClickInfiniteRocketLauncherMaxAmmoInfiniteLightningGunInitialAmountSpeed Targeting ToggleStatus CancelClick PlayFiringPhysics CloseMenu DestroyedReceiveLocalizedMessagePutDownInfiniteShockRifleTick DroneFire Movement LightColorForce Collision LightingKarmaSpawnOkClick ChangeModeMrCrowProjectileTargetPracticeConfigX1TargetPracticeMutator Deactivated DescriptionY1bScaleToParentRedeemerTexturebBoundToParentbAcceptsInput GroupName ShockTextureX2 AVRiLTexture TransTexture bNeverFocusMrCrowTextureY2NODrone DroneAmmoDroneAVRiLRocketDroneDeemerProjectileCollisionRadiusCollisionHeightIntBoxLandedIsLocallyControlledInfiniteShockFireTimer ModeDoFireWeaponDroneShockProjectile ShakeView GetString DroneToggle AdjustAimbToggledActive AmbientGlow EyePosition DrawColor AllowFireExplode WeaponPickupbFixedRotationDir TextAlign LifeSpan GetViewAxesCheckReplacementWeaponFireAgainAttachmentClassIncrementFlashCount Controls MrCrowSoundFlashMuzzleFlashStartMuzzleSmokeServerPlayFiringDroneTransProjectile InfiniteAmmo StyleName FriendlyName bIsUnique bFadeMessage LifetimePosYRotator FireRateTossZInfiniteLightningFire LoseFocus DisplayFOV PutDownAnim SelectAnimPickup BobDampingInitComponentInventoryGroupMiniHealthPackSuperHealthPack UDamagePackDroneFireSoundSuperShieldPack ShieldPack PickupClassPlayerViewOffsetPlayerViewPivot IconMaterial IconCoordsInfiniteRocketFireProjectileClass Onslaught SelectSound SelectForce EffectOffset HealthPackAdrenalinePickup XInterfaceActive bProjTargetShieldChargerSuperHealthChargerSuperShieldChargerTargetMessage WeaponLocker UTAmmoPickupInfiniteRocketMultiFire UnrealGameRecallFireSoundComboAmmoCost StackModebBeepComboMomentumTransfer ComboDamageSuperExplosion DisabledConfigMenuClassNameDoTraceSpawnProjectileTranslauncherDeactivateSpawnProtection Bone_pivot01 CenteredYawCenteredOffsetY CenteredRoll HudColorWeaponCentered UV2TextureSmallViewOffset HitNormalEventInstigator DeltaTimeOther HitLocation InstigatorSizeYOwner MomentumStartDir RelatedPRI_1 RelatedPRI_2OptionalObjectCustomCrossHairColorCustomCrosshairCustomCrossHairScaleCustomCrossHairTextureCustomCrossHairTextureNameP UnrealPawnGUIControllerStructProperty StartTimeProjSpawnOffset SniperFireRocketLauncherRedeemerProjectileShockProjectileSenderxPawn SniperRifleRocketMultiFireProjectileFireShockBeamFirebSuperRelevant TimeSecondsNetMode SpreadStyle LooseSpread TightSpreadSpreadTransAttachmentShockProjFire RocketFireDamTypeShockBeam TransBeacon BlueBeacon bIsFiringLinkGunPickup ShockRifle WeaponSoundsMisc BExplosion3BaseImpactAndExplosionsTranslocatorModuleRegenerationTranslocatorFireShockRifleAltFireSmallRedeemerExplosion Translocatortranslocator_changeredeemer_shoot xWeaponBaseExplosionCrapWeaponShadersWeaponEnvShader XGameShaders StartTrace bTightSpreadWeapons LinkGun_1stbFireOnRelease HUDContentGenericRequiredEquipment NextFireTimeRocketExplosionNewTransEffectBlueONSVehicleSounds-SAVRiL AvrilFire01 HoldTime MaxHoldTime ThisModeNumBotPendingWeapondthandAim DrawIconGUIPageSetPos HumanMaleA NightMaleB aimerrorloadArrayPropertyGUIMultiComponent GUIComponentGUI GUIButton GUILabelClassPropertyBotRefireRateObjectPropertyFloatProperty BoolProperty LocalMessage PlayerNameSetBoneRotation RandSpin IntPropertyTransientSoundVolume PrevWeaponbHiddenWall ScriptTextABCDXY moEditBoxZFocusedControl MyControllerMyOwner CancelButton OkButtonDialogBackground DialogText DialogText2WGRONSAVRiLRocket CurrentAim Location ByteProperty Rotation Velocity ReturnValueVStaticSaveConfig Normalize WeaponFire LevelInfo ProjectileHUDPlayerReplicationInfo Ammunition AIController ControllerPlayerController DamageTypeMutatorCanvasLevelShader SkeletalMeshPawnActor DroneTypeStyleYawISRRollTransShotDifferentialSequentialTransHitsTransAccuracyNumberOfLightningShotsNumberOfTransHitsHighestNumberOfTransHitsPitch SoundGroupShockShotDifferentialSequentialCombosShockAccuracyNumberOfShockShotsNumberOfCombosHighestNumberOfCombosSoundDrawDroneTypePositionDrawDroneTypeTime bShowNewTypebGetStartTimeTextureRoleClassPackageSwitchTargetRedeemerTexTargetShockTexTargetAVRiLTexTargetTransTexTargetCrowTexbWaitingToRefire TextBuffer DesiredYaw DesiredPitchAimingDirectionObjectPwned Function FiringRateStateStructPitchOffsetEditBox0PitchOffsetEditBox1PitchOffsetEditBox2PitchOffsetEditBox3PitchDeviationEditBox0PitchDeviationEditBox1PitchDeviationEditBox2PitchDeviationEditBox3YawDeviationEditBox0YawDeviationEditBox1YawDeviationEditBox2YawDeviationEditBox3DroneFireRateEditBox0DroneFireRateEditBox1DroneFireRateEditBox2DroneFireRateEditBox3FireRateDeviationEditBox0FireRateDeviationEditBox1FireRateDeviationEditBox2FireRateDeviationEditBox3XGame XEffects StrPropertyAnnouncerNamesMr_CrowCannons FloorCannonPitchOffsetSelect0PitchDeviationSelect0YawDeviationSelect0DroneFireRateSelect0FireRateDeviationSelect0DefaultsButtonPitchOffsetSelect1PitchDeviationSelect1YawDeviationSelect1DroneFireRateSelect1FireRateDeviationSelect1PitchOffsetSelect2PitchDeviationSelect2YawDeviationSelect2DroneFireRateSelect2FireRateDeviationSelect2PitchOffsetSelect3PitchDeviationSelect3YawDeviationSelect3DroneFireRateSelect3FireRateDeviationSelect3 DialogText1 DialogText3 DialogText4viX6!͝ Ȇ))))))sssss)g;))))))))))))))))) LOPMQN$"$-$ $ &"&& & ("((!(-(-*$@@*@*@*@,$?,?,@,@I]%$TargetPractice.TargetPracticeConfig`]Target PracticeR]Target PracticeZ]nTargeting drone for practicing aiming at various projectiles. Keeps a record of your highest sequential hits and displays your accuracy.||2004 Rachel 'Angel Mapper' CordoneyGH86gi|ύ#e*ůύ#_ύ#e*ů0I L 3]SaQcPdOfNNB^_]Hqr]Translocator_changes:9BA\$pB/R*U:9 A@P$@Q" O"bij:9@k:W`$ff?HlmZoW"["Nb"g"|+] Drone Gun2T{XI6:R:,UW,UW,UW,UW,UW,UW __/+]Practice Shock RifleA]=6g|m |/+]Practice Lightning Gun2  Lmi(9:9:$9:9:$9:9:$G* Lg͝͝͝͝͝ {K?$CY$DD$2|d@'@u@n@@ !L"%&GO BY 0>.<,Dj=N E I @c@CP2?ynBJ <">"#-*HJ /67) xsV2 ZKXvmAdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd;ޔ.͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝dd͝;ޔ.dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝dddd͝ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddv 3JY;pmwlkhabiqUsx{}~AJLMQSVXGNOPQ-$?I(A; Pat|F Z[\]yf|2^o&F LOPMQNw] Drone Reoriented And ActivatedY]Drone Deactivatedh]No.STDU"~*2CV$=|Kr_3xD3Tύ#ύ#ύ#ύ#i|i|i|:R::R: ?7"zyU"`Xeύ#g|m:R: ?$DD2m$An$AxB] Fire Rate Wa ] @INTERNAL]Number = Time between shots.$>$=$>$(?]Fire Rate Deviation Wb ] @INTERNAL]"!Random variation of firing rate.$>$=$>defg$?]Yaw Deviation Wh ] @INTERNAL] Side to side random variation.$ff>$=$>]CancelMAbort changes.$fff?$>$L>.'KB#Wi'}@j9OIGύ#Gi|ύ#ύ#ύ#*ύ#ύ#i|0I0Iύ#ύ#i|0I ?$?]Pitch Deviation Wk ] @INTERNAL]Up/Down random variation.$>$=$>] Pitch Offset Wl ] @INTERNAL]CAUp/Down center position. Negative numbers = downward direction.$33>$=$>-OK]Accept changes.$fff?$>$L>.'KS#Wm'@Q] ComboListBox-$?^\_Se#Wp']Restore Defaults]! Set all values to the defaults.$fff?$ff&?$L>.WK:#Wq'$?]Pitch Deviation Ws ] @INTERNAL]Up/Down random variation.$@?$=$>@ntM$x  ?7"WKv$?]Yaw Deviation Wx ] @INTERNAL] Side to side random variation.$L?$=$>hu] Fire Rate W{ ] @INTERNAL]Number = Time between shots.$?$=$>BJZ|7Fktg|mg|m ?7"$(?]Fire Rate Deviation W} ] @INTERNAL]"!Random variation of firing rate.$ff&?$=$>] Pitch Offset W~ ] @INTERNAL]CAUp/Down center position. Negative numbers = downward direction.$33>$?$>DO;E7ύ#g|m:R:@ $?]Pitch Deviation WA ] @INTERNAL]Up/Down random variation.$>$?$>ERy BSF@H@$(?]Fire Rate Deviation WG ] @INTERNAL]"!Random variation of firing rate.$ff&?$?$>@R$?]Yaw Deviation WJ ] @INTERNAL] Side to side random variation.$ff>$?$>Fpv#Kw$ύ#:R:ύ# F$E$B"4$6$] Fire Rate WL ] @INTERNAL]Number = Time between shots.$>$?$>$(?]Fire Rate Deviation WM ] @INTERNAL]"!Random variation of firing rate.$>$?$>HDKNbU<ggύ#ύ#gg L L0Ig Lgg Lg fAWo e\] Pitch Offset WQ ] @INTERNAL]CAUp/Down center position. Negative numbers = downward direction.$333?$?$>Ibl;R!ύ#g|m:R: 4$6$$?]Pitch Deviation WS ] @INTERNAL]Up/Down random variation.$@?$?$>J^k+T9p)mύ#g|m:R:p 4$6$] Pitch Offset WU ] @INTERNAL]CAUp/Down center position. Negative numbers = downward direction.$333?$=$>$?]Yaw Deviation WV ] @INTERNAL] Side to side random variation.$L?$?$>Kj2Wi]8nBJ <">"] Fire Rate WX ] @INTERNAL]Number = Time between shots.$?$?$>X9[P]" DwP*9PFw.9*.9jjw.9*.9@P# G8_`M" NwQ*8QFw.8*.8jjw.8*.8a   @a  a a(((a GZ5W-*9:9:$99 GcF%  GdCp*?%C* GDeh%2L$))$,$&X9D9?$  6CF9D9?$ 6CJ9D9?$ 6CO$ ;$ q!@ Gi$fgTACLd-7-7a-7L9PR TO;9?,;aT( G4kq@GoJTli-I-I'F9:9:$@O;9?,;`@=@=a@( G@l" urw4*S4rrD 4G.Srw4*4 Gn1sfb  -7  L,6,9?,06 6 J,J6 XF,F# N9?6#A9?6#NN9?AA9?6#9DA9?66#6#6#%!N#%?~)%i9:9:$1a K , a  C ()&9:9:$1a  , a  C (),9:9:$1a T , a  C (^),I9:9:$1a R , a  C (),9:9:$1a ` , aI C (-I( G3rs5859:9:$99PG Guw%a Gxvz"UwV*5VFw.5*.5jjw.5*.5a   @a  a  a GVU}~5C{" kwU*3UFw.3*.3jjw.3*.3a   @a  a  a Gt{V.-%w.* ff&?$i$.-( E9:9:$0r*r* 6w.*. G'MrqwCLMxN I--9?Vww*-(H GAB%a GwEK W. r. *E 6E%:R  E. :.aw$ (:)W:R.:R9:9:$R  .  #B.av$ (. a. * GFG:L1O$6$6$6$-6HD?2,$9?29?L>|2~ %d?  &f?/ ,e?T ,c?y ,g?-6( G CN5.-9?&. G+0nb?+  }w.*EYZ[++Y6  S++Z6  [6  ]z+\9P99]J+\./9?&. GMI)=(f~.[UCC]%.. G ^,ar *-6'-='2% GTT+~ d ,]~.Angel%Z , %d %-6'-='2% G!""" "@33U33U33U33U33U33U33U33U33U33U33433IJ9W33B9U~33ms9UUU(33{e1UUU33E)zz33%) 331*533e1 33ls$!_33 cW33mk$)WW33e)  33U3B@@j:U2U2U2U_BpzUUUU!UUU!UUU!UUU!UUU!UU!UU!UU_!UUU!UUU!UUUsKU,c%)-We)U*BWҤbW^:*ֽAub^iJ%{e)X^f1W c)0^U+2U^U 2U~H &>~vU~_v~vտ?o-!nB UUUUppUUpOpOpOpOpOpO pUUp{ *%}P1p'LsxzR>u!͋$)pb*/- pZ~p9`^{^^:e) % DI 'LDUD@_~g_~;U~h@pU>&z+RpWWWUpOpOOpOpOpOppOpOpO * Ap%ms^{9 {b+U/bLk9pxzB~UsE){ZU,kZ(WIJbW,kW3+H[4_DGWDHUMiWUUUUU5U=MUUS3oP>jpOpOOp((OP*OPOPOP**OppOpO *)pՕ cb ZE)+_Z%)UiR1R!^_s*/UmkUiR$!UZ!WUHJ!`WE)#2)TVWW2+//K{.V.U U U U"U "U'@@@@"pUUWWpOpOpOpO,2OUUUZOUUZOUUiROUUIJpUUJOժB$!BE)A%!WB!UB!UHJUHJUHJUiRժR1}R!UBWjJ [zR UUiR UUiJ UUp W  UpJJJJ>M "U'@@@@".U".U".U".U".Ue95R&Ub!UUZg)UUR%!UHJf)UU(Bf)ՕiRe)_(Re1UR1U߀R1UR$)URD)ժHJ9UiR9UuR9 UUhR)UUJ _'RI UZhUUhRiUUiRiUU: TVUU k uOOOOM ~UG@@@@KJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jZjb'Bxh c'J +cRx cR'LkJ'+chJX cR chJx c'B_ *jUUVTJ jJ jJ jJ jJ jJ jJ jpOOOOL^UG@@@@JJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jj jI^b1 .+k'Z +kR>xLkhJڿKkZ *+kIXbIU{lsJ//--BjVVTTJ jJ jJ jJ jJ jJ jJ jpOOOOD^U'@@@@j I(J jJ jJ jJ jJ jJ jJ jJ jJ jJ jj j_e9Wު(NHZU . cW/(ObU{RzrAU_+sAZ/j VVVTJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@I JJ jJ jJ jJ jJ jJ jJ jJ jJ j 6^^w_j氜-.~} w*{UK{UO/ Wj\\\TJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@Jj j* JJ j:jUUUcJ jJ jJ j!jUUUl2@j  ?= 5W6{<ά{zxx ---z^Խ{ %% B@f)TuBJrj UUGkJ jJ jJ jJ jpOOOOD^M&@@@@ Jj jJo[ U5 o[jX-IUU^r@i UU՜IJ +k!6{!{JB\96lk2A,'?pjD9'Ь0޾wά{-VΈZ8^V2w{y`XVJ!K;eBAIs!VW%(JcE)IUUI jJ jpOOOOD^M&@@@@ JJ jJ?// "}յ-TJ*3a`AA4Ba~U1A_!aZ!A{kjsKkO9^rl V낭5Ruzxr/x^{D16%Дc{+cTTWWaiE)Ar{IJZA J(JA 1  :!z^/CdpOOOOD^M&@@@@J j Jj Օ5542-+++4tpxx\/9pX\^1\T$!u1}}9{A}i 9Xp`I-𴈂U𴈂Uke9`^.D1- E)@e)1}{$!}{0%)a79 APBa*`Ҍb_ߥR p MMOGD^M&@@@@J jJ j,"j 5555o[--xҜUSRhzRj$)7'9 A'6s!uU5!u)a .w>OQWV|jeI {Ix:NQ- 5=/`pk!]]xAܴ61Dk97'/Re)Kba>{UW W{y : *fdddD^Mg!@@@@J jJ j,* 5555| S)-0 ck}IJpz{{RzjxXe1---As<W- Եk 5 4o``{ Ĭ/\l̬U_ 4ƐUUN}Kc_!U^`9,Ŧ(BE)RabRX/b% p- ֽz₂.SDt:dlllD^M!@@@@J jJ j+* 55mcB MkZbq!_RXXXz9 5J$)=5kk---/- VzxvQzh`1s'6W.^ U6k{տkk`U{'5}kVƒ^rsxxxx ce)ԸsBշOs ַ% 7Ls5- +սz)2( llllD^M!@@@@J jJ j!j %--- [L2 )ZRZ!`IJ cɅ&9;͆ c#)775%{----8V -8^ꠠ~^~Js WŇZ5ƋsUUΌs% U8}뢀Rxx1Rxxz^Lc!sb`PsD) *-% Ҝ~s!n"' LLHHD^Mg@@@@J jJ jj --J ZjBR!(Bv6eU<~:pOpO_pOUpO*pO+ls 2]uOiR piRz9zW0ZUp9X_ެ{U.w b`C9JUUWH kJ j J????MS3IIII Jkj յ5Wm{U\Ls WUE)bDwS'J2rhZ b79 .WUA!~?Ls[xhUWS<MS3IIIIJ j%%%%Wmsz\^__9;N!UU-HJcᡀQ W\.Zx%2BJhJ Uuw1^*A pe)URSSSR_Ms3IIIIJ jncj --{1z(Bd)%%-vΰ 4pά_^͓`Uo zR(׷-): s ppxz_Ms3IIIIJ jR ---R9@bAvr!---o Mxp2jsW*.5 8ί zUGJxx^Mc$)g(J //uJxzz{_Ms3IIIIJ jJBj 5UujJa_r)UU!;y s -h@Д5 άxWZxX^U*s_oZR!; Z /-[ z+2SSS[_Ms3IIIIJ jL*j5L2&.T!RE!;j,1'u c/}Y9_Uqf)x_,cE)v7յD)URE)/ * UmsWU "j _Ms3IIIIj U"jU"_"*H"cN]U"GV: "]Q;7SXU"U"U"Uj Ut3IIII=pU"UޯoU2=oUpPUs"U"UoUWTT]/U X}oU}oU ]pU""UoޯPU"I @U33CCCCpUU=UUpUU}pC`WUޯpssUU]pUUp!UUޯOV\UU}P8uUۖAUUp8UU]ppWUp0UUdUUMo5 -TU OUOUOUOUOUO"UOUOUOUOUOUOUOUNUj /@@ܯ@]OUUU]OUUU=L*@UUU/1]˂0  2%W\3U+?ojUM"jU,2HZ9oUZ1vJHTK:jUYD  J JSi ՕީZUנ։ZUW*I W^\\J j8~vU~_v~vտ?o-!nB UUUUppUUpOpOpOpOpOpO pUUp"ppp_UUpOpOpOpOpOpOpUUp"p@DI 'LDUD@_~g_~;U~h@pU>&z+RpWWWUpOpOOpOpOpOppOpOpO * pupOpOpOOpOpOpOp*pOpO*pO p"p[4_DGWDHUMiWUUUUU5U=MUUS3oP>jpOpOOp((OP*OPOPOP**OppOpO *ppOpOOp OP OPOPOP OppOpO** p"p2+//K{.V.U U U U"U "U'@@@@"pUUWWpOpOpOpOpOpOpOpOpO* "puupOpOpOpOpO_pO_pOpOpO/*pO "p*UU*R\VU  U U  U U  UpJJJJ>M "U'@@@@".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U* Jp_ j ]U j U j U j w j ] k uOOOOM ~UG@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOL^UG@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^U'@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j J+2jUUU+Zj UUU+j UU Bj UUU BjUUUxJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jnkjUUU-Mkj U !?)ZU_\W0Z%CrB^v6eU<~:pOpO_pOUpO*pO+p}]UpO~pOUpOUpO p</D*@Wv"Un*U_.Z4 '}pOpOWWOPOPpO*pOpO~~OPOPpOP"*Jr. W UU I jU3AAAAojUUojUUojUUojUUojUUojUUojUUojUUojUUojUUojUUo"j\UU I I j ?=Ut3IIIIJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j J????MS3IIIIJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j 2jUUU/RjUUUjUUUTJ j J????MS3IIIIJ jJ jJ jJ jJ jJ jJ jGjUU+I UխI ** L1(~i1&zx1i UWT] J????MS3IIIIJ jJ jJ j!jUUU-\j UUU/UU JU_ B|1&PAE)_ sW__j\WUU J????MS3IIII Jj UթQ3Ue UC+U*UUU9}&uU9xUUUIJH U  JJ j J????MS3IIIIj jNj UU"I UU-"i WUU)j xUUUI jJ jJ jJ jJ jJ jJ jJ jJ j J????MS3IIIIJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j J????MS3IIIIJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j J????MS3IIIIj U"jU"jU"jUj UjUj U"jU"jU"jU"jU"jUj U"jUj Ut3IIII}pUUpaa=oUWcޯOUU+pUU =pUU$ /58>}OUWcoUU6UU}/UU"US`=UU@]"UUr"I @U33CCCCpWW^ޯpaaUU/ssUU=p UU{pUU,UUp28UUpcUU6UU"UUޯpUUUU=UUSSUUMo5 -TU NUNUNUNUNUO"UNUNUNUNUNUNUNUNUj /@@@]OUUU]OUUU]oUUU]OUUU]OUUU]pU\3U+?ojUOjUpjUOjUOjUpj @UjUYD J jJ jJ jJ jJ j)jUUU J8~vU~_v~vտ?o-!nB UUUUppUUpOpOpOpOpOpO pUUp"ppp_UUpOpOpOpOpOpOpUUp"p@DI 'LDUD@_~g_~;U~h@pU>&z+RpWWWUpOpOOpOpOpOppOpOpO * pupOpOpOOpOpOpOp*pOpO*pO p"p[4_DGWDHUMiWUUUUU5U=MUUS3oP>jpOpOOp((OP*OPOPOP**OppOpO *ppOpOOp OP OPOPOP OppOpO** p"p2+//K{.V.U U U U"U "U'@@@@"pUUWWpOpOpOpOpOpOpOpOpO* "puupOpOpOpOpO_pO_pOpOpO/*pO "p*UU*R\VU  U U  U U  UpJJJJ>M "U'@@@@".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U* Jp_ j ]U j U j U j w j ] k uOOOOM ~UG@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOL^UG@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j KjUUU-)|j UU t U_kJUK|j UUc "jUUUTJ jJ jJ jpOOOOD^U'@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j/j UU%ҽ ƈc lkx Itc/ lB@p|)8X:(|i T^{nJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jBjUUU5pU% ީJ- 샨[ZItS_ dGKਾ_[BzX\Jl);;{i)\ZwH2jUUUTJ jJ jpOOOOD^M&@@@@J jJ jJ j J JJ jJ jJ jJ jJ jJ jJ jJ jJ jJ*jUUU+j Uս*W։B7 b ^bV%/b-/KPpp[(KpSp:)TY HK#!K*R)v&:j TT\XJ jJ jpOOOOD^M&@@@@J jJ j J*j  տ++j UVX J+*jUUU5cj UU |U 0I U^p1jUUU kj UUU-IU+Ei*Z-gR~-{B/zgJ _UJ 7hk``xx'KE2B:xK:WUBF2oK)^F:j\XXUJ jJ jpOOOOD^M&@@@@j jj jj յ--U-+l2U/: c* 1O[-/ 2|sBRΤR-  atPXGB\VLt'B/cBW([F::7_U-{x誡̤E2W^xBE2J:uUu='S*+xBj `ZWUJ jJ jJ jpOOOOD^M&@@@@j jj jj -%% "*m2ս+ K,* k:- N[{-- Ӝ(Ҕ** Uhs``@jBzU 9^ISJJ[:¯ S1fBD!WhB$!Z K) s Kk WMBUV\z:i ^f:j`\WUJ jJ jJ jJ jpOOOOD^M&@@@@j jj j 5555: "- Bl2.[B Mc%-]U+UUuӜ GJ@(Lk9 Kc:|^J1_J#!z_jsd)}Uՠkse)խ͋) _sf!U{U(si *Usj pWUJJ jJ jJ jJ jJ jpOOOOD^M&@@@@j jj jj 555:! -BL2U-[B+ nk -4 ʶ7{{{s75gR\l(B-{5U t~)G_URj WUUj J JJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@j jj jj 5L2 J+2յ/ncJ nk%5Ӝ +-%Xh|WӜ{z {׸4soPZ`z IWURj \UUUJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@j jj jj 5l:--Jk:- -ocJ sNc-/*Ӝk///U󜒌u1 u U4*:hjRj \UUUJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@j j jj %- *-J+*)- SB+NcJsSsO[R.S1|.[ Uk !````J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@j j j !-l: B,**Bm2+O[B-/o[K:~N[WJ(Unci_U|j `ZUUJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@j jj jj/ " ,* : "/:,*UK:i xz^J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@j jj jj k  /- ",*} "j x^W JJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@j jj jj  k  %%j ^j x^UJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^U'@@@@-jUUU,j UUU, UUU, UUU,jUU,jUUU,jUUU,jUUU,j UUU-jUUU-jUUU-jUUU,j UUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU-jUUU-jUUU J*OOOOL ~UG@@@@"p]UW"pUUU"OW_"OUU"OUU"OUU"OUU"OUU"P"pUUU"pwu"pWUU"pUUU"OUW"OUU"OUU"OUU"O"O_"OUU"OUU"OUU"OUU"OUU"O"pUUU"p*o * WTXrOOOKM "UG@@@@"pWUUWpOpOpOWpOUpOUpOUOUՕܖޯpXPp`" %p\XPpޯp5% "`pPXz/p"xO%%oXX__zCOTTTTpOUUpOUpOpOpO"*"pp""J**JJJH_M "U'@@@@pOpOOp((OPOPOPOP**/5% ޯ"P"@5Uޯ/`@" O\TVWzޯpW.`\o%%%%oXXXXzCOTTTTOPOPOPOp pO**p"p"p?#h`p_U "^U( @@@@"pVVWVpO蠀pOp"OOp OpOpޯ pV "WVT\" ޯ*@`pOzO7ޯop@p%%%%pXXXX{/WoU_ppOppOpOﯪpO "pq"" JJL% U9D*j=t;ppUpOpOꪨpOpOpO pUUUTpTUUUp UUUXUUUp UUUppUUUpOpUUUCpTUUUpUUUp&UUUpXUUUpUUUpUUUppUUUpO*pO pO PP pU<_v6eU<~:pOpO_pOUpO*pO+p}]UpO~pOUpOUpO p</D*@Wv"Un*U_.Z4 '}pOpOWWOPOPpO*pOpO~~OPOPpOP"*Jr. W UU I jU3AAAAojUUojUUojUUojUUojUUojUUojUUojUUojUUojUUojUUo"j\UU I I j ?=Ut3IIIIJ jJ jJ jJ jJ jJ jJ jJ jJ jѽjUU U lUcj UPhJ j J????MS3IIIIJ jJ jJ jJ jJ jJ jJ jJ[j UUU%i 5 5,`ש/StT\[)X[1B[2jUWVT J????MS3IIIIJ jJ M* U/.Sj UU Ӝ կ i W\ խDi+.B({]fB*=Ue:XxBf:*zJ`X*jTVUU J????MS3IIII Jm2 -.[,"ս/*ҜS 40P{@kBR)xZ1[{1-^)Ugki xXUF2j\UUUJ j J????MS3IIIIj jL2j----ncK25-4s -zӜ{ bZh'xUj xWUUJ jJ jJ jJ jJ j J????MS3IIIIj jL2 5NcK2//q.S//UӔocUNc X\\\J jJ jJ jJ jJ jJ jJ j J????MS3IIIIj jj --:+.S,**/Uci WWJj UUkj\UUUJ jJ jJ jJ jJ jJ jJ j J????MS3IIIIj j j  "j x^UJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j J????MS3IIIIj U" U"jU"jUj UjUj U"jU"jU"jU"jU"jUj U"jUj Ut3IIIIpOOPOPޯoUՕާP@ ޯ"cAɅޯOAcrTR}O}O+OTTTTOP pO"p"I @U33CCCCpWW^pOpOWp5%Uޯ".U"'6U}pPXVU}0[U}pU}pU*U@UpO]*pO/+p=Mo5 -TU NUNUNUNUNUO"UNUNUNUNUNUNUNUNUj /@@[@]OUUU]OUUU]oUUU]OUUU]OUUU]pU\3U+?ojUOjUpjUOjUOjUpj @UjUYD J jJ jJ j**jUUU U ""xSj VXXZ8UU"^WU*UUU U#= ]@Մ.UUUք/UUU.UU*cJUU-/i UUg 7Di q5Uqj pWUjTUUU8~vU~_v~vտ?o-!nB UUUUppUUpOpOpOpOpOpP pUUp"ppp_W_pOpOpOpOpO /Q"pUq"r"q_"p@DI 'LDUD@_~g_~;U~h@pU>&z+RpWWWUpOpOOpOpOpOpp"PpP ?Q"pU_]_poq"p__pOpOOpOpOpQ"Or*Qr"Rr"pzp"p[4_DGWDHUMiWUUUUU5U=MUUS3oP>jpOpOOp((OP*OPOPOP**pPq"P+q"q"pUUq"qp"PPo OP OPP"O/r"Q=5/*R*Qr"pZ^VWp"p2+//K{.V.U U U U"U "U'@@@@"pUUWWpOpOpOpOpOpOqOq"Q+.**q*q*q"P"q"Pq"PUpO_s*P?/2r"+:**r"ZQ"pWWWW"p*UU*R\VU  U U  U U  UpJJJJ>M "U'@@@@".U".U".U".U".U".U".U"/U*/U3Q"U+Q*U+P"U*Q"U*Q"U*1"U"0"U;R*XK: 7C2~W21"W"/U".U* Jp_ j ] j W j U j w j ] k uOOOOM ~UG@@@@J jJ j J J JJ j JJ k L l  !!_- !_Zz!o!o#9:! [B11|hm^zzl KK  JK  JJ jJ jJ jJ jpOOOOL^UG@@@@J jJ j J JL ꪪL J K mk+ m !-%!!2!z1 :*R:R8:{zzX1!z|h!n zx\om W_}nl UU]Zj L JJ jJ jJ jJ jJ jpOOOOD^U'@@@@J jJ jJ jJ jK njLm U]L !o/) 2! 32!_yJ) }b2Uտ j:Uݿ*?sZb::\\\x:!~Zxx!W_!oLK J  J J J J JpOOOOD^M&@@@@J jJ jJ jJ jJ jj m₊m )-1//:B!U:B!UU:)ZJ1+ ZU:qWBՕ5?zUU=ZUU_}Rzj1蠪{R)WV:!xX\^ol ^pnk_m jm jl jK k JJ jpOOOOD^M&@@@@J jJ jJ jJ jJ j Jn k/?)n-~J1 -5s]B_ {:U_j9B=`jWB/ zR _U_}R^XppzR1^{R7B58B!xx)U~)oW)oWn nkl j JJ jJ jpOOOOD^M&@@@@J jJ jJ j J J KL ol =1 -s1 -?j-}R^Xܶ\R?b5%\Z[_\\V\bzR~b`zR1Z:^z9B)_1x^)ozWKk J JJ jJ jJ jpOOOOD^M&@@@@J jJ jJ j JJ L l U%m +-!o-/8:!-+z: j1./b`r+ __ 5=\Zx]{ZUպjBxR1B~_oxWWLk M K ꪪ J JJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ j JK nk !m U:+Z1omuWJ --?J==5? ? _~xp`{j~~xxb8BxxX\|b1'%%|R1W^^1!^~!W~m ~Ll jK  JJ jpOOOOD^M&@@@@J jJ jJ jJ jJ j JK 﫪k K*l Lm /-- 6J!-Bo .B---/%-UUVp_x?xzkxxx^Z2xxxx) ;BW_~x9B)W|`)|^!Wm _ L l K K  JpOOOOD^M&@@@@J jJ jJ jJ jJ  Kk KNkl Uկ+1o/ Z)-+Z)pp9B5̟ u濃UU_{YBxx^{R!ߟ[B+zW_p`j2_x;BWW^xm z~^xl kÀK  J J JpOOOOD^M&@@@@J jJ jJ jJ j JK Njm 5% !5-+2!/]7B!z:--ߛ<:brk>{{RW;sZ_W}jIxVr1% _b.|RUU?<:U\J1xxxz)n xol UU`j jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ j JJ L nk+Lm _UN +//:!%- }J55ݟZ‚z?Z׿/Z___x[R7: qXBɉzcbU9_WZ1UR1xU1!x~1n _)o]m ~ZXzK  JJ jJ jpOOOOD^M&@@@@J jJ j J JK K K  Km J***)o5--:B)-)/-~R5u]J^_Ub-?Rx^W{Z:U^j1*Uq!UUI!_WU))pU!o _Upl zl Knjl JK J jJ jpOOOOD^M&@@@@J jJ j J J J J JK K///)-::!//-%~R2WJ1>755?kR Ub:~~_1!W)^!!!x^zm _W^^mjmjK  J J K JJ jpOOOOD^M&@@@@J jJ jJ jJ jJ jJ j JL L!n /=1/2!_R)---R9:o9:!~!_pnW!l xz|~K  JJ  JJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ j Jk J***k Kl Jl 5!7}!758:) 9B!zz!zzm L nl ^WWl }l zxk j JJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ j J KJ K nl 5k!n ----1!_U)xz_m `xzl Jl Jk K*K/l -5l k K JJ jJ jJ jJ jJ jJ jpOOOOD^U'@@@@-jUUU,j UUU,jUUU,jUUU,jUUU,jUUU,jUUU,jUUU,j UUU/l UUU.l UUUR*r*!UUP"_WU.m UUU,jUUU,jUUU,j UUU,j UUU-l UUU-" UUU-kUUU,jUUU,jUUU,jUUU,jUUU-jUUU-jUUU J*OOOOL ~UG@@@@"p]UW"pUUU"OW_"OUU"OUU"OUU"OUU"OUU"P"qUUU"qwu2s" 2s"*Q"UW"PUU"OUU"OUU"O"O_"OUU*PUU"PUU"OUU"OUU"O"pUUU"p*o * WTXrOOOKM "UG@@@@"pWUUWpOޯOU% pU8߯pUWp@PUCOUVTTpOpOpO **r"p孭*R*Q_"UpO_pO_UpO_UޯoU% "U߯"UWp@pOO"P_p"O__WWpOpOpO"*"pp""J**JJJH_M "U'@@@@pOpOO %"OjWp@O2+&oU\Xp@߯"_ U7&* Xޯ*Wp@zC O_\WUOP"OWUUO_UUpU% +pUVXp."_p+P_ULUUUT"p?#h`p_U "^U( @@@@"pVVWVpO蠀OU ޯoV"`Op7777"X߯"p`@p p&7"\\X"U]@C"%ޯoUWTXOp* pU8ޯ^`O o6opppX;@@@ޯp55Pp;]TVUU" JJL% U9D*j=t;ppU]p5UUUޯpUUpXUUUpUUUp7UUUpXUUUޯp UUpWUUULUUUUUpxUUUpUUUޯp5UUUppUUUpOzp5UUUޯpUUpXUUU]p5UUUާOUU\pTUUUpUUUpO ޯpUUp`WUUpU<_v6eU<~:pOpO_pOUpO*pP*+p__pOpOUpOUR"qq</D*@Wv"Un*U_.Z4 '}pOpOWWOPpOU"P "Pq"P^^POt*PՕ- 2r"Uzpq"pVU"*Jr. W UU I jU3AAAAojUUojUUojUUojUU"m UU*UU*UUq"UU:12__pk UUo"j\UU I I j ?=Ut3IIIIJ jJ jm j?kUUl -*)/ XB!u.|R!j::}j`1oxxl U_xp K J J J????MS3IIIIJ jJ jL i)m -5b!U j1j7BZUS _ZBWV\ZJ)Wxpb!n^V)l UUnj~K j J????MS3IIIIJ jJ jk j+l ս=b!-_ZJbU_rU5~- _bT\^|b)ﮨ9B^_!l x^UWk j J J????MS3IIIIJ jJ j Jm j )m /8J0ۻr555_]^\X^:j)W_^x)n_~Kl j J????MS3IIIIJ jJ jj jK?)L / b)˯%~vU~_v~vտ?o-!nB UUUUppUUpOpOpOpOpOpO pUUp"ppp_UUpOpOpOpOpOpOpUUp"p@DI 'LDUD@_~g_~;U~h@pU>&z+RpWWWUpOpOOpOpOpOppOpOpO * pupOpOpOOpOpOpOp*pOpO*pO p"p[4_DGWDHUMiWUUUUU5U=MUUS3oP>jpOpOOp((OP*OPOPOP**OppOpO *ppOpOOp OP OPOPOP OppOpO** p"p2+//K{.V.U U U U"U "U'@@@@"pUUWWpOpOpOpOpOpOpOpOpO* "puupOpOpOpOpO_pO_pOpOpO/*pO "p*UU*R\VU  U U  U U  UpJJJJ>M "U'@@@@".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U".U* Jp_ j ]U j U j U j w j ] k uOOOOM ~UG@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOL^UG@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^U'@@@@J jJ jJ jJ jbj UU#kjUsi UUUtj UUOtjUUlj UUUxJ j(:jUUsj UUBjUUUXJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ j9j U5k:> tJ maV‰{c|UR| (/l`xxOt^+UkJ;$ k)Xַsi Uz ljUU^JJ j J?kjUU sj UUWjUUUTJ jJ jJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jAj k[9 .tA**j|c UUot+U|sU:+U|UUP^JsgJ~`J[c9 ЄJc ф.t_^|j UWP|i kP|U.|IzxxX JJ jJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ j J?kcj  %R**z*otkc +[otkV(|k W|c ^l=U|UgJ\фRNt- Ot`bkԴ N|+򌰄U[P|ckt 6%ь^|j UVTVJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ j Jti #mUr# tc?=5|k+/|O|Zp|GB`|s tL[xфK[׶ф S Ot p|ڰ |i҄q|(u|tT_Rj~~/|2Jt  J`jTUUUJ jJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ jJ j Kj5UUUk 5U|LK* |tp|GBr`J}p|PtJ  p|+Sq|[`c^҄c_Ptc P|k0tB``pptfJ----/t)֦O|I2{* U^ Sj UUUTJ jJ jJ jpOOOOD^M&@@@@J jJ jJ jJ jJ jJ jJ jJ jtj-UUUOtj+Uo|UsJ=1cC! t [--/ o|} 0t`/tX_0t}Te0tm[VtJzk9XX_^/|J--ME! ޮcW5~ﱄUU^ƩVWЬU_Z UUU|JpOOOOD^M&@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jGBj UcH:+. c1 tR- -.t k l``aЄkt}o/t [ZPkJZ1ܾ./kB`Q|1k% 着着]c\B_QKnD "^MF@@@@J jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jBj-UUUJj ,UU{j U|ccYc p|nsW^r|BjzXtB-+s$v6eU<~:pOpO_pOUpO*pO+p}]UpO~pOUpOUpO p</D*@Wv"Un*U_.Z4 '}pOpOWWOPOPpO*pOpO~~OPOPpOP"*Jr. W UU I jU3AAAAojUUojUUojUUojUUojUUojUUojUUojUUojUUojUUojUUo"j\UU I I j ?=Ut3IIIIJ jJ j{j UUU/kjUUwMSjUUU2jUUU\:jUUU "jUUUTJ jJ jJ jJ jJ jJ j J????MS3IIIIJ j)jkGB {hB/'.l:KS_-|ev+ |j U^O|j UU)UcjUU\TJ jJ j J????MS3IIIIJ jJ jj +Un|iB+|k* c/xcpUWфc-(-ф.tp8ф/tpZhB " :jWTUUJ j J????MS3IIIIJ jJ jJ jcj UUOt -UO|'2.t1--/c|k^PtM[~/tB46(:)ƪU^z,I UUW| I???>MS3IIIIJ jJ jJ jJ jJ jcj -%UsG.//,Kt Rj`k:MI]k5-}``@|2^ppMs3IIIIJ jJ jJ jJ jJ jJ jJ jj5UUUp|j % [pP|һ UHUJcm*p^Mt3IIIIJ jJ jJ jJ jJ jJ jJ jJ j+*jUUU/|j uUUj UUJ jJ jr( -UUJj UMS3IIIIJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ jJ j J????MS3IIIIj U"jU"jU"jUj UjUj U"jU"jU"jU"jU"jUj U"jUj Ut3IIIIpOp 23`p}OU"UU6,s3MM@I}OU]oUU4 OU_@UoUu,}OU pUW"UU`\"I @U33CCCCpWW^PU}pCU}p"U]$UpnU}"U}p$U]BzUpU"44UpU":UTTWUMo5 -TU NUNUNUNUNUO"UNUNUNUNUNUNUNUNUj /@@@]OUUU]OUUU]oUUU]OUUU]OUUU]pU\3U+?ojUOjUpjUOjUOjUpj @UjUYD K?όiU+/2jU_ki U],jUUWJUU_pJ j8"A9?ff&?appAccuracy: 9UG % G [9hE*.9?% /9?%GBG./9?,d G\Z)'     M%(%/. GM@@..9?&P/.9?MM9D/.(&(&(>>(>( G^1>g$6$d69=,69=,"A9?? apSequential Hits: 9S*"A9? ?'apHighest Number Of Hits: 9S<"A9?ff&?appAccuracy: 9UB % G `6E*09?% -9?%BBB0-9?,d Ga_)%D     C%*%-0 GCY#Y.09?&P-09?CC9D-0*&*&*<<*<* G@bcdEOx5O %E2 !&F2 /,H2  G za  zu.,.,.,'.,!.,., ., ., &., .,.,.,.,%.,.,.,.,.,"., .,'9S%  '9S% '9S% '''9U% !'!9U% '9S&  '9S& '9S& &'&9U& '9U& '9S,  '9S, '9S, %'%9U, '9U, '9S,  '9S, '9S, "'"9U,  ' 9U, 9J9J,Z 09J%9J, 079J%9J, 0f9L'=' 0.19L!9?%! 0.009J9J,Z 09J%9J, 0a9J%9J, 09L&=& 0.19L9?% 0.009J9J,Z 0H9J%9J, 09J%9J, 09L%=% 0.19L9?% 0.00/ 9J9J,Z 0r 9J%9J, 0 9J%9J, 0 9L"=" 0.1 9L 9?% 0.00 GtFy$a/!ua/!La/!=a/!8a/!Ia/!;(w.*%.TargetPractice.DroneGun&.TargetPractice.InfiniteShockRifle,.TargetPractice.InfiniteLightningGun,.TargetPractice.InfiniteRocketLauncher,.xWeapons.TransLauncher'a/!8. nw.*.-'($a/!A(:a/!~(Sa/!u(la/!c(a/!e(a/!h(a/!y-'(a/!g( a/!{-'(5a/!z-'(Na/!t(ga/!d(a/!}q!H(' GgkSv%  9J% 9J% 9J% 9L'% 9L!&  9J& 9J& 9J& 9L&& 9L,  9J, 9J, 9J, 9L%, 9L,  9J, 9J, 9J, 9L", 9L  E(' GljnB#E(' Gomq:+$ 15 30 40' 3.00! 1.00 45 20 33& 4.00 1.00 10 10 45% 4.00 2.00 10 10 45" 5.00 2.00' Grpr['UrK9J.. -909J.,Z. 90%r9J.%. 09J.,. 180%rF9J.%. 09J.h. 360%r'9L.=. 0.1%r!9L.9?%. 0%r_9J.. -909J.,Z. 90%r9J.%. 09J.,. 180%rZ9J.%. 09J.h. 360%r&9L.=. 0.1%%r%9L.9?%. 0rp9J.. -909J.,Z. 906&r9J.%. 0##9J.,. 1806rk9J.%. 09J.h. 3606r%9L.=. 0.166r69L.9?%. 0r9J.. -909J.,Z. 90G7r9J.%. 0449J.,. 180Gr|9J.%. 09J.h. 360Gr"9L.=. 0.1GGr G9L.9?%. 0r G 5  Ge)//============================================================================= // Target Practice - Rachel "Angel Mapper" Cordone //============================================================================= class TargetPracticeMutator extends Mutator Config(TargetPractice); var config int PitchOffset[4], PitchDeviation[4], YawDeviation[4], DroneType; var config float DroneFireRate[4], FireRateDeviation[4]; var InfiniteShockRifle ISR; function PostBeginPlay() { Super.PostBeginPlay(); } // Removes everything from the game and gives you the weapons that go with the Drone Type you have chosen. function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { bSuperRelevant = 0; // Don't want to delete the weapons I just gave you! if (Other.isA('Weapon') && !Other.isA('TransLauncher') && !Other.isA('InfiniteLightningGun') && !Other.isA('DroneGun') && !Other.isA('InfiniteShockRifle') && !Other.IsA('InfiniteRocketLauncher')) return false; if ( xPawn(Other) != None) { xPawn(Other).RequiredEquipment[0] = "TargetPractice.DroneGun"; xPawn(Other).RequiredEquipment[1] = "TargetPractice.InfiniteShockRifle"; // Gives Shock for shock drone. xPawn(Other).RequiredEquipment[2] = "TargetPractice.InfiniteLightningGun"; // Gives Lightning Gun for TransBeacon drone. xPawn(Other).RequiredEquipment[3] = "TargetPractice.InfiniteRocketLauncher"; // Gives Rocket Launcher for shits and giggles. xPawn(Other).RequiredEquipment[4] = "xWeapons.TransLauncher"; return true; } if (Other.isA('DroneGun')) DroneGun(Other).DroneType = DroneType; // Passing off saved variables to the newly created weapon. if ( xWeaponBase(Other) != None ) { xWeaponBase(Other).bHidden=true; return false; } if (Other.isA('WeaponPickup')) return false; if (Other.isA('UTAmmoPickup')) return false; if( Other.IsA('AdrenalinePickup') ) return false; else if( Other.IsA('MiniHealthPack') ) return false; else if( Other.IsA('UDamagePack') ) return false; else if( Other.IsA('ShieldPack') ) return false; else if( Other.IsA('ShieldCharger') ) { Other.bHidden=True; return false; } else if( Other.IsA('SuperShieldPack') ) return false; else if( Other.IsA('SuperShieldCharger') ) { Other.bHidden=True; return false; } else if( Other.IsA('SuperHealthCharger') ) { Other.bHidden=True; return false; } else if( Other.IsA('HealthPack') ) return false; else if( Other.IsA('SuperHealthPack') ) return false; else if(Other.IsA('WeaponLocker') ) { Other.GotoState('Disabled'); return false; } return true; } ]Target PracticeC*]UT2HeaderFont$<-$Bxclass TargetPracticeConfig extends GUIPage; var moEditBox PitchOffsetEditBox0, PitchOffsetEditBox1, PitchOffsetEditBox2, PitchOffsetEditBox3; var moEditBox PitchDeviationEditBox0, PitchDeviationEditBox1, PitchDeviationEditBox2, PitchDeviationEditBox3; var moEditBox YawDeviationEditBox0, YawDeviationEditBox1, YawDeviationEditBox2, YawDeviationEditBox3; var moEditBox DroneFireRateEditBox0, DroneFireRateEditBox1, DroneFireRateEditBox2, DroneFireRateEditBox3; var moEditBox FireRateDeviationEditBox0, FireRateDeviationEditBox1, FireRateDeviationEditBox2, FireRateDeviationEditBox3; function InitComponent(GUIController MyController, GUIComponent MyOwner) { Super.InitComponent(MyController, MyOwner); //Set the variables to the controls PitchOffsetEditBox0 = moEditBox(Controls[3]); PitchDeviationEditBox0 = moEditBox(Controls[4]); YawDeviationEditBox0 = moEditBox(Controls[5]); DroneFireRateEditBox0 = moEditBox(Controls[6]); FireRateDeviationEditBox0 = moEditBox(Controls[7]); PitchOffsetEditBox1 = moEditBox(Controls[10]); PitchDeviationEditBox1 = moEditBox(Controls[11]); YawDeviationEditBox1 = moEditBox(Controls[12]); DroneFireRateEditBox1 = moEditBox(Controls[13]); FireRateDeviationEditBox1 = moEditBox(Controls[14]); PitchOffsetEditBox2 = moEditBox(Controls[15]); PitchDeviationEditBox2 = moEditBox(Controls[16]); YawDeviationEditBox2 = moEditBox(Controls[17]); DroneFireRateEditBox2 = moEditBox(Controls[18]); FireRateDeviationEditBox2 = moEditBox(Controls[19]); PitchOffsetEditBox3 = moEditBox(Controls[20]); PitchDeviationEditBox3 = moEditBox(Controls[21]); YawDeviationEditBox3 = moEditBox(Controls[22]); DroneFireRateEditBox3 = moEditBox(Controls[23]); FireRateDeviationEditBox3 = moEditBox(Controls[24]); //Initialize the controls' values PitchOffsetEditBox0.IntOnly(true); PitchOffsetEditBox0.SetText(string(class'TargetPracticeMutator'.default.PitchOffset[0])); PitchDeviationEditBox0.IntOnly(true); PitchDeviationEditBox0.SetText(string(class'TargetPracticeMutator'.default.PitchDeviation[0])); YawDeviationEditBox0.IntOnly(true); YawDeviationEditBox0.SetText(string(class'TargetPracticeMutator'.default.YawDeviation[0])); DroneFireRateEditBox0.FloatOnly(true); DroneFireRateEditBox0.SetText(string(class'TargetPracticeMutator'.default.DroneFireRate[0])); FireRateDeviationEditBox0.FloatOnly(true); FireRateDeviationEditBox0.SetText(string(class'TargetPracticeMutator'.default.FireRateDeviation[0])); PitchOffsetEditBox1.IntOnly(true); PitchOffsetEditBox1.SetText(string(class'TargetPracticeMutator'.default.PitchOffset[1])); PitchDeviationEditBox1.IntOnly(true); PitchDeviationEditBox1.SetText(string(class'TargetPracticeMutator'.default.PitchDeviation[1])); YawDeviationEditBox1.IntOnly(true); YawDeviationEditBox1.SetText(string(class'TargetPracticeMutator'.default.YawDeviation[1])); DroneFireRateEditBox1.FloatOnly(true); DroneFireRateEditBox1.SetText(string(class'TargetPracticeMutator'.default.DroneFireRate[1])); FireRateDeviationEditBox1.FloatOnly(true); FireRateDeviationEditBox1.SetText(string(class'TargetPracticeMutator'.default.FireRateDeviation[1])); PitchOffsetEditBox2.IntOnly(true); PitchOffsetEditBox2.SetText(string(class'TargetPracticeMutator'.default.PitchOffset[2])); PitchDeviationEditBox2.IntOnly(true); PitchDeviationEditBox2.SetText(string(class'TargetPracticeMutator'.default.PitchDeviation[2])); YawDeviationEditBox2.IntOnly(true); YawDeviationEditBox2.SetText(string(class'TargetPracticeMutator'.default.YawDeviation[2])); DroneFireRateEditBox2.FloatOnly(true); DroneFireRateEditBox2.SetText(string(class'TargetPracticeMutator'.default.DroneFireRate[2])); FireRateDeviationEditBox2.FloatOnly(true); FireRateDeviationEditBox2.SetText(string(class'TargetPracticeMutator'.default.FireRateDeviation[2])); PitchOffsetEditBox3.IntOnly(true); PitchOffsetEditBox3.SetText(string(class'TargetPracticeMutator'.default.PitchOffset[3])); PitchDeviationEditBox3.IntOnly(true); PitchDeviationEditBox3.SetText(string(class'TargetPracticeMutator'.default.PitchDeviation[3])); YawDeviationEditBox3.IntOnly(true); YawDeviationEditBox3.SetText(string(class'TargetPracticeMutator'.default.YawDeviation[3])); DroneFireRateEditBox3.FloatOnly(true); DroneFireRateEditBox3.SetText(string(class'TargetPracticeMutator'.default.DroneFireRate[3])); FireRateDeviationEditBox3.FloatOnly(true); FireRateDeviationEditBox3.SetText(string(class'TargetPracticeMutator'.default.FireRateDeviation[3])); //Reset any invalid values to the defaults if (int(PitchOffsetEditBox0.GetText()) < -90 || int(PitchOffsetEditBox0.GetText()) > 90) PitchOffsetEditBox0.SetText("0"); if (int(PitchDeviationEditBox0.GetText()) < 0 || int(PitchDeviationEditBox0.GetText()) > 180) PitchDeviationEditBox0.SetText("0"); if (int(YawDeviationEditBox0.GetText()) < 0 || int(YawDeviationEditBox0.GetText()) > 180) YawDeviationEditBox0.SetText("0"); if (float(DroneFireRateEditBox0.GetText()) < 0.1 ) DroneFireRateEditBox0.SetText("0.1"); if (float(FireRateDeviationEditBox0.GetText()) < 0) FireRateDeviationEditBox0.SetText("0.00"); if (int(PitchOffsetEditBox1.GetText()) < -90 || int(PitchOffsetEditBox1.GetText()) > 90) PitchOffsetEditBox1.SetText("0"); if (int(PitchDeviationEditBox1.GetText()) < 0 || int(PitchDeviationEditBox1.GetText()) > 180) PitchDeviationEditBox1.SetText("0"); if (int(YawDeviationEditBox1.GetText()) < 0 || int(YawDeviationEditBox1.GetText()) > 180) YawDeviationEditBox1.SetText("0"); if (float(DroneFireRateEditBox1.GetText()) < 0.1 ) DroneFireRateEditBox1.SetText("0.1"); if (float(FireRateDeviationEditBox1.GetText()) < 0) FireRateDeviationEditBox1.SetText("0.00"); if (int(PitchOffsetEditBox2.GetText()) < -90 || int(PitchOffsetEditBox2.GetText()) > 90) PitchOffsetEditBox2.SetText("0"); if (int(PitchDeviationEditBox2.GetText()) < 0 || int(PitchDeviationEditBox2.GetText()) > 180) PitchDeviationEditBox2.SetText("0"); if (int(YawDeviationEditBox2.GetText()) < 0 || int(YawDeviationEditBox2.GetText()) > 180) YawDeviationEditBox2.SetText("0"); if (float(DroneFireRateEditBox2.GetText()) < 0.1 ) DroneFireRateEditBox2.SetText("0.1"); if (float(FireRateDeviationEditBox2.GetText()) < 0) FireRateDeviationEditBox2.SetText("0.00"); if (int(PitchOffsetEditBox3.GetText()) < -90 || int(PitchOffsetEditBox3.GetText()) > 90) PitchOffsetEditBox3.SetText("0"); if (int(PitchDeviationEditBox3.GetText()) < 0 || int(PitchDeviationEditBox3.GetText()) > 180) PitchDeviationEditBox3.SetText("0"); if (int(YawDeviationEditBox3.GetText()) < 0 || int(YawDeviationEditBox3.GetText()) > 180) YawDeviationEditBox3.SetText("0"); if (float(DroneFireRateEditBox3.GetText()) < 0.1 ) DroneFireRateEditBox3.SetText("0.1"); if (float(FireRateDeviationEditBox3.GetText()) < 0) FireRateDeviationEditBox3.SetText("0.00"); } function bool OKClick(GUIComponent Sender) { class'TargetPracticeMutator'.default.PitchOffset[0] = int(PitchOffsetEditBox0.GetText()); class'TargetPracticeMutator'.default.PitchDeviation[0] = int(PitchDeviationEditBox0.GetText()); class'TargetPracticeMutator'.default.YawDeviation[0] = int(YawDeviationEditBox0.GetText()); class'TargetPracticeMutator'.default.DroneFireRate[0] = float(DroneFireRateEditBox0.GetText()); class'TargetPracticeMutator'.default.FireRateDeviation[0] = float(FireRateDeviationEditBox0.GetText()); class'TargetPracticeMutator'.default.PitchOffset[1] = int(PitchOffsetEditBox1.GetText()); class'TargetPracticeMutator'.default.PitchDeviation[1] = int(PitchDeviationEditBox1.GetText()); class'TargetPracticeMutator'.default.YawDeviation[1] = int(YawDeviationEditBox1.GetText()); class'TargetPracticeMutator'.default.DroneFireRate[1] = float(DroneFireRateEditBox1.GetText()); class'TargetPracticeMutator'.default.FireRateDeviation[1] = float(FireRateDeviationEditBox1.GetText()); class'TargetPracticeMutator'.default.PitchOffset[2] = int(PitchOffsetEditBox2.GetText()); class'TargetPracticeMutator'.default.PitchDeviation[2] = int(PitchDeviationEditBox2.GetText()); class'TargetPracticeMutator'.default.YawDeviation[2] = int(YawDeviationEditBox2.GetText()); class'TargetPracticeMutator'.default.DroneFireRate[2] = float(DroneFireRateEditBox2.GetText()); class'TargetPracticeMutator'.default.FireRateDeviation[2] = float(FireRateDeviationEditBox2.GetText()); class'TargetPracticeMutator'.default.PitchOffset[3] = int(PitchOffsetEditBox3.GetText()); class'TargetPracticeMutator'.default.PitchDeviation[3] = int(PitchDeviationEditBox3.GetText()); class'TargetPracticeMutator'.default.YawDeviation[3] = int(YawDeviationEditBox3.GetText()); class'TargetPracticeMutator'.default.DroneFireRate[3] = float(DroneFireRateEditBox3.GetText()); class'TargetPracticeMutator'.default.FireRateDeviation[3] = float(FireRateDeviationEditBox3.GetText()); class'TargetPracticeMutator'.static.StaticSaveConfig(); Controller.CloseMenu(false); return true; } function bool CancelClick(GUIComponent Sender) { Controller.CloseMenu(false); return true; } function bool RestoreDefaultsClick(GUIComponent Sender) { PitchOffsetEditBox0.SetText("15"); PitchDeviationEditBox0.SetText("30"); YawDeviationEditBox0.SetText("40"); DroneFireRateEditBox0.SetText("3.00"); FireRateDeviationEditBox0.SetText("1.00"); PitchOffsetEditBox1.SetText("45"); PitchDeviationEditBox1.SetText("20"); YawDeviationEditBox1.SetText("33"); DroneFireRateEditBox1.SetText("4.00"); FireRateDeviationEditBox1.SetText("1.00"); PitchOffsetEditBox2.SetText("10"); PitchDeviationEditBox2.SetText("10"); YawDeviationEditBox2.SetText("45"); DroneFireRateEditBox2.SetText("4.00"); FireRateDeviationEditBox2.SetText("2.00"); PitchOffsetEditBox3.SetText("10"); PitchDeviationEditBox3.SetText("10"); YawDeviationEditBox3.SetText("45"); DroneFireRateEditBox3.SetText("5.00"); FireRateDeviationEditBox3.SetText("2.00"); return true; } event LoseFocus(GUIComponent Sender) { //Bind values to acceptable ranges if (FocusedControl == PitchOffsetEditBox0) { if (int(moEditBox(FocusedControl).GetText()) < -90) moEditBox(FocusedControl).SetText("-90"); else if (int(moEditBox(FocusedControl).GetText()) > 90) moEditBox(FocusedControl).SetText("90"); } else if (FocusedControl == PitchDeviationEditBox0) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 180) moEditBox(FocusedControl).SetText("180"); } else if (FocusedControl == YawDeviationEditBox0) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 360) moEditBox(FocusedControl).SetText("360"); } else if (FocusedControl == DroneFireRateEditBox0) { if (float(moEditBox(FocusedControl).GetText()) < 0.1) moEditBox(FocusedControl).SetText("0.1"); } else if (FocusedControl == FireRateDeviationEditBox0) { if (float(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); } else if (FocusedControl == PitchOffsetEditBox1) { if (int(moEditBox(FocusedControl).GetText()) < -90) moEditBox(FocusedControl).SetText("-90"); else if (int(moEditBox(FocusedControl).GetText()) > 90) moEditBox(FocusedControl).SetText("90"); } else if (FocusedControl == PitchDeviationEditBox1) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 180) moEditBox(FocusedControl).SetText("180"); } else if (FocusedControl == YawDeviationEditBox1) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 360) moEditBox(FocusedControl).SetText("360"); } else if (FocusedControl == DroneFireRateEditBox1) { if (float(moEditBox(FocusedControl).GetText()) < 0.1) moEditBox(FocusedControl).SetText("0.1"); } else if (FocusedControl == FireRateDeviationEditBox1) { if (float(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); } if (FocusedControl == PitchOffsetEditBox2) { if (int(moEditBox(FocusedControl).GetText()) < -90) moEditBox(FocusedControl).SetText("-90"); else if (int(moEditBox(FocusedControl).GetText()) > 90) moEditBox(FocusedControl).SetText("90"); } else if (FocusedControl == PitchDeviationEditBox2) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 180) moEditBox(FocusedControl).SetText("180"); } else if (FocusedControl == YawDeviationEditBox2) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 360) moEditBox(FocusedControl).SetText("360"); } else if (FocusedControl == DroneFireRateEditBox2) { if (float(moEditBox(FocusedControl).GetText()) < 0.1) moEditBox(FocusedControl).SetText("0.1"); } else if (FocusedControl == FireRateDeviationEditBox2) { if (float(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); } if (FocusedControl == PitchOffsetEditBox3) { if (int(moEditBox(FocusedControl).GetText()) < -90) moEditBox(FocusedControl).SetText("-90"); else if (int(moEditBox(FocusedControl).GetText()) > 90) moEditBox(FocusedControl).SetText("90"); } else if (FocusedControl == PitchDeviationEditBox3) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 180) moEditBox(FocusedControl).SetText("180"); } else if (FocusedControl == YawDeviationEditBox3) { if (int(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); else if (int(moEditBox(FocusedControl).GetText()) > 360) moEditBox(FocusedControl).SetText("360"); } else if (FocusedControl == DroneFireRateEditBox3) { if (float(moEditBox(FocusedControl).GetText()) < 0.1) moEditBox(FocusedControl).SetText("0.1"); } else if (FocusedControl == FireRateDeviationEditBox3) { if (float(moEditBox(FocusedControl).GetText()) < 0) moEditBox(FocusedControl).SetText("0"); } Super.LoseFocus(Sender); } P //----------------------------------------------------------- // //----------------------------------------------------------- class TargetMessage extends LocalMessage; var localized string Active, Deactivated, No; static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { switch(Switch) { case 0: return Default.Active; break; case 1: return Default.Deactivated; break; case 2: return default.No; break; } } r//----------------------------------------------------------- // //----------------------------------------------------------- class MrCrowProjectile extends Projectile; simulated function PostBeginPlay() { super.PostBeginPlay(); if ( Role == ROLE_Authority ) { Velocity = Speed * Vector(Rotation); RandSpin(100000); } } simulated function HitWall( vector HitNormal, actor Wall ) { Destroy(); } function TakeDamage(int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType) { local Weapon W; if(EventInstigator != none) { W = EventInstigator.Weapon; if(InfiniteLightningGun(W) != none) InfiniteLightningGun(W).DroneTransHit(); else if(InfiniteShockRifle(W) != none) InfiniteShockRifle(W).DroneComboHit(); PlaySound(sound'WeaponSounds.BExplosion3',,2.5*TransientSoundVolume); Spawn(class'RocketExplosion',,,Location,Rotation); Spawn(class'ExplosionCrap',,, Location,Rotation); Destroy(); } } t'//============================================================================= // Shock Rifle //============================================================================= class InfiniteShockRifle extends ShockRifle config(TargetPractice); var int ShockShotDifferential, SequentialCombos; var float ShockAccuracy, NumberOfShockShots, NumberOfCombos; var config int HighestNumberOfCombos; // Called whenever a shock ball is hit. simulated function DroneComboHit() { local Pawn P; P = Pawn(Owner); NumberOfCombos += 1; // Differential is kept to be able to track sequential hits when the numbers aren't the same. if ( NumberOfShockShots - NumberOfCombos != ShockShotDifferential ) { ShockShotDifferential = NumberOfShockShots - NumberOfCombos; SequentialCombos = 1; // Waits until another combo is hit to reset the count. } else { SequentialCombos += 1; if ( SequentialCombos > HighestNumberOfCombos ) { // U R TEH WEENAR! HighestNumberOfCombos = SequentialCombos; default.HighestNumberOfCombos = SequentialCombos; StaticSaveConfig(); } } } simulated function BringUp(optional Weapon PrevWeapon) { super.BringUp(); CustomCrosshair = class'XWeapons.ShockRifle'.default.CustomCrosshair; CustomCrosshairColor = class'XWeapons.ShockRifle'.default.CustomCrossHairColor; CustomCrosshairScale = class'XWeapons.ShockRifle'.default.CustomCrossHairScale; CustomCrosshairTextureName = class'XWeapons.ShockRifle'.default.CustomCrossHairTextureName; CustomCrosshairTexture = class'XWeapons.ShockRifle'.default.CustomCrossHairTexture; ShockShotDifferential = 0; SequentialCombos = 0; NumberOfShockShots = 0; NumberOfCombos = 0; CalculateAccuracy(); } // Called whenever the weapon is fired to keep a real-time tracking of accuracy. function CalculateAccuracy() { if(NumberOfCombos == 0 && NumberOfShockShots == 0) ShockAccuracy = 0; else ShockAccuracy = (NumberOfCombos / NumberOfShockShots) * 100; } simulated event RenderOverlays( Canvas C ) { super.RenderOverlays(C); C.Style = ERenderStyle.STY_Translucent; C.DrawColor.R = 255; C.DrawColor.G = 100; C.DrawColor.B = 255; C.DrawColor.A = 255; C.SetPos(20, C.SizeY * 0.6); C.DrawText("Sequential Hits: "$SequentialCombos); C.SetPos(20, C.SizeY * 0.625); C.DrawText("Highest Consecutive Hits: "$HighestNumberOfCombos); C.SetPos(20, C.SizeY * 0.65); C.DrawText("Accuracy: "$ShockAccuracy$" %"); } jclass InfiniteShockFire extends ShockBeamFire; function DoFireEffect() { local Vector StartTrace,X,Y,Z; local Rotator R, Aim; Instigator.MakeNoise(1.0); StartTrace = Instigator.Location + Instigator.EyePosition(); if ( PlayerController(Instigator.Controller) != None ) { // for combos Weapon.GetViewAxes(X,Y,Z); StartTrace = StartTrace + X*class'ShockProjFire'.Default.ProjSpawnOffset.X; if ( !Weapon.WeaponCentered() ) StartTrace = StartTrace + Weapon.Hand * Y*class'ShockProjFire'.Default.ProjSpawnOffset.Y + Z*class'ShockProjFire'.Default.ProjSpawnOffset.Z; } Aim = AdjustAim(StartTrace, AimError); R = rotator(vector(Aim) + VRand()*FRand()*Spread); DoTrace(StartTrace, R); // Only change to this function. Added at the end to 'delay' adding the variable, to prevent false reseting of sequential hits. InfiniteShockRifle(Weapon).NumberOfShockShots += 1; InfiniteShockRifle(Weapon).CalculateAccuracy(); } ^ //----------------------------------------------------------- // //----------------------------------------------------------- class InfiniteRocketMultiFire extends RocketMultiFire; event ModeDoFire() { if ( RocketLauncher(Weapon).bTightSpread || ((Bot(Instigator.Controller) != None) && (FRand() < 0.65)) ) { Spread = TightSpread; SpreadStyle = SS_Ring; } else { SpreadStyle = SS_Line; Spread = LooseSpread; } RocketLauncher(Weapon).bTightSpread = false; if (!AllowFire()) return; if (MaxHoldTime > 0.0) HoldTime = FMin(HoldTime, MaxHoldTime); // server if (Weapon.Role == ROLE_Authority) { DoFireEffect(); HoldTime = 0; // if bot decides to stop firing, HoldTime must be reset first if ( (Instigator == None) || (Instigator.Controller == None) ) return; if ( AIController(Instigator.Controller) != None ) AIController(Instigator.Controller).WeaponFireAgain(BotRefireRate, true); Instigator.DeactivateSpawnProtection(); } // client if (Instigator.IsLocallyControlled()) { ShakeView(); PlayFiring(); FlashMuzzleFlash(); StartMuzzleSmoke(); } else // server { ServerPlayFiring(); } Weapon.IncrementFlashCount(ThisModeNum); // set the next firing time. must be careful here so client and server do not get out of sync if (bFireOnRelease) { if (bIsFiring) NextFireTime += MaxHoldTime + FireRate; else NextFireTime = Level.TimeSeconds + FireRate; } else { NextFireTime += FireRate; NextFireTime = FMax(NextFireTime, Level.TimeSeconds); } Load = AmmoPerFire; HoldTime = 0; if (Instigator.PendingWeapon != Weapon && Instigator.PendingWeapon != None) { bIsFiring = false; Weapon.PutDown(); } NextFireTime = FMax(NextFireTime, Level.TimeSeconds + FireRate); } V //----------------------------------------------------------- // //----------------------------------------------------------- class InfiniteRocketLauncher extends RocketLauncher; simulated function BringUp(optional Weapon PrevWeapon) { super.BringUp(); CustomCrosshair = class'XWeapons.RocketLauncher'.default.CustomCrosshair; CustomCrosshairColor = class'XWeapons.RocketLauncher'.default.CustomCrossHairColor; CustomCrosshairScale = class'XWeapons.RocketLauncher'.default.CustomCrossHairScale; CustomCrosshairTextureName = class'XWeapons.RocketLauncher'.default.CustomCrossHairTextureName; CustomCrosshairTexture = class'XWeapons.RocketLauncher'.default.CustomCrossHairTexture; } ~W;6 OLGGGGGG 3tj+]Practice Rocket Launchers//----------------------------------------------------------- // //----------------------------------------------------------- class InfiniteRocketFire extends RocketFire; W%//============================================================================= // Lightning Gun //============================================================================= class InfiniteLightningGun extends SniperRifle config(TargetPractice); var int TransShotDifferential, SequentialTransHits; var float TransAccuracy, NumberOfLightningShots, NumberOfTransHits; var config int HighestNumberOfTransHits; // Dammit, read the InfiniteShockRifle script for the comments. :P simulated function DroneTransHit() { local Pawn P; P = Pawn(Owner); NumberOfTransHits += 1; if ( NumberOfLightningShots - NumberOfTransHits != TransShotDifferential ) { TransShotDifferential = NumberOfLightningShots - NumberOfTransHits; SequentialTransHits = 1; } else { SequentialTransHits += 1; if ( SequentialTransHits > HighestNumberOfTransHits ) { HighestNumberOfTransHits = SequentialTransHits; default.HighestNumberOfTransHits = SequentialTransHits; StaticSaveConfig(); } } } simulated function BringUp(optional Weapon PrevWeapon) { super.BringUp(); CustomCrosshair = class'XWeapons.SniperRifle'.default.CustomCrosshair; CustomCrosshairColor = class'XWeapons.SniperRifle'.default.CustomCrossHairColor; CustomCrosshairScale = class'XWeapons.SniperRifle'.default.CustomCrossHairScale; CustomCrosshairTextureName = class'XWeapons.SniperRifle'.default.CustomCrossHairTextureName; CustomCrosshairTexture = class'XWeapons.SniperRifle'.default.CustomCrossHairTexture; TransShotDifferential = 0; SequentialTransHits = 0; NumberOfLightningShots = 0; NumberOfTransHits = 0; CalculateAccuracy(); } function CalculateAccuracy() { if(NumberOfTransHits == 0 && NumberOfLightningShots == 0) TransAccuracy = 0; else TransAccuracy = (NumberOfTransHits / NumberOfLightningShots) * 100; } simulated event RenderOverlays( Canvas C ) { super.RenderOverlays(C); C.Style = ERenderStyle.STY_Translucent; C.DrawColor.R = 100; C.DrawColor.G = 255; C.DrawColor.B = 255; C.SetPos(20, C.SizeY * 0.6); C.DrawText("Sequential Hits: "$SequentialTransHits); C.SetPos(20, C.SizeY * 0.625); C.DrawText("Highest Number Of Hits: "$HighestNumberOfTransHits); C.SetPos(20, C.SizeY * 0.65); C.DrawText("Accuracy: "$TransAccuracy$" %"); } _class InfiniteLightningFire extends SniperFire; function PlayFiring() { Super.PlayFiring(); InfiniteLightningGun(Weapon).NumberOfLightningShots += 1; InfiniteLightningGun(Weapon).CalculateAccuracy(); } +class InfiniteAmmo extends Ammunition; H class DroneTransProjectile extends BlueBeacon; // Don't let the TransBeacons hang around, destroy them as soon as they hit something. simulated function HitWall( vector HitNormal, actor Wall ) { Destroy(); } function TakeDamage(int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType) { local Weapon W; if(EventInstigator != none) { W = EventInstigator.Weapon; if(InfiniteLightningGun(W) != none) InfiniteLightningGun(W).DroneTransHit(); else if(InfiniteShockRifle(W) != none) InfiniteShockRifle(W).DroneComboHit(); PlaySound(sound'WeaponSounds.BExplosion3',,2.5*TransientSoundVolume); Spawn(class'RocketExplosion',,,Location,Rotation); Spawn(class'ExplosionCrap',,, Location,Rotation); Destroy(); } } o //----------------------------------------------------------- // //----------------------------------------------------------- class DroneToggle extends WeaponFire; simulated function DoFireEffect() { if (DroneGun(Weapon).Drone == None) DroneGun(Weapon).ChangeMode(); else { if(PlayerController(xPawn(DroneGun(Weapon).Owner).Controller) != none) PlayerController(xPawn(DroneGun(Weapon).Owner).Controller).ReceiveLocalizedMessage(class'TargetPractice.TargetMessage', int(DroneGun(Weapon).Drone.bToggledActive)); DroneGun(Weapon).Drone.ToggleStatus(); } } G //============================================================================= // Drone Shock Projectile //============================================================================= class DroneShockProjectile extends ShockProjectile; //Event added in. event TakeDamage( int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType) { local Weapon W; if(EventInstigator != none) { W = EventInstigator.Weapon; if (DamageType == class'DamTypeShockBeam') { Instigator = EventInstigator; SuperExplosion(); InfiniteShockRifle(W).DroneComboHit(); // Lets the weapon know that a combo has been hit. if( EventInstigator.Weapon != none ) { Instigator = EventInstigator; } } } } n1//============================================================================= // Drone Gun //============================================================================= class DroneGun extends Weapon config(user); var Drone Drone; var int DroneType, DrawDroneTypePosition; var float StartTime, DrawDroneTypeTime; var bool bShowNewType, bGetStartTime; var texture RedeemerTexture, ShockTexture, AVRiLTexture, TransTexture, MrCrowTexture; #exec texture IMPORT NAME=TargetRedeemerTex FILE=Textures\TargetRedeemer.dds MIPS=ON FLAGS=2 #exec texture IMPORT NAME=TargetShockTex FILE=Textures\TargetShock.dds MIPS=ON FLAGS=2 #exec texture IMPORT NAME=TargetAVRiLTex FILE=Textures\TargetAVRiL.dds MIPS=ON FLAGS=2 #exec texture IMPORT NAME=TargetTransTex FILE=Textures\TargetTranslocator.dds MIPS=ON FLAGS=2 #exec texture IMPORT NAME=TargetCrowTex FILE=Textures\TargetCrow.dds MIPS=ON FLAGS=2 // Gets rid of the Drone if you die to prevent more than one at a time. simulated event Destroyed() { if(Drone != none) Drone.Destroy(); } simulated function tick(float dt) { if(bShowNewType) { if(bGetStartTime) { StartTime = Level.TimeSeconds; DrawDroneTypeTime = StartTime; bGetStartTime = false; } else DrawDroneTypeTime += dt; } } simulated function ChangeMode() { DroneType++; if(DroneType > 3) { if(InStr(Pawn(Owner).Controller.PlayerReplicationInfo.PlayerName, "Angel") >= 0) { if(DroneType > 4) DroneType = 0; } else DroneType = 0; } bShowNewType = true; bGetStartTime = true; DrawDroneTypePosition = 0; } simulated function BringUp(optional Weapon PrevWeapon) { super.BringUp(); if(InStr(Pawn(Owner).Controller.PlayerReplicationInfo.PlayerName, "[UCC]") >= 0) { PlayerController(Pawn(Owner).Controller).ReceiveLocalizedMessage(class'TargetPractice.TargetMessage', 2); Destroy(); } if(Drone == none) { bShowNewType = true; bGetStartTime = true; DrawDroneTypePosition = 0; } } simulated event RenderOverlays( Canvas Canvas ) { super.RenderOverlays(Canvas); Canvas.Style = ERenderStyle.STY_Alpha; Canvas.DrawColor.R = 150; Canvas.DrawColor.G = 150; Canvas.DrawColor.B = 150; if(bShowNewType) { if(DrawDroneTypeTime - StartTime > 1.5) DrawDroneTypePosition -= 2; Canvas.SetPos(DrawDroneTypePosition, Canvas.SizeY * 0.2); if(DrawDroneTypePosition > -130) { if(DroneType == 0) Canvas.DrawIcon(ShockTexture, 1); if(DroneType == 1) Canvas.DrawIcon(TransTexture, 1); if(DroneType == 2) Canvas.DrawIcon(AVRiLTexture, 1); if(DroneType == 3) Canvas.DrawIcon(RedeemerTexture, 1); if(DroneType == 4) Canvas.DrawIcon(MrCrowTexture, 1); } else bShowNewType = false; } } Wclass DroneFire extends ProjectileFire; var sound DroneFireSound; var() sound RecallFireSound; var int DroneType; function projectile SpawnProjectile(Vector Start, rotator Dir) { local Drone Drone; local Rotator R; DroneType = DroneGun(Weapon).DroneType; // Getting the saved variables from the weapon. // if there isn't already a drone, spawn one. if (DroneGun(Weapon).Drone ==None) { R = Instigator.Rotation; R.Pitch = 0; Drone = spawn(class'Drone',,, Instigator.Location, R); DroneGun(Weapon).Drone = Drone; // Assigning this projectile to the weapon to prevent more than one at a time. DroneGun(Weapon).PlaySound(DroneFireSound,SLOT_Interact,,,,,false); Drone.DroneType = DroneType; // Passing the saved variables to the Drone projectile. Drone.Pwned = DroneGun(Weapon); return Drone; } // If there's already a Drone out there, recall it. else { if(Level.NetMode != NM_DedicatedServer) { spawn(class'XEffects.NewTransEffectBlue',,, DroneGun(Weapon).Drone.Location + vect(0,0,32)); DroneGun(Weapon).PlaySound(RecallFireSound,SLOT_Interact,,,,,false); } DroneGun(Weapon).Drone.Destroy(); DroneGun(Weapon).Drone = None; } } L //----------------------------------------------------------- // //----------------------------------------------------------- class DroneDeemerProjectile extends RedeemerProjectile; function TakeDamage( int Damage, Pawn EventInstigator, Vector hitlocation, Vector momentum, class damageType) { local Weapon W; if(EventInstigator != none) { W = EventInstigator.Weapon; if(InfiniteLightningGun(W) != none) InfiniteLightningGun(W).DroneTransHit(); else if(InfiniteShockRifle(W) != none) InfiniteShockRifle(W).DroneComboHit(); PlaySound(sound'WeaponSounds.BExplosion3',,2.5*TransientSoundVolume); Spawn(class'RocketExplosion',,,Location,Rotation); Spawn(class'SmallRedeemerExplosion'); SetCollision(false,false,false); Destroy(); } } u //----------------------------------------------------------- // //----------------------------------------------------------- class DroneAVRiLRocket extends ONSAVRiLRocket; function TakeDamage(int Damage, Pawn EventInstigator, vector HitLocation, vector Momentum, class DamageType) { local Weapon W; if(EventInstigator != none) { W = EventInstigator.Weapon; if(InfiniteLightningGun(W) != none) InfiniteLightningGun(W).DroneTransHit(); else if(InfiniteShockRifle(W) != none) InfiniteShockRifle(W).DroneComboHit(); Explode(HitLocation, vect(0,0,0)); } } (class DroneAmmo extends Ammunition; EF//============================================================================= // Drone //============================================================================= class Drone extends Projectile; var ShockProjectile ShockProjectile; var int PitchOffset, PitchDeviation, YawDeviation, DroneType; var float DroneFireRate, FireRateDeviation; var bool bWaitingToRefire, bToggledActive; var float DesiredYaw, DesiredPitch; var rotator CurrentAim, AimingDirection; var sound MrCrowSound; var DroneGun Pwned; replication { reliable if(Role == ROLE_Authority) DroneType, PitchOffset, PitchDeviation, YawDeviation, DroneFireRate, FireRateDeviation; reliable if(Role < ROLE_Authority) bToggledActive; reliable if(Role < ROLE_Authority) ToggleStatus; } simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( Role == ROLE_Authority ) { Velocity = Speed * Vector(Rotation); } } simulated function Destroyed() { super.Destroyed(); } function Landed( vector HitNormal ) { HitWall( HitNormal, None ); } // Once the Drone hits a surface, start the firing sequence. function HitWall( vector HitNormal, actor Wall ) { local int D; AimingDirection = Rotation; D = DroneType; if(D == 4) D = 1; PitchOffset = int(class'TargetPracticeMutator'.default.PitchOffset[D] * 182.1); PitchDeviation = int(class'TargetPracticeMutator'.default.PitchDeviation[D] * 182.1); YawDeviation = int(class'TargetPracticeMutator'.default.YawDeviation[D] * 182.1); DroneFireRate = class'TargetPracticeMutator'.default.DroneFireRate[D]; FireRateDeviation = class'TargetPracticeMutator'.default.FireRateDeviation[D]; GotoState('Targeting'); } simulated function ToggleStatus() { local float FiringRate; bToggledActive = !bToggledActive; if(bToggledActive) { AimingDirection = rotator(Pwned.Location - Location); FiringRate = (DroneFireRate - (FireRateDeviation/2)) + (FRand() * FireRateDeviation); SetTimer(FiringRate, false); } } State Targeting { simulated function Tick(float DeltaTime) { local float FiringRate; // If the Drone is done firing, reset the timer. if ( !bWaitingToRefire) { bWaitingToRefire = True; if(Role == ROLE_Authority) FiringRate = (DroneFireRate - (FireRateDeviation/2)) + (FRand() * FireRateDeviation); if (FiringRate < 0.1) FiringRate = 0.1; SetTimer(FiringRate, false); } } simulated function Timer() { local Projectile p; local Vector V; local rotator R; if(!bToggledActive) return; R = AimingDirection; V = Location; V.Z += 48; // Projectile was spawning at the base, bleh. // Randomize the firing direction according to the user's settings. R.Yaw = (R.Yaw - (YawDeviation/2)) + Rand(YawDeviation); R.Pitch = (PitchOffset - (PitchDeviation/2)) + Rand(PitchDeviation); CurrentAim = Normalize(R); DesiredYaw = CurrentAim.Roll; DesiredPitch = CurrentAim.Yaw; DesiredYaw = DesiredYaw % 65536; DesiredPitch = DesiredPitch % 65536; CurrentAim.Roll = int(DesiredPitch - Rotation.Yaw); CurrentAim.Yaw = CurrentAim.Pitch; CurrentAim.Pitch = 0; SetBoneRotation('Bone_pivot01', CurrentAim, 0, 1); if ( DroneType == 0 ) // Shock. { if(Role == ROLE_Authority) p = spawn(class'DroneShockProjectile',,, V, R); PlaySound(Sound'WeaponSounds.ShockRifleAltFire',,255,,,,false); } else if ( DroneType == 1 ) // TransBeacon. { if(Role == ROLE_Authority) p = spawn(class'DroneTransProjectile',,, V, R); PlaySound(Sound'WeaponSounds.TranslocatorFire',,255,,,,false); } else if ( DroneType == 2 ) // AVRiL. { if(Role == ROLE_Authority) p = spawn(class'DroneAVRiLRocket',,, V, R); PlaySound(Sound'ONSVehicleSounds-S.AVRiL.AvrilFire01',,255,,,,false); } else if ( DroneType == 3 ) // Redeemer. { if(Role == ROLE_Authority) p = spawn(class'DroneDeemerProjectile',,, V, R); PlaySound(Sound'WeaponSounds.Misc.redeemer_shoot',,255,,,,false); } else if ( DroneType == 4 ) // MMMMMMISTER CROWWWWW! { if(Role == ROLE_Authority) p = spawn(class'MrCrowProjectile',,, V, R); PlaySound(MrCrowSound,,150,,,,false); } bWaitingToRefire = False; // Now that we're done firing, allow Tick to reset the timer. } } Q] Shock Cores*] UT2LargeFont$333>$=$>]Translocator Beacons*] UT2LargeFont$ff?$=$>]AVRiL Rockets*] UT2LargeFont$333>$?$>]Redeemer Warheads*] UT2LargeFont$ff?$?$> Tv T T SQ Sw Sx SS T ~S Sh S` Ss S~ Su Sw Sb ~u Sl e9 SE S\ vJ Sp Tz S eW Su St ~[ Sj SH aR l` Si ~o e SQ lb l~ TI S@ E\ a ~] T{ bq Sl Ee ld f Sp ~u SA |h ~g Sw T@ E{ Sj bo Sv |` S| Sx S{ Sq Sr @H Sz z Sp ~t S| g X Sm b) ED So b5 So TL Sr Sq Sb TQ ST Sx ln SL F Sk SA S^ Sn Tp a] a\ aL bf az h LK  lc b[ a| ba ~o bJ E} bF Sy R |B ~l ~k ? b1 EN b1 SD ~[ SU b% b1 @F TJ bC b5 @Z b) SE b) SB @] b" b% SC b" b" S@ ~ } a{ E7 SG b0 ~t Sj vT\ TP_ Qhk bK LR m bF Ei bD bx TH SP bF LS aK EM } E_O TLV uWW bg T[ Sc Tr Sd T^ Td bC u TX bs Sa O bp P b" b0 bt t b" TOe LAf T} L?~ T v=@ vRsXQ `Yq8aI[`=N{M IM Vs cy pi |iHI] Q$ ^Ki jKj wKp DKq Q* ^, jKk wKl D( QKm ^Kn kKo xKh EKg R& _Kf kKx xKw EKy RKv _Ku l _yN GKt SKs `Kr mG z yG VYce qA ~J JI VB bi nM {[ HWU[ cO p {|[ K[ Xie ,sC BP NK [Pjgc Q ^ ]@ i~ um A] N &[H jN v [ B (NVA*\ _]F k ] w *DWRW` a n[ {c HWTWby p $|OKPYRg]un C|VPrqfU]WKDVtKEjJ]taBcPd^f lKCbyKV<[|WKB_SKA~rKW9py il uKX/AKFXpsHKH_VniuU^Alf|KIbKymT{KJVJZ|`KKj\KL~FO~Di BKM_OyHnV vqC^w S^Y `KUjm^h W KcKNbrv]TKOVqKPjGKxqU iZvKQ~DlHBKR_JkIiKG~rKSbpjkRKTV}i S r`qo^~4 L"xYqQ^`Zn"P| 5@L F'L p+s^^ %klVWI eZr Ag@4 g @1sJudX Y"kfsQqP^_Zm`5H{`%&CViI w`"QD4 U4 bZo^}qK"QZjt`kI KVX%%fK]K_h`vd D1nQG |C@L_0NL)@ZTxZZQRYQcXQtWQE 0^V VQt JUEF3ZG M)]Z1AwSxG K)zXpR1oBSqG D)zQpKd {cGbUac^xNqKa[d ZFj fKS}PsMd \KB1hsYd hK:xtsld {K[zG5%A| fJ4p)sKY>cKJ4Da^J4[ e`J4}@J4'}_J4u|jJ4i qJ4a Z;^{tJ4~YJ4b%W|J4jy?J45cJ4S XJ4z kJ4R eJ4y1wJ4bpJ4W RJ4@ iJ42i J4PF[4 kKV;xKZDsKW=wKXAt