Áƒ*žEc@ 'ƒÀtµŠ*Ôµ½Z(Jý cNoneCore Excessive MutatorsEngineSystemBotpackTickAnimEndDamage TakeDamagespeedBeginFireAltFireSendQueryPacketUseAmmo EndState AddMutator ParseOption AtCapacity BeginStateWeaponNewType AltFiringWeaponNewStringWeaponBaseTypeFinishSetSwitchPriorityTimer AmpMessage PlayLoadingBot ClientFire AdjustAim DropFromClientAltFire MaxSpeed AmmoNameUser AmmoAmount GetWeapon SetCaptionFiringRockets PlayIdleAnim UBrowser PlayFiringUWindow RateSelfIdleMomentumTransfer GiveAmmoMaxAmmoPostBeginPlay DownWeaponSpecialDamageHitWall ModifyPlayer bUseHitSoundProcessTraceHit NormalFirePlayAltFiring GameNameCheckIPPolicy LifeSpan Repeater ReduceDamage NumMutatorsLogin ProcessTouchIRCChannelHistory InitGame PreLoginProjectileFire TraceFire FireEffect PlayRotating SpawnSplashClientInstantFlashFlying PlayerPawnAddPage SpriteAnimExcessiveBioGel AdjustToss FireRocketsBlowUp ClientFiring ShakeViewAltProjectileClassProjectileClassPickup ClientReloadGetInfo ShootLoad OnSurfaceTournamentPlayerClientAltFiring ExplodeChunk FastShoot RotateRocketCarcassPlayRepeatFiringShoot GiveWeapon MultiMesh CheckBeamSuperExplosionCreated ForceFire GetRulesGiveToExplode ForceAltFire bRapidFireT2 BecomeItem MyDamageType ModifyLoginPutDown LogPickupGiveAmpMutatorTakeDamage ImpactHammer WarnTargetLogSpecialEvent SetMultiLine SendPlayersIpDrvExcessiveUdpServerQueryWAVExcessiveHealthPack Charging ExplodingFiring TraceShot GetBasic PlayRFiring LightRadiusshakeHit CheckTarget LightEffect UpdateBeamLoadingLightBrightnessCheckReplacementSetWall hitdamagePlayNormRepeatFiringFindInventoryType PlasmaHitGenerateBullet SpawnDouble SetTwoHands LightType DrawScaleBroadcastLocalizedMessageSetDisplayProperties Localize BeginPlay Activated GetStringClientReceiveDiedPawnClose AddInventoryMessage RemoteRoleGetServerPortFellTouch ZoneChange AmbientGlowSwitchToBestWeapon DestroyedMoverLightSaturationSetHandAdjustHitLocationPhysics WeaponSet GetItemName SetRespawn ActivateClientPlaySound ZoneInfo UnrealShare ValidTouch AddVelocitySuccessimpact ExcBrowserASExcBrowserDOMExcBrowserLMSExcBrowserTeamGames SpecialFireExcBrowserCTFSecondaryServerAddressMainServerAddressExcessiveBrowserIRCSystemPageExcessiveBrowserIRCWindowExcessiveBrowserIRCSetupClientExcessiveNaliExcessiveSkaarj ExcessiveCowExcessiveFemale1ExcessiveBossExcessiveFemale2ExcessiveMale2TranslocatorUpgradeExcessiveMale1ShockRifleUpgradeRocketUpgradeSniperUpgrade PulseUpgrade SplashJumpRipperUpgradeMinigunUpgradeHammerUpgrade FlakUpgrade ReplaceWithExcessiveTranslocatorTargetRegisterDamageMutatorExcessiveTranslocatorExcessiveTimeExcessiveTeamGamePlusExcessiveStarterBoltExcessiveSniperExcessiveShockprojExcessiveShockExplExcessiveShockCoreExcessiveSeekingRocketExcessiveRocketPackExcessiveRocketLauncherExcessiveRocketExcessiveRipperExcessiveRazorAltExcessiveRazorExcessivePulseGunExcessivePowerupsExcessivePlasmaSphereExcessivePBoltExcessivePAmmoExcessiveMinigunExcessiveMiniammoExcessiveLastManStandingExcessiveTracerExcessiveInvisibilityExcessiveHammerShockWaveExcessiveHammerExcessiveGrenadeExcessiveFlakSlugExcessiveFlakCannonExcessiveFlakAmmoExcessiveExplodingChunkExcessiveEnforcerExcessiveDominationExcessiveDeathMatchPlusExcessiveCTFGameExcessiveChunk4ExcessiveChunk3ExcessiveChunk2ExcessiveChunk1ExcessiveBulletBox#ExcessiveBrowserUpdateServerWindow!ExcessiveBrowserUpdateServerLinkExcessiveBrowserMenuItemExcessiveBrowserMainWindow!ExcessiveBrowserMainClientWindowExcessiveBladeHopperExcessiveBioSplashExcessiveBioAmmoExcessiveBioGlobExcessiveAmpMsgEnforcerUpgradeExcessiveAssaultPlayPickupMessage UTBrowser HealthPackPullMedBoxUpdateServerClass TeamGamePlusGetGamePropertyGetLevelPropertyHTTPReceivedDataBrowseCurrentURIParseNextQuery ParseQuery IpServer MenuCaptionT1 LightHue MenuHelpUMenuExecuteshot2 ThrowTarget shreddedSetRollExcBrowserDeathmatchTeamHit DeletePageEjectspinFire1Shoot1 Explosion MakeSound UBrowserAS UBrowserDOM UBrowserLMSUBrowserTeamGamesUBrowserDeathmatch HitSound UBrowserCTF TacticalMove MaxTossForce StartError SetParent FlakDeath SetUpSlaveTournamentAmmo UT_BioGelDoubleEnforcerProcessAltTraceHit Validate PlayAltBurst HealthVial ShootloopSetupWindowTitleString LinkClass boltloopTournamentWeapon ProcessData SetupURIsQueryUpdateServerGetPlayerPropertyThrow HTTPErrorUT_FlakCannon UT_Eightball SniperRifle FireSound PulseGunAmpTimeblastedFire2WeaponUpgrade BioUpgrade SpawnEffectripperShoot2 ShockRifle Translocator PlaySpinDownExcessiveBioRifleHealMax minigun2 ut_biorifleExcessiveShockRifle MinNetVerWingIn HideWindow bAltFire MiscSoundWallbFire ImpactSound EyeHeightExplosionDecal SoundVolumebHiddenSkill bWaterZone SpawnSoundFCollisionHeight ProjClass bNeutralZoneCollisionRadius ViewRotation DamageTypebBlockPlayersPAmmoSounds FireOffsetbAltWarnTarget enforcerbWarnStartLocation bUseAltMode bHeldItemUWindowPulldownMenuItemUWindowPageControlSkin Rotation AccuracyVictim AdjustedAimUWindowWindowPortalinjured CreateWindow bMuzzleFlash InPassword Misc1Sound Misc3Sound Misc2Sound CockingSound SplitPos AltFireSound bBlockActors FailCodebRight MaxSplitPosTopClientWindowBottomClientWindow bBottomGrowPage bByParentA InternetLinkIpAddrAddrValidationStringtemp bLockedOnbSuperRelevantValue LocalLog ResultSet HitActor AnimSequencebChangeWeapon bPointingX AmmoType bWarnTargetVictims bProjTarget MOTDNamePendingWeapon ClientClass bSizableIRCName LANTabNameCopyUBrowserFavoriteServers PawnOwnerUBrowserInfoWindow DrawOffsetOptionalObject bDropDetail RespawnTime PlayerIDUBrowserMainWindow PickupSoundUBrowserUpdateServerWindowOldFlashCount FlashCountbSteadyFlash3rd InfoWindowInvUWindowVSplitter SetupClientC instigatedByMOTD CurrentURIMaxURIServerListNamesIRC SystemPageLANPageFactoryWindowsMC GameType PositionbCenter bSniping PlayerOwnerUWindowPageControlPageUWindowDynamicTextArea EndTracejNextDamageMutatori ScriptTextUWindowFramedWindowUWindowClientWindowSUWindowRootWindow NewPlayerVBYawRG ReturnValueUWindowPulldownMenuUWindowTabControlZStaticSaveConfigAnimSpriteEffectDynamicLoadObjectHealingAmountScalebSelectNearestTabOnRemoveOwner RelatedPRI_1ASMD WinHeight WinWidth BestTargetRoot GameInfo TextAreaPlayerViewOffset WaterRing bSuperHealAddress LastPainTimeYawErrFC MinWinHeightY RefireRateNDamageSkinsflak AltAccuracyrealLoc ChargeSizeRocketsLoaded RocketRad bFireLoad bTightWad LockedTarget FireLocation StartLocFireRot DupRocketsQueryRandRot BioRifle bOnGroundGel AnimTime bCanHitOwner bHitWaterNumExtraGrenadesSeekingbRingNumExtraRockets ExpCount bDeleteMe ProjectilePlayerReplicationInfo NextMutatorWData WorldLog ShotAccuracyrndDam ChunkHit NumWallHitsbCanHitInstigator BaseMutatorStatLogRollPitchdistUMenuModMenuItem Initialized WeaponClass MenuItem PawnListGameReplicationInfoNetModeMinNetVersionAmmo InventoryEngineVersionFavoritesNameFavoriteServersClassUdpServerQuery QueryNum PacketNum QueryType QueryValue QueryRest bFinalPacketLevelDeathMatchPlusActorServerListWindowClassMeshLodMeshPlayerInstFogUpdateServerAddressCountOptions InstFlash SystemName LoadAnim RotateAnim FireAnimSoundTextureErrorCTFGameTitle PlasmaSphereUBrowserServerListWindow FireAnimsAssaultTournamentHealthUBrowserIRCPageBase DominationRoleClass TimeSecondsUDamageUT_SpriteSmokePuffUT_invisibilityUBrowserIRCSetupClientUBrowserIRCSystemPageUBrowserIRCWindowPackageSwitchUBrowserMainClientWindow TextBufferUBrowserUpdateServerLinkTranslocatorTarget ShockProj ErrorCodePBoltLastManStanding FlakAmmo Miniammo Favorites BulletBoxServerListTitle SplitterTournamentPickup ShockCoreObject RocketPack PageParent PageControl UTChunk2 UTChunk3 Razor2AltRazor2URIsMutatorDoubleSwitchPriority UT_WallHit BladeHopperWarExplosion2 WallCrackUT_SpriteBallChildUT_SeekingRocketUT_RingExplosion5UT_HeavyWallHitEffectUT_LightWallHitEffect UT_GrenadeUT_FlameExplosion UT_ComboRingBioAmmo UTChunk4 UTChunk1UTChunkTMale2 TFemale2 TFemale1TBossUT_SpriteBallExplosion ShockWave RocketMk2 BeamSize PlasmaCap NuclearMarkMTracer TensionSound flakslugCriticalEventPlusTMale1 DoubleName FireAdjust UT_ShellCasebInstantRocketbNovice AffectorbCanClientFireSlaveEnforcer bIsSlave bFirstFireImpactAltFireReleaseAimDir PulseGunR PlasmaBeamOwnerLocation StillTimeTTarget TossForce bBotMoveFire bTTargetOut BioAltRepClientRocketsLoaded bClientDone bRotated bPendingLockbMultiRockets AmpPickup NumSplash SpriteFrame WallEffectAccumulatedDamage LastHitTime DamagedActor ParentBoltsbolt0sbolt1sbolt2sbolt3sbolt4 OldError NewError AimRotation AimStartdAdjustMyBotNorm2DMaster bAlreadyHit MissCount ShockSizeOldShockDistanceICountMoScale nextPawnUTBrowserMainClientWindow FunctionTSkaarjtnalitcowStateSpreeStartZone NewTargetTeamTargetRotator InstigatorRegionGame LastSeenTimeEnemy NumPlayers HeadRegionM VelocityNewWeaponClassbMeshEnviroMapWeaponPrioritybDamageTriggeredRate StartTrace HitNormalNewZoneStyle HitLocation NewWeapon Momentum projSpeed damageScaleAimSpotVector actualDamage SpawnClassP RelatedPRI_2bBounceResultNum bForceFireOther DeltaTimebForceAltFireCarriedDirCalcDrawOffsetTrace RandSpinPlayOwnedSoundbIsPawn LocalMessage ItemName ZoneGravitybHighDetailMode ExploSound TempScale HurtRadiusAltProjectileSpeedStructProjectileSpeed Handedness DefaultFOV shakevert shakemagbUnlit DesiredFOV bIsPlayer shaketime Location aimerror IPBanned NeedPasswordMaxedOutMessageAutoSwitchPriority MaxPlayers MutatorClassWeapon LevelInfo ServerNameNameUnrealILStartRStart SpawnoffsetA1A2 SpawnpointbShowStandard WeaponLightVel2D StrPropertyStructPropertyReserveMessageClassPropertyReservedPasswordNumReservedSpotsNumReservedPlayers NamePropertyObjectPropertyWeaponReplaceTypeFloatProperty AmpCountAngle BoolProperty AIRating IntProperty ExplodeTime BytePropertyiExplSoundDampeningAltRefireRate AmbientSoundPickupsHealth PointRegion€Ž‡€Ž‡€Ž‡€Ž‡€Ž‡€Ž‡€Ž‡€Ž‡“k | ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ »=, “ÕƒC,…àÀñ‡X©'‡X©'‡X©'‡X©'‡X©'‡X©'…àÀñ‡X©'‘FoÀî‡X©'…àÀñ‡X©'…àÀñ…àÀñ‡X©'‡X©'‡X©'‡X©'œÑ¸™B‡X©'œÑ¸™B“ÕƒC,„œÔ�X„œÔ�XŽ˜öª„œÔ�XŽ˜öª„œÔ�X„œÔ�XŽ˜öªŽœÑ¸™B„œÔ�XŽ˜öªŽœÑ¸™B†˜˜]Botpack.TournamentWeapon@|„…G€‰‰mª‡R‰I €M€Þ€@,„K€‰O «ž™y L @ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2(�¿K®™‚t‡@™‚t‡@œÑ¸™B…àÀñ…àÀñ™‚t‡@™‚t‡@œÑ¸™B…àÀñœÑ¸™B…àÀñœÑ¸™B…àÀñ™‚t‡@œÑ¸™B…àÀñœÑ¸™B…àÀñœÑ¸™B…àÀñøXu6è‘FoÀî‘FoÀî…àÀñ„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�XøXu6è‘FoÀî‘FoÀî…àÀñ…àÀñ‘FoÀîžÌj@£™‚t‡@…àÀñ™‚t‡@†S"-%câX“d@Z“`“V“S“L“qe‰R€Ž‘r@‰‰‰L‰L€…¸z B dÿÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿÿÿÿ2.¢2³Ô¸žØé¶œÑ¸™B„œÔ�X¬ýúL]„œÔ�X„œÔ�Xô}ÚöMô}ÚöM„œÔ�X„œÔ�X„œÔ�X„œÔ�X…àÀñ…àÀñ„œÔ�X…àÀñ…àÀñ…àÀñ…àÀñ‘FoÀî‘FoÀî‘FoÀî†%zt\»f P `ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2/×k@.»] ¨"•’ÔûR�!íìÛ•’ÔûR�!íìÛÃ& �…àÀñã.ê;û•’ÔûR�!íìÛ•’ÔûR�!íìÛÃ& �…àÀñã.ê;û„œÔ�X„œÔ�X…àÀñ…àÀñ…àÀñö°À„œÔ�Xö°ÀÂö°À†~$úDYøÝV z lÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ20óïÛ™ÝVCp¶ŽÓú¥n;Žè7È„œÔ�X…àÀñ…àÀñ„œÔ�X„œÔ�X„œÔ�X…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ‘FoÀî†%wYYX[ŒQ Y jÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ251â�}WŒhÁ”ƜѸ™B…àÀñ…àÀñ„œÔ�X…àÀñ…àÀñ…àÀñ„œÔ�X…àÀñi1NÀi1NÀi1NÀqßÈ]1qßÈ]1qßÈ]1wA¾íŽwA¾íŽwA¾íŽœÑ¸™B…àÀñ…àÀñ„œÔ�X…àÀñ…àÀñ…àÀñœÑ¸™B…àÀñœÑ¸™BœÑ¸™B…àÀñ…àÀñ…àÀñ„œÔ�X…àÀñ„œÔ�X…àÀñ„œÔ�X…àÀñ„œÔ�X‘FoÀî‘FoÀîøXu6èŽÐ„sBÆ…àÀñ…àÀñ„œÔ�X…àÀñ„œÔ�X…àÀñ‘FoÀî†%aqÓY¢d z oÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ22÷„$¢ÄÏÁC’jƒa…àÀñ…àÀñ…àÀñ•’ÔûR¬ýúL]…àÀñ„œÔ�X‘FoÀîøXu6èœÑ¸™BœÑ¸™B’jƒa’jƒa„œÔ�X…àÀñ…àÀñ„œÔ�X„œÔ�X„œÔ�X…àÀñ…àÀñ…àÀñ…àÀñ‘FoÀî†%XYDXk¹r t tÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ23  ½¹þanƒ‘FoÀîœÑ¸™B…àÀñ„œÔ�X…àÀñ„œÔ�X„œÔ�X„œÔ�X„œÔ�X…àÀñ…àÀñ„œÔ�X…àÀñ…àÀñ‘FoÀî†%cÉ{ a jÿÿÿÿÿÿÿÿ €ÿÿÿÿÿÿÿÿÿÿ24„‰ÁîÉóÀà„œÔ�X‘FoÀÔ�XœÑ¸™Bþ  ŸÂ„œÔ�X„œÔ�X„œÔ�X…àÀñ…àÀñ…àÀñœÑ¸™B„œÔ�X„œÔ�X„œÔ�X…àÀñ„œÔ�X¬ýúL]…àÀñ…àÀñ…àÀñ…àÀñ‘FoÀî†S"P%dqÓXfE±X y }ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ26âèÅG±ª•†.…àÀñ…àÀñœÑ¸™B…àÀñ…àÀñœÑ¸™B…àÀñ…àÀñœÑ¸™B„œÔ�X„œÔ�X…àÀñ…àÀñ¬ýúL]œÑ¸™B„œÔ�X…àÀñ…àÀñ„œÔ�X…àÀñ‘FoÀî†%}qÓ¥Rqfÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ27ØW}Å¥ây�O¡€Å_…àÀñ„œÔ�X„œÔ�X…àÀñœÑ¸™B„œÔ�X…àÀñ…àÀñ„œÔ�X…àÀñ…àÀñ…àÀñ‘FoÀî†%IYAXf¤N e zÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ28ñ˜Û&¤&ª]Ô�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�XœÑ¸™B…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ¬ýúL]¬ýúL]¬ýúL]…àÀñ„œÔ�X„œÔ�X…àÀñ…àÀñ„œÔ�X…àÀñøXu6脜Ô�X…àÀñ„œÔ�X‘FoÀî†1" †?Y…s€„a€„F €„…K…t‰… gl€„A‰‰e€„*‰i‰žbŽ“w€@I€…U€„f«o€@…[Ž“g‰U€@QŽ“~‰HŽ“}‰JŽ“W‰¬wF€@IŽ“T«y€@]€@G@^€„kùK hÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿi1NÀùÖZí† $@ÎD$$úD $´B1"�_^€‰z‰C«ÐU kÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿqßÈ]1ЄsBƆ $@ÎD$$áD $´B1"�_~ N€…{‰W éÈR i{ÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿwA¾íŽÈ726Ž•’ÔûR…àÀñ…àÀñ…àÀñ´¹ † $HD $ªBv€…Y€)‰‰C‰C‰¼b|Rÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿARwáq¼ æ°ý´¹ •’ÔûR´¹ Ö!t"Ú„œÔ�X† $Bh‰X‰t‰k\Gu`€@@€@cD€@Q‰{x€@|Ž˜T€…Hr€@Jq€@kq_€‰x€‰vôm€‰o‰‰F€‰]«d‰F‰W‰m‰nit€‰W‰%wp‰p‰Vb€‰B€‰S€‰‘@@l€@v€@p€…o€@w@Di€…@+‰s€@f€@@X«b€@>€„Y€@j@Du€@ž‘~€@\€…~@Dz€N€Ž¡@„Q` €‰‘B€@_€…w‰‰@J€…^€@O‰^€@@Q‰Z€@…@‘f@D[‰@‰i@D@@‘V€…P@DU€@p€@@{€@S€@……’l Jrÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ'uNÛË’jƒa’jƒa’jƒa’jƒa„œÔ�X„œÔ�X„œÔ�X…àÀñ•’ÔûR•’ÔûR„œÔ�X„œÔ�X•’ÔûR„œÔ�X„œÔ�X„œÔ�X…àÀñá�…–á�…–á�…–á�…–á�…–•’ÔûR’jƒa’jƒa•’ÔûR„œÔ�X„œÔ�X„œÔ�Xá�…–á�…–á�…–á�…–á�…–’jƒa’jƒa’jƒaá�…–† $ B„b€@c€‰c‰U €‘OŽ˜|‰a¬n‰óG‰x €‰‘U€Ž¡r€‰I€„W‰d„€‰C€’P‰N‰K‰qO€„F€T€:…rP‰D‘s‰‰u€…[‰` €‰]€…I…ýSGÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿaŠï7´ý£¥ÅÚ† $€"E$$/E $àA?$ff@€…Ìs uÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2c15®Ì52¨X†'"3",]‰ÏPEÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿe’Ž‹sÏjQð† $€"E$$/E $àA?$ff@AaTQÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿfoæFARwáq„œÔ�X¡€Å_„œÔ�X† $aD $4B1"0uE‰b €…h €‰DŽÿ…kŽªD€…€o]€„¡N€‰M€„‰^Ö}€„ôzDd=za/!R ;„w.…zŸ-Á8 ÛtENJyÿÿÿÿÿÿÿÿÿÿí4Lía@@( Òn€„A««}€‰z€‰B€‘€…G‰@Xb €…@€…€Ž˜év W8">ZéW)wO*gWO9gW|Xw¾*¾ 8W Z@u Ž˜…S@x€…n €Ž‘Y€@Q€@b €…l€O@J€N €Ž‘L€B €…M€@c€@B €…V€F@n €Ž‘h€‰@@P€@_€@g‰`€‰}€…L@N €Ž‘k€…T€@b€@G€…z€V@_€Ž‘N€@U€@…„Z€o€…}‰x €Ž‘R„\€@M€@C‰j€…h€……‰ŽÀ‰ @F@\€l€……f€…t€…¡J‰‰h‰P‰R‰S‰€€ÙnY 6Ü$-å'-Ì' Yq!E €t €D €€I€€B€€j €‰a€‰d‰c‰_ €#€@h€@ €@|@Ê~o RÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjÆ¿ÀÏÊplé‘FoÀî†]Time to get AMPED!ÝDo you feel lucky, punk?ÝLet the beatings commence!Ý$#Don't spend it all in one place...ÝWe need guns. Lots of guns.Ý PAH-ty time!ÝNow things get REALLY stupid.ÝMy, what a big gun you have.ÝSplat splat splat.Ý Suck it down!Ý You WILL feel pain.p€‰k€‰€l€…o€€h‰r‰!€@€„x€‰M@ÔOF Qÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6yž+:0ÔYÂ&þVHÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2z˜.vìþš¦óx†'"3"dÿLh Sÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6{Óÿ¼8‡¼†&Ò|€‰äNDÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿ~�P\äGêÆ $€"E$$/E $àA?$ff@Ìs J Nÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6†X°>̰Œ w†&×g qÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿ@0É}×ß–ùÒen÷¼† $¯D $ Bt�†j€‰A�ãC�ãÈ] _ Pÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6Eû£Ó È\ܯ†& @g@€G€‰H€‰Kh@EóLóJ @�T€€@Q€@ñO d Lÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6S9çíæñ—Ó·h†&çD BIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2TõXuÉ竳*à´è7`à´è7`à´è7`â?{Á9Å‹T,.†y €Á^ AHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6 VͤÌHÁ9Å‹TÎc1Q`ÛzÃZÎc1Q`Îc1Q`Îc1Q`Îc1Q`Îc1Q`Îc1Q`Îc1Q`,.†íY Jÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6W�OJwíS®ò¯,.†E= #excessiveEÝ  #utgamesEÝ #utchatEÝ #utmodsEÝ  #utlevelsEÝ #uthelp[ €è\ `nÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿYqAkè7ÈÆyrÒ¯„œÔ�X„œÔ�X„œÔ�X† $–D$$¯D $B?$`@m»ZM PÿI$€@ÓZ mÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ[XѯÓú¥n;† $¯D$$ÈD $HB1"`[&€W€"€@d@_` @H €G@èG gÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2d>æ­è_è†'"3"–~ þ| peÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿf�q�þ  ŸÂ…àÀñ† $aD $ŒB1"€8`€€@e @€@uu UcÀ š:Ñ:$"ÿÿÿÿÿÿÿÿÿÿ4kîͰuNÛË•’ÔûR…àÀñ‘FoÀî…àÀñŽ¢ÄÏÁC…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ¬ýúL]…àÀñ…àÀñ¬ýúL]•’ÔûR¬ýúL]¬ýúL]…àÀñ„œÔ�X…àÀñ…àÀñ„œÔ�X…àÀñ„œÔ�X…àÀñ„œÔ�X…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ„œÔ�X…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ‡X©'…àÀñ…àÀñ…àÀñ¬ýúL]…àÀñ…àÀñ†$?Qø Q•ù Q•ú Q•û Q•ü hZM PÿeSq2Ij€@m@md@@ip @@@q€y€´õ{Q7">o‚$bš™™>-Á'aòRQua!Kq!^ AhZOÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿvfº±ARwáq„œÔ�X† $DùfNÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2w²| #ùƒýe°†'"3"–æbKMÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6"xGÿÑæo“2©Öo ûê+£ à´è7`à´è7`à´è7`à´è7`à´è7`â?{ª~ÜÛà´è7`ª~ÜÛâ?{ª~ÜÛª~ÜÛâ?{ª~ÜÛª~ÜÛâ?{ª~ÜÛª~ÜÛâ?{ª~ÜÛª~ÜÛâ?{ª~ÜÛª~ÜÛâ?{ª~ÜÛª~ÜÛâ?{ª~ÜÛâ?{V,.†Z].-Excessive.ExcessiveBrowserUpdateServerWindowv @E€Àt v Oÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6{¾Z÷XÀÄ�UJ†&‰Õb ~ÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2}ûi ¥Õ‰¸í†'"3"df€@@€Ž¡A€R €D�~ €Äh qÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿDÏ™,¹ÄA‘† $E $HB1"`ê[$€?[€^€@I€‰€ÎePÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2I|¶Ÿ‘ÎYtsl†'"G€‰€Y€„€@€„€‰ç^@Lÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2P8§Š~ç܌̅,.†L]Excessive Server Browseru€‰s€øS ^|ÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿS’B‰9øÙ)©† $ Bx€êE zyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUý\}¿êylT©•’ÔûR•’ÔûR„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X…àÀñ„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X†t?$@?ÍK c Kÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6VÓàÍ®Hêäh†&j‰Íp sÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2XäænNÍÂ"W†'"3",Ðq S Mÿÿÿÿÿÿÿÿ øÿÿÿÿÿÿÿÿÿÿ6Y¤¸ˆ%Ð삦µh†&ÒD xfÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ZÙ�åÒen÷¼•’ÔûRŽþ  ŸÂ•’ÔûR•’ÔûR•’ÔûR•’ÔûR•’ÔûR{† "2€Z€@€÷g wÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿ^�óìa÷$ˆ/†† $€íE$$€íEs€n @ýL iÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2a÷Eš–ýž5Æb†'"3"dt€@½Zo Jÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc§Ä-ŽŠeÉo,†G]www.planetquake.comF]unreal.epicgames.com×QFÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿd¾U×ß–ù† $€"E$$/E $àA?$ff@€‰i€ö` u ^ÿÿÿÿÿÿÿÿ2ÿÿÿÿÿÿÿÿÿÿg«”=ö°À†€üwj"³ €‰pÁ iHI GÒŠb.…Š®å.…Š ¿WjmJ××׊ �ÃÕ6²¨jÕ6§¨m°.…Š !$tIJD«0@Ê((i××JÔÕ«H¯Ã?j?èÔÕ«H¯Ã?m?èW9°ßiÕ?'Ww.…ŠF\OiJ¥Ä«šÄ,Ä%«±áØ\J?,úa ÷ ×JÕ?,`WPØiJ:w\O9°jm õ|ºº!wÑ*Ñ  Úx@ $o‘�-Ì#wõ*õJŠ'Ðõ$«ff¦?.…Š®a!X¸>ÍÌL=Šb€?‹–:Ñ:$q!V'( çXQ E‡ÂLaðôÑC«?,ÿ.…Š®a!Jfff? ÿÿÿÿÿÿÿÿÿÿ<ÞW _/ª @r£*ÀM.…Š2rM*ÃÞ_ ýWA ¥hfw.‘A*h%^–h,Tþh.‘AÈó!zì=h ¥hì$ M€Ì X jâôâ€? äi Z ƒS  €ýKi`^w.‘K*f%^–f,Tþf.‘KÈó!hì=f ¥f ürz"1 Ñ E •Ê  €‰ìyNœ KNHÛÚ-ëNÛ®€?«ÍÌL?«?,âH äJ h¶“ €ÿp rô Xa¸>W#þì!b !b ! a ×#=W !b b) ÿÿÿÿÿÿÿÿÿÿ@€€ G_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿA */M »=, †¥7]Excessive.ExcessiveBioRifleÇR S 0‘, ÿÿÿÿÿÿÿÿÿÿÂmÀÂöù J€ÛG a‹ˆ íå.…Š ¿SRPaŠ ÷6Àa“’6Àa§@ 6Ëa“’6Ëa§èôT×××׊ �ÃÕ6¨SÕ6²¨RÕ6§¨PaÛ Ta ü@ H "¯ Ð R H „6  €Ê N <'™;Ð É $«ff¦?.…Š®a!C@ÍÌL= Ý} ¶Š Òk C ÄPLwÑ*aÍÌL>(aE£&‹ùIÆea^°Æ?,¸Æ? -ü�‚›:.…ŠÖ%—£Í% !@³-Áq!5‚›:.…ŠÖ%—£Í%r.‘Š*.…ŠÖ=A°ÃÈ !@a!r33s@ÍÌL= @ ÿÿÿÿÿþÿÿÿÿ4ÉK X `1ÿÿÿÿÿÿÿÿÿÿð^ �Õ ðöù Ò l - í;ÐÌ$«š™Ù?.…Š®a!C AÍÌL= Î T p{Ó -û' €êo -6¥BÐË$«@.…Š®‹áa!fÍÌL@ ×£< Ï O P €  á` wÏ r£*2.…Š£&q!;-Ì'-å'ñŠa/!Ÿ‚.¬Š-Ø °Ãff&?ʬÊöÉ€?Añæ°áØŠ �Ú?,ʬÊö«?É€?@@ñÉIÊÊ ` Í lv™ -ú' `X u»¹rÑ*`.…ŠIaÚ`IséæÑ.IYÃÍÌÌ>ÑBr.…ŠÏÑ]Äå-Ä-ãY Å L -Cª=a! ®33³?«š™?ÖÍÌL=Ð èÉ$ff†@ Æ\ {]¡®  ÿÿÿÿÿÿÿÿÿÿË [ dÙâì ×{ ßÄ ð* €ÔKS–‰f°â€?¸ìKf±ì?¸âììf‚r.‘Š* °ÃÍÌL>q!]‡š:.…ŠÖ%q!] àJtmIa ÿÿÿÿÿþÿÿÿÿÐlE:;ôs.rE a é ×ltPt‚‚wE wEŠ wE*¡‚Ea/! °ÃÍÌL>.…E{.…ŠúCSR’, §, ǰÃÍÌL>ÝS @E3 R.…ŠlÕ«?RúCSÿQa Ò ×lÔt?, QÛ¬QÛ?,ÄpBpBÿ`jG×lÔt?,  îu‡z !wÑ*Ñ   Ó(°+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó Âÿÿg €‰b €€Ó(ª+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó ÂÿÿÓ(®+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó ÂÿÿÑ} f \YŒ ` p\hostname\ ÆÞ É pp \hostport\S Æi pp \maptitle\ Ú pp \mapname\€V ~V .vV ÆÚ3-r'zExcessiveDeathMatchPlusDeathMatchPlus3UzExcessiveCTFGameCTFGame3‰zExcessiveDominationDomination3ÁzExcessiveTeamGamePlusTeamGamePlus3ÿzExcessiveLastManStandingLastManStanding33zExcessiveAssaultExcessiveAssault pp \gametype\ pp \numplayers\S Æ× pp \maxplayers\S Æ³ p \gamemode\openplaying pp \gamever\ á pp \minnetver\ Ý p  Æ\   €@R€‰Ó(¬+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó ÂÿÿÝv ƒJ  çr a #Ææ( åC M ;‘ 0wÑ*aÍÌL>(B£&‹ùIÍÌL>Ta„-ü�‚›:.…ŠÞ%—£Í% !@ü—-Áq!5üü‚›:.…ŠÞ%—£Í%ör.‘Š*.…ŠÞ=A°ÃÎ !@a!f333@ÍÌL= @ ÿÿÿÿÿþÿÿÿÿÈd Q.¤Ø,,ä/excessive/ut.html,ä/UpdateServer/utmotdfallback.html&ä/UpdateServer/utmasterserver.txt%ä/UpdateServer/utircserver.txt ßl ]U\Ådß] Ä] [S��u!"r£*2.…Š„£&-å'-Ì'À  @ÑC«?,ÿ.…Š®#[q!‹q!0 âm h^!ÚOPhÅd,𿨦æ@šæ%~M¦æ_ þn ÖÍÌL=Þ$úðË-Ö' €ê@ s #�A ( x €í~C/„ü @r£*Àv.…Š2rv*ÃíC y €Ó(ª+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó ÂÿÿÒi\FwZÒ\Zb%»–beL“Ùbi Ž$·�w$*xr$ÚL�$$¾R±r$*·aL¥bX-cL“ÙExcessive.HitSound Ž$·6w$*r$ÚL6$$¾ùXr$*·aL ùy Al €óS s Vº=ÿÿÿÿÿÿÿÿÿÿÜx LG·­-Áq!5hw.¬Š*Rr.¬ŠÌ*.¬ŠÞ$h.¬ŠÞ$t.…Š–rt*ð*q! ººš:tÞ%+q!0 ¸ï«®Ga>L¸ïL±ïÍÌL>ïŠb€?«±ï?&ÄzD\Cÿ?WŠ �.…Šëüÿÿ.…Šc*!jŠ �a U �a à "@aq! ú{ }Lïï Úw EA3pa"‚rL\ ÿ[!6%D6ÅL Ò-ê%ÚE[L\ v€õ^ ` ;ie ÿÿÿÿÿÿÿÿÿÿýIh`^w.‘I*l%^–l,Tþl.‘IÈó!aì=l ¥l þF X/^V@r£*ÀB.…Š2rB*ÃþX €^ Tq‡ µwõ*õJsw.‘Š*.‘ŠMÍÌL¾#€¢CaC¾B.‘ŠWãÞØ‹áÐË$«@.…Š®a!fÍÌL@ÍÌL= Aclass ExcessiveBrowserIRCWindow expands UBrowserIRCWindow; function Created() { Super.Created(); PageControl = UWindowPageControl(CreateWindow(class'UWindowPageControl', 0, 0, WinWidth, WinHeight)); PageControl.SetMultiLine(True); PageControl.bSelectNearestTabOnRemove = True; SystemPage = UBrowserIRCSystemPage(PageControl.AddPage(SystemName, class'ExcessiveBrowserIRCSystemPage').Page); SystemPage.PageParent = PageControl; } Âm e:MìÕ`a ô !Ø××׊ �ÃÕ?,xÕ®«333@6²¨ @cÔh?&Þw`*`Û@`TpÔ××Õ®«Ãš™™>ÍÌÌ>xÕ®«ÃÍÌL>ÍÌL>cÕ®«Ãš™™>€?h?,  re a ß ×^_P_Ó‚‚we weŠ we*e( ,W.…Š^Õ`êFxÿva Ò ×^Ô_?, vÛ«vÛš™™?ÄêBðBÿ`jG×^Ô_?,  õS G RÓ(‹ùaq=Š> ÿÿÿÿÿþÿÿÿÿçN™çöù €‰ék }CwI ØZ“׳°‚\ –ZjN\Password zëNëG¡³’Z&Jé}\q{¢³’Z&­qË*ÐJé}\q{J ñ MV¶ÉÿÿÿÿÿÿÿÿÿÿLclass ExcessiveNali expands TNali; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } ÜF OH"{ØŠb.…Š®å.…Š ¿copy×××׊ �ÃÕ6¨cÕ6²¨oÕ6§¨p6Â+6¨6²+ªB6§+6§¨×××׊ �ÃÕ6Â+cÕ6²+oÕ6§+p6²+ªÂX×××׊ �ÃÕ6Â+cÕ6²+oÕ6§+p°.…Š !NyDÊ'-zÁ‚›:.…ŠÞ%š:.…ŠÖ%p.…Š !NDÊ'-zC.…Š !NXDÊ'-z¢6Òp ¢6Àp¡6ÒC ¡6ÀpaO paO XCaO y° Ú O pµ 86„š:.…ŠÞ%˜£Í%* ØI H0²éŠb.…Š®å.…Š ¿QhE_×××׊ �ÃÕ6¨QÕ6²¨hÕ6§¨E°.…Š& S@_%'„-A °ÃÍÌÌ>a _° €Ã gjq9ow ÆÕ* ÆÕ7|throw_translocatorS.…ŠÍçÞw ÆÔ* ÆÔ7|throw_translocatorS.…ŠÍçúŠa/!- 'g×××׊ �ÃÕ6¨dÕ6²¨]Õ6§¨[.…Š ¿.…Š Sëg%''å.…Š ¿d][÷a g g0w÷*-Ù'÷þ Ša/!÷ a÷T.…ŠÙg7q!0 ú| ƒ‘úð* _€¡ÞW P2Îfr£*2.…Šd£&-å'-Ì'Šb.…Š®å.…Š ¿gCT׊ �Ãa Ù !×TÔg?,"T×××TÕ6¨gÕ6²¨Õ6§¨C°.…Š SÚTDÊ'-ëa S T°#Pq! ý\ ’`^w.‘\*u%^–u,Tþu.‘\Èó!Wì=u ¥u y€¡|ôd V €‰àm]/Ý'@r£*Àl.…Š2rl*Ãà] €‰g€‰üT r "Ü èf TA3Va"‚rZJ ÿx!6%D6ÅZ Ò-ê%èTxZJ Ça <:X·[|׊ �Ãr< `„-ü wÑ*a é ×amPm|a Õ ×amPmYY‚‚w< w<Š w<*¾°ÃÍÌL>Ý^?,<+ È.…ŠaÕ€;E^ÿ<‚�<-í�<a/!da ö ×aÔm?, Y<a í €@ ÈB Û M v5 ½'„�-Ìr.…Š*q!»F-ãÀ?%q![»‚-Ä –Ç,ÍÌŒ?Ç-Ä(¥Ç»ž„-ò ™Ç,* u!K“Ç&-Ä' X €‰ìd eE°µwõ*õJsw.‘Š*.‘ŠMÍÌL¾#€¢CaC¾B.‘ŠWãÞØ‹áÐË$«@.…Š®a!i33s@ÍÌL= €æ] HGGºú—i%UBHPasswordÜ‚›: Ô:$ Hy™“׳iUËÜÜ‚{h{ëBëhÂzBUåUNEEDPWÜUËUWRONGPW÷�>uUææHuUU ëQ <=Ja!d33s@ÍÌL=-Ê' Êt ;F c8„„„r;* r;Š r; rŠ* g׊ �Ãg¬áØgs?,´Ö„r; ;a/!pŠ8 D«?,Èg.…ŠsÔÕ@Çjgÿa;; D«?ˆg.…ŠsÔÕ`êFjgÿa‚�;-í�;a/!da ö ×sÔB?,  €‰áh Dž Xi • €^€Iclass WeaponUpgrade expands Mutator abstract; var class WeaponBaseType; var class WeaponNewType; var class WeaponReplaceType; var string WeaponNewString; function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { bSuperRelevant = 0; if (Other.IsA('TournamentWeapon')) // remove old weapon if ( (Other.IsA(WeaponBaseType.Name)) && (!Other.IsA(WeaponNewType.Name)) ) return False; if ( (Other.IsA('TournamentAmmo')) && (WeaponBaseType != class'ImpactHammer') && (WeaponBaseType != class'Translocator') ) // remove old ammo if ( (Other.IsA(WeaponBaseType.Default.AmmoName.Name)) && (!Other.IsA(WeaponNewType.Default.AmmoName.Name)) ) return False; return True; } function ModifyPlayer(Pawn Other) { Super.ModifyPlayer(Other); if (WeaponReplaceType != None) GiveWeapon(Other, WeaponReplaceType); else GiveWeapon(Other, WeaponNewType); if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); } //this was lifted from the DeathMatchPlus class function GiveWeapon(Pawn PlayerPawn, class WeaponClass ) { local Weapon NewWeapon; if( PlayerPawn.FindInventoryType(WeaponClass) != None ) return; newWeapon = Spawn(WeaponClass); if( newWeapon != None ) { newWeapon.RespawnTime = 0.0; newWeapon.GiveTo(PlayerPawn); newWeapon.bHeldItem = true; newWeapon.SetSwitchPriority(PlayerPawn); newWeapon.WeaponSet(PlayerPawn); newWeapon.AmbientGlow = 0; if ( PlayerPawn.IsA('PlayerPawn') ) newWeapon.SetHand(PlayerPawn(PlayerPawn).Handedness); else newWeapon.GotoState('Idle'); PlayerPawn.Weapon.GotoState('DownWeapon'); PlayerPawn.PendingWeapon = None; PlayerPawn.Weapon = newWeapon; if ( !newWeapon.IsA('ImpactHammer') && !newWeapon.IsA('Translocator') ) { newWeapon.GiveAmmo(PlayerPawn); newWeapon.AmmoType.AmmoAmount = newWeapon.AmmoType.MaxAmmo; } } } üx Z "½ Å WI1¶pR.…ŠŠbR®åR ¿nz}G׊ �ÕRè}°R !$tIGD«?,Ê((n9°×GÕ?'n|RFAGGJ±áØAG?,úCšC,a ^ ×GÕ?,bnPØGC%J¥C:|AGnz} Æb ëG-ü8 b( âp f "1y îU _!Ekiw.‘_*]%i–],_þ].‘_Èó!Eì=]å] ¥] /class SniperUpgrade expands WeaponUpgrade; é t -æ Ba!Oš™Y@ÍÌL=ÐË$«.…Š®€@‹á éppõ -û' ömI5 øÿÿÿþÿÿÿÿÿÿ q Vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿu '³… »=, †¸.]Excessive.ExcessiveSniper3class ShockRifleUpgrade expands WeaponUpgrade; ÅybFcZÅbtI%»–Iv`“ÙIy Ž!·�w!*xr!Ú`�!!¾R±r!*·a`¥IX-x`“ÙExcessive.HitSound Ž!·6w!*r!Ú`6!!¾ùXr!*·a` ýym`^w.‘y*o%^–o,Tþo.‘yÈó!iì=o ¥o ê r <í³BÐÌ$«.…Š®€@a!Oš™@ÍÌL=‹á Æ V ÖÍÌL=Ð ÓÉ$ff†@ ð j Ê·C„r.…Š*‚w£*˜£Í%+q!µX�-Ìq!µ€›:.…ŠÞ%8 µ¨›:.…ŠÖ%8#µ+q!  @Uÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ| ¸ò–q »=, †Œ1]#"Excessive.ExcessiveRocketLauncherÓra C3%- `MdG;�- vzbasic- Gò°zinfo- \òëzrules- mòezplayers?— Æ×%- ~b- òKzstatus- G%- \%š Æ×%- mH- m%- ~òŽzecho- p\echo\dòízsecureFp\validate\GdÒ- Fò6zlevel_property- ]dò~zgame_property- \dòÈzplayer_property- SdòçpUdpServerQuery: Unknown query: +�- çUdpServerQuery: Error responding to query.G ÒEk ˜US|E>.…EB-ð|ù�D«?|¨ªª?S–>ë|žw ÆÕ* ÆÕ w>âw ÆÔ* ÆÔ w>¡>ë×#—>ë|>ë|U>aÉ  @EbÍÌL>w Ç E c-"’ÐË$«.…Š®@@a§,Õ®fff?«?ÖÍÌL=�‚w.‘Š*)´.‘ŠÆ.‘ŠÎ‹á /class RipperUpgrade expands WeaponUpgrade; €‰ö|~ Z¤9ÿÿÿÿÿÿÿÿÿÿæB{GGÀú—~%bv{PasswordÜ‚›: Ô:$ {y™“׳~bËÜÜ‚{M{ëvëMÂzvbåyNEEDPWÜbËyWRONGPW÷�>obææ{oby  @ YÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD 2Üg »=, †Ý0]Excessive.ExcessiveRipperü`A "Ñ Ù bn[*Ÿbsbfq!`  PWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿG ^ÇÍ· »=, †¢2]Excessive.ExcessivePulseGun0class MinigunUpgrade expands WeaponUpgrade; €@Ó(°+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó Âÿÿ H ZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿK €—Åì »=, †¹3]Excessive.ExcessiveMinigun€ãQ ~ì´ k€‘Ðq UK'áJŠ'Ðô$«ÍÌÌ=.…Š®aUß@@ÍÌL= ûqà,¹ï«@?q*°ï?%ï äP L è� îE [/h @r£*ÀJ.…Š2rJ*Ãî[ Ó(¨+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó ÂÿÿÝY U v¹� q!5' €-class FlakUpgrade expands WeaponUpgrade; ÅqgFgZÅghJ%»–JpZ“ÙJq Ž ·�w *xr ÚZ�  ¾R±r *·aZ¥JX-iZ“ÙExcessive.HitSound Ž ·6w *r ÚZ6  ¾ùXr *·aZ ýa ¨ž @ðôÑC«?,ÿ.…Š®a!Jfff?v! Á´V +  V \ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ ÔBbÕ »=, †±6]Excessive.ExcessiveFlakCannonuFclass ExcessiveUdpServerQuery expands UdpServerQuery config; var() globalconfig bool bShowStandard; function string ParseQuery( IpAddr Addr, coerce string Query, int QueryNum, out int PacketNum ) { local string QueryType, QueryValue, QueryRest, ValidationString; local bool Result; local int bFinalPacket; bFinalPacket = 0; Result = ParseNextQuery(Query, QueryType, QueryValue, QueryRest, bFinalPacket); if( !Result ) return ""; //Log("Got Query: " $ QueryNum $ "." $ PacketNum $ ":" $ QueryType); if( QueryType=="basic" ) { Result = SendQueryPacket(Addr, GetBasic(), QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="info" ) { Result = SendQueryPacket(Addr, GetInfo(), QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="rules" ) { Result = SendQueryPacket(Addr, GetRules(), QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="players" ) { if( Level.Game.NumPlayers > 0 ) Result = SendPlayers(Addr, QueryNum, PacketNum, bFinalPacket); else Result = SendQueryPacket(Addr, "", QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="status" ) { Result = SendQueryPacket(Addr, GetBasic(), QueryNum, PacketNum, 0); Result = SendQueryPacket(Addr, GetInfo(), QueryNum, PacketNum, 0); if( Level.Game.NumPlayers == 0 ) { Result = SendQueryPacket(Addr, GetRules(), QueryNum, PacketNum, bFinalPacket); } else { Result = SendQueryPacket(Addr, GetRules(), QueryNum, PacketNum, 0); Result = SendPlayers(Addr, QueryNum, PacketNum, bFinalPacket); } } else if( QueryType=="echo" ) { // Respond to an echo with the same string Result = SendQueryPacket(Addr, "\\echo\\"$QueryValue, QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="secure" ) { ValidationString = "\\validate\\"$Validate(QueryValue, GameName); Result = SendQueryPacket(Addr, ValidationString, QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="level_property" ) { Result = SendQueryPacket(Addr, GetLevelProperty(QueryValue), QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="game_property" ) { Result = SendQueryPacket(Addr, GetGameProperty(QueryValue), QueryNum, PacketNum, bFinalPacket); } else if( QueryType=="player_property" ) { Result = SendQueryPacket(Addr, GetPlayerProperty(QueryValue), QueryNum, PacketNum, bFinalPacket); } else { Log("UdpServerQuery: Unknown query: "$QueryType); } if( !Result ) Log("UdpServerQuery: Error responding to query."); return QueryRest; } function string GetInfo() { local string ResultSet; local string GameType; // The server name, i.e.: Bob's Server ResultSet = "\\hostname\\"$Level.Game.GameReplicationInfo.ServerName; // The short server name //ResultSet = ResultSet$"\\shortname\\"$Level.Game.GameReplicationInfo.ShortName; // The server port. ResultSet = ResultSet$"\\hostport\\"$Level.Game.GetServerPort(); // (optional) The server IP // if (ServerIP != "") // ResultSet = ResultSet$"\\hostip\\"$ServerIP; // The map/level title ResultSet = ResultSet$"\\maptitle\\"$Level.Title; // Map name ResultSet = ResultSet$"\\mapname\\"$Left(string(Level), InStr(string(Level), ".")); // The mod or game type GameType = GetItemName(string(Level.Game.Class)); // if server admin wants it to show up in regular tabs, change the game type reported if (bShowStandard) { if (GameType=="ExcessiveDeathMatchPlus") GameType = "DeathMatchPlus"; else if (GameType=="ExcessiveCTFGame") GameType = "CTFGame"; else if (GameType=="ExcessiveDomination") GameType = "Domination"; else if (GameType=="ExcessiveTeamGamePlus") GameType = "TeamGamePlus"; else if (GameType=="ExcessiveLastManStanding") GameType = "LastManStanding"; else if (GameType=="ExcessiveAssault") GameType = "ExcessiveAssault"; } ResultSet = ResultSet$"\\gametype\\"$GameType; // The number of players ResultSet = ResultSet$"\\numplayers\\"$Level.Game.NumPlayers; // The maximum number of players ResultSet = ResultSet$"\\maxplayers\\"$Level.Game.MaxPlayers; // The game mode: openplaying ResultSet = ResultSet$"\\gamemode\\openplaying"; // The version of this game. ResultSet = ResultSet$"\\gamever\\"$Level.EngineVersion; // The most recent network compatible version. ResultSet = ResultSet$"\\minnetver\\"$Level.MinNetVersion; ResultSet = ResultSet$Level.Game.GetInfo(); return ResultSet; } ý[ e @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ Múêý6Yô–•’ÔûR�!íìÛã¿DÛ•’ÔûR�!íìÛ•’ÔûR•’ÔûR�!íìÛ•’ÔûR�!íìÛ•’ÔûR�!íìÛ•’ÔûR•’ÔûR•’ÔûR�!íìÛ•’ÔûR�!íìÛ•’ÔûR�!íìÛb†k"�èW fA2^a"‚r}i ÿi!6%D6Å} Ò-ê%èfi}i ïO \H.ŠeŠa/!O.‘ŠWã«Þ?ÈØ.‘ŠMÍÌ̾#€"DáC>Cwõ*õJ»-ÎÐ ÐÉ$«€@.…Š®âÐÌ$«€@.…Š®�-òa\íÍÌ\@ÍÌL= j€Tclass ExcessiveTranslocatorTarget expands TranslocatorTarget; auto state Pickup { simulated function HitWall (vector HitNormal, actor Wall) { if ( bAlreadyHit ) { bBounce = false; return; } bAlreadyHit = ( HitNormal.Z > 0.7 ); PlaySound(ImpactSound, SLOT_Misc); // hit wall sound Velocity = 0.3*(( Velocity dot HitNormal ) * HitNormal * (-2.17) + Velocity); // Reflect off Wall w/damping speed = VSize(Velocity); } } ßE e/q» @r£*Àj.…Š2rj*Ãße €æ] AGFÂú—w%_YAPasswordÜ‚›: Ô:$ Ay™“׳w_ËÜÜ‚{|{ëYë|ÂzY_åFNEEDPWÜ_ËFWRONGPW÷�>f_ææAf_F ×oRÃÅo× €Nclass ExcessiveTranslocator expands Translocator; function ThrowTarget() { local Vector Start, X,Y,Z; if (Level.Game.LocalLog != None) Level.Game.LocalLog.LogSpecialEvent("throw_translocator", Pawn(Owner).PlayerReplicationInfo.PlayerID); if (Level.Game.WorldLog != None) Level.Game.WorldLog.LogSpecialEvent("throw_translocator", Pawn(Owner).PlayerReplicationInfo.PlayerID); if ( Owner.IsA('Bot') ) bBotMoveFire = true; Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; Pawn(Owner).ViewRotation = Pawn(Owner).AdjustToss(TossForce, Start, 0, true, true); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); TTarget = Spawn(class'ExcessiveTranslocatorTarget',,, Start); if (TTarget!=None) { bTTargetOut = true; TTarget.Master = self; if ( Owner.IsA('Bot') ) TTarget.SetCollisionSize(0,0); TTarget.Throw(Pawn(Owner), MaxTossForce, Start); } else GotoState('Idle'); } +class ExcessiveTracer expands MTracer; q €éc eCu5 ØF“׳°‚P –FwaPPassword zëaë|¡³’F&kéePDb¢³’F&­DË*ÐkéePDbk Dy)class ExcessiveTime expands Mutator; var bool Initialized; var int AmpCount; var globalconfig int AmpTime; function PostBeginPlay() { local Pawn P; if (Initialized) return; Initialized = True; SetTimer(0.6, True); } function ModifyLogin(out class SpawnClass, out string Portal, out string Options) { switch (SpawnClass) { case (class'TMale1'): SpawnClass = class'ExcessiveMale1'; break; case (class'TMale2'): SpawnClass = class'ExcessiveMale2'; break; case (class'TBoss'): SpawnClass = class'ExcessiveBoss'; break; case (class'TFemale1'): SpawnClass = class'ExcessiveFemale1'; break; case (class'TFemale2'): SpawnClass = class'ExcessiveFemale2'; break; case (class'TSkaarj'): SpawnClass = class'ExcessiveSkaarj'; break; case (class'TCow'): SpawnClass = class'ExcessiveCow'; break; case (class'TNali'): SpawnClass = class'ExcessiveNali'; break; } if ( NextMutator != None ) NextMutator.ModifyLogin(SpawnClass, Portal, Options); } simulated function GiveAmp(Pawn PlayerPawn) { local UDamage damage; if( (PlayerPawn.FindInventoryType(class'UDamage') != None) || (PlayerPawn.Health <= 0) ) return; damage = spawn(class'UDamage',PlayerPawn,,PlayerPawn.Location); if( damage != None ) { damage.RespawnTime = 0.0; damage.GiveTo(PlayerPawn); damage.Activate(); } } function ModifyPlayer(Pawn Other) { Other.Health = 300; if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); } simulated function Timer() { // regenerate ammo (except redeemer) & health in one fell swoop local Pawn P; local Inventory Inv; if (AmpCount < AmpTime) AmpCount++; else if (AmpCount == AmpTime) { BroadcastLocalizedMessage( class'ExcessiveAmpMsg',,, None, None ); // give all current players damage amps for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('Bot') || P.IsA('TournamentPlayer')) GiveAmp(P); AmpCount = 0; } for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('Bot') || P.IsA('TournamentPlayer')) { if (P.Health > 0) { // ammo for( Inv=P.Inventory; Inv!=None; Inv=Inv.Inventory ) if ( (Ammo(Inv)!=None) && (P.bFire==0) && (P.bAltFire==0) ) if (Ammo(Inv).AmmoAmount < Ammo(Inv).MaxAmmo) { Ammo(Inv).AmmoAmount += Ammo(Inv).Default.AmmoAmount; if (Ammo(Inv).AmmoAmount > Ammo(Inv).MaxAmmo) Ammo(Inv).AmmoAmount = Ammo(Inv).MaxAmmo; } // health if ( P.Health < 300 ) P.Health = FMin(300, P.Health + 5); } } } “k V aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&l ô ©>“ÕƒC,•’ÔûR…àÀñ…àÀñ…àÀñ…àÀñ•’ÔûR…àÀñ…àÀñ…àÀñ…àÀñ…àÀñžÌj@£…àÀñ…àÀñœÑ¸™BœÑ¸™BœÑ¸™BœÑ¸™BœÑ¸™BœÑ¸™BœÑ¸™BœÑ¸™BžÌj@£…àÀñ…àÀñ…àÀñ…àÀñ…àÀñ“ÕƒC,…àÀñ…àÀñ…àÀñé8» ¸é8» ¸é8» ¸“ÕƒC,†["ôà sÞ½'„�-Ìr.…Š*q!»F-ãÀ?%q![»‚-Ä –Ç,ÍÌŒ?Ç-Ä(¥Ç»ž„-ò ™Ç,* u!K“Ç&-Ä' a€‘á m ßÚ•-Î(v-òv!Ç&*L„�-Ìr.…Š*q!sk-ãÀ?%q![s* “Ç&K“Ç&-Ä' k-class ExcessiveTeamGamePlus expands TeamGamePlus; var string Mutators[13]; var int NumMutators; var globalconfig bool bUseHitSound; var globalconfig string ReservedPassword; var globalconfig int NumReservedSpots; event InitGame( string Options, out string Error ) { local Mutator M; local class MutatorClass; local int i; Super.InitGame(Options, Error); // add all the mutators for (i = 0; i < NumMutators; i++) { MutatorClass = class(DynamicLoadObject(Default.Mutators[i], class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } if (bUseHitSound) { MutatorClass = class(DynamicLoadObject("Excessive.HitSound", class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } } function int ReduceDamage( int Damage, name DamageType, pawn injured, pawn instigatedBy ) { if ( (injured == instigatedBy) && (DamageType != 'SpecialDamage') ) return 0; if( injured.Region.Zone.bNeutralZone ) return 0; return Super.ReduceDamage( Damage, DamageType, injured, instigatedBy ); } event PreLogin ( string Options, string Address, out string Error, out string FailCode ) { local string InPassword; if (NumReservedSpots > 0) { Error=""; InPassword = ParseOption( Options, "Password" ); if( (Level.NetMode != NM_Standalone) && AtCapacity(Options) ) { if ( (NumPlayers - MaxPlayers) >= NumReservedSpots) Error=MaxedOutMessage; else if ( ReservedPassword !="" && (caps(InPassword) != caps(ReservedPassword))) { if( InPassword == "" ) { Error = NeedPassword; FailCode = "NEEDPW"; } else { Error = MaxedOutMessage; FailCode = "WRONGPW"; } } } if(!CheckIPPolicy(Address)) Error = IPBanned; } else Super.PreLogin(Options, Address, Error, FailCode); } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local string InPassword; local int NumReservedPlayers; local playerpawn NewPlayer; NumReservedPlayers = NumPlayers - MaxPlayers; if ( (AtCapacity(Options)) && (NumReservedPlayers < NumReservedSpots) ) { InPassword = ParseOption( Options, "Password" ); if ( caps(InPassword) == caps(ReservedPassword) ) { MaxPlayers += NumReservedPlayers + 1; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); MaxPlayers -= NumReservedPlayers + 1; } else { Error = MaxedOutMessage; return None; } } else NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); return NewPlayer; } ¶p i bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6 q Ê çî¶è¿°D•’ÔûR…àÀñ´¹ “ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,†]Excessive.ExcessiveTimeÝExcessive.ExcessivePowerupsÝExcessive.EnforcerUpgradeÝExcessive.HammerUpgradeÝExcessive.BioUpgradeÝExcessive.ShockRifleUpgradeÝExcessive.PulseUpgradeÝExcessive.RipperUpgradeÝExcessive.MinigunUpgradeÝ Excessive.FlakUpgradeÝ Excessive.RocketUpgradeÝ Excessive.SniperUpgradeÝ Excessive.TranslocatorUpgradeB" 9Ó=]Excessive Team DeathMatchÇh Á–( Ãv ·! ð* òz Y `áÞÿÿÿÿÿÿÿÿÿÿjDclass ExcessiveStarterBolt expands ExcessivePBolt; var float OldError, NewError, StartError, AimError; //used for bot aiming var rotator AimRotation; var float AnimTime; replication { // Things the server should send to the client. unreliable if( Role==ROLE_Authority ) AimError, NewError, AimRotation; } simulated function PostBeginPlay() { Super.PostBeginPlay(); if ( instigator == None ) return; if ( Instigator.IsA('Bot') && Bot(Instigator).bNovice ) aimerror = 2200 + (3 - instigator.skill) * 300; else aimerror = 1000 + (3 - instigator.skill) * 400; if ( FRand() < 0.5 ) aimerror *= -1; } simulated function Tick(float DeltaTime) { local vector X,Y,Z, AimSpot, DrawOffset, AimStart; local int YawErr; local float dAdjust; local Bot MyBot; AnimTime += DeltaTime; if ( AnimTime > 0.05 ) { AnimTime -= 0.05; SpriteFrame++; if ( SpriteFrame == ArrayCount(SpriteAnim) ) SpriteFrame = 0; Skin = SpriteAnim[SpriteFrame]; } // orient with respect to instigator if ( Instigator != None ) { if ( (Level.NetMode == NM_Client) && (!Instigator.IsA('PlayerPawn') || (PlayerPawn(Instigator).Player == None)) ) { SetRotation(AimRotation); Instigator.ViewRotation = AimRotation; DrawOffset = ((0.01 * class'PulseGun'.Default.PlayerViewOffset) >> Rotation); DrawOffset += (Instigator.EyeHeight * vect(0,0,1)); } else { MyBot = Bot(instigator); if ( MyBot != None ) { if ( Instigator.Target == None ) Instigator.Target = Instigator.Enemy; if ( Instigator.Target == Instigator.Enemy ) { if (MyBot.bNovice ) dAdjust = DeltaTime * (4 + instigator.Skill) * 0.075; else dAdjust = DeltaTime * (4 + instigator.Skill) * 0.12; if ( OldError > NewError ) OldError = FMax(OldError - dAdjust, NewError); else OldError = FMin(OldError + dAdjust, NewError); if ( OldError == NewError ) NewError = FRand() - 0.5; if ( StartError > 0 ) StartError -= DeltaTime; else if ( MyBot.bNovice && (Level.TimeSeconds - MyBot.LastPainTime < 0.2) ) StartError = MyBot.LastPainTime; else StartError = 0; AimSpot = 1.25 * Instigator.Target.Velocity + 0.75 * Instigator.Velocity; if ( Abs(AimSpot.Z) < 120 ) AimSpot.Z *= 0.25; else AimSpot.Z *= 0.5; if ( Instigator.Target.Physics == PHYS_Falling ) AimSpot = Instigator.Target.Location - 0.0007 * AimError * OldError * AimSpot; else AimSpot = Instigator.Target.Location - 0.0005 * AimError * OldError * AimSpot; if ( (Instigator.Physics == PHYS_Falling) && (Instigator.Velocity.Z > 0) ) AimSpot = AimSpot - 0.0003 * AimError * OldError * AimSpot; AimStart = Instigator.Location + FireOffset.X * X + FireOffset.Y * Y + (1.2 * FireOffset.Z - 2) * Z; if ( FastTrace(AimSpot - vect(0,0,10), AimStart) ) AimSpot = AimSpot - vect(0,0,10); GetAxes(Instigator.Rotation,X,Y,Z); AimRotation = Rotator(AimSpot - AimStart); AimRotation.Yaw = AimRotation.Yaw + (OldError + StartError) * 0.75 * aimerror; YawErr = (AimRotation.Yaw - (Instigator.Rotation.Yaw & 65535)) & 65535; if ( (YawErr > 3000) && (YawErr < 62535) ) { if ( YawErr < 32768 ) AimRotation.Yaw = Instigator.Rotation.Yaw + 3000; else AimRotation.Yaw = Instigator.Rotation.Yaw - 3000; } } else if ( Instigator.Target != None ) AimRotation = Rotator(Instigator.Target.Location - Instigator.Location); else AimRotation = Instigator.ViewRotation; Instigator.ViewRotation = AimRotation; SetRotation(AimRotation); } else { AimRotation = Instigator.ViewRotation; SetRotation(AimRotation); } Drawoffset = Instigator.Weapon.CalcDrawOffset(); } GetAxes(Instigator.ViewRotation,X,Y,Z); if ( bCenter ) { FireOffset.Z = Default.FireOffset.Z * 1.5; FireOffset.Y = 0; } else { FireOffset.Z = Default.FireOffset.Z; if ( bRight ) FireOffset.Y = Default.FireOffset.Y; else FireOffset.Y = -1 * Default.FireOffset.Y; } SetLocation(Instigator.Location + DrawOffset + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z); } else GetAxes(Rotation,X,Y,Z); CheckBeam(X, DeltaTime); } î r ¢{ ·C„r.…Š*‚w£*˜£Í%+q!µX�-Ìq!µ€›:.…ŠÞ%8 µ¨›:.…ŠÖ%8#µ+q! Ð`lFmZÐljH%»–HnX“ÙH` Ž·�w*xrÚX�¾R±r*·aX¥HX-mX“ÙExcessive.HitSound Ž·6w*rÚX6¾ùXr*·aX €€t4class ExcessiveSniper expands SniperRifle; var int trace; function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'SniperRifle' ) { // set to the same priority as the standard Sniper Rifle AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } simulated function PlayFiring() { local int r; PlayOwnedSound(FireSound, SLOT_None, Pawn(Owner).SoundDampening*3.0); PlayAnim(FireAnims[Rand(5)],0.9 + 0.5 * FireAdjust, 0.05); if ( (PlayerPawn(Owner) != None) && (PlayerPawn(Owner).DesiredFOV == PlayerPawn(Owner).DefaultFOV) ) bMuzzleFlash++; } 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 + 10000 * X; Other = PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); if ( VSize(HitLocation - StartTrace) > 250 ) { if (trace == 3) { Spawn(class'ExcessiveTracer',,, StartTrace + 98 * X,rotator(EndTrace - StartTrace)); trace = 0; } else trace++; } ProcessTraceHit(Other, HitLocation, HitNormal, X,Y,Z); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local UT_Shellcase s; local Actor a; 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)); if ( (Other != self) && (Other != Owner) && (Other != None) ) { Other.TakeDamage(87, Pawn(Owner), HitLocation, 30000.0*X, MyDamageType); a = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); a.DrawScale = a.DrawScale*1.2; HurtRadius(117,120.0, MyDamageType, 60000, HitLocation+HitNormal*9); } } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } 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; } TraceFire(0.0); AimError = Default.AimError; ClientFire(Value); } } } T-class ExcessiveShockRifle expands ShockRifle; function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'ShockRifle' ) { // set to the same priority as the standard ShockRifle AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } simulated function PlayFiring() { PlayOwnedSound(FireSound, SLOT_None, Pawn(Owner).SoundDampening*4.0); LoopAnim('Fire1', 1.4 + 0.30 * FireAdjust,0.05); } simulated function PlayAltFiring() { PlayOwnedSound(AltFireSound, SLOT_None,Pawn(Owner).SoundDampening*4.0); PlayAnim('Fire2', 1.6 + 0.4 * FireAdjust,0.05); } function AltFire( float Value ) { local actor HitActor; local vector HitLocation, HitNormal, Start; if ( Owner == None ) return; if ( Owner.IsA('Bot') ) //make sure won't blow self up { Start = Owner.Location + CalcDrawOffset() + FireOffset.Z * vect(0,0,1); if ( Pawn(Owner).Enemy != None ) HitActor = Trace(HitLocation, HitNormal, Start + 250 * Normal(Pawn(Owner).Enemy.Location - Start), Start, false, vect(12,12,12)); else HitActor = self; if ( HitActor != None ) { Global.Fire(Value); return; } } if ( AmmoType.UseAmmo(1) ) { GotoState('AltFiring'); bCanClientFire = true; if ( Owner.IsA('Bot') ) { if ( Owner.IsInState('TacticalMove') && (Owner.Target == Pawn(Owner).Enemy) && (Owner.Physics == PHYS_Walking) && !Bot(Owner).bNovice && (FRand() * 6 < Pawn(Owner).Skill) ) Pawn(Owner).SpecialFire(); } bPointing=True; ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget); ClientAltFire(value); } } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local int i; local PlayerPawn PlayerOwner; if (Other==None) { HitNormal = -X; HitLocation = Owner.Location + X*10000.0; } PlayerOwner = PlayerPawn(Owner); if ( PlayerOwner != None ) PlayerOwner.ClientInstantFlash( -0.4, vect(450, 190, 650)); SpawnEffect(HitLocation, Owner.Location + CalcDrawOffset() + (FireOffset.X + 20) * X + FireOffset.Y * Y + FireOffset.Z * Z); if ( ShockProj(Other)!=None ) { AmmoType.UseAmmo(3); ShockProj(Other).SuperExplosion(); } else Spawn(class'ut_RingExplosion5',,, HitLocation+HitNormal*8,rotator(HitNormal)); if ( (Other != self) && (Other != Owner) && (Other != None) ) Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, 60000.0*X, MyDamageType); } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } A class ExcessiveShockProj extends ShockProj; function SuperExplosion() { local int i, iExpl; local vector v; HurtRadius(Damage*5, 310, MyDamageType, MomentumTransfer*1.7, Location ); Spawn(Class'ut_ComboRing',,'',Location, Instigator.ViewRotation); PlaySound(ExploSound,,20.0,,2000,0.6); iExpl = 3 + Rand(3); for (i = 0; i < iExpl; i++) spawn(class'ExcessiveShockExpl',Self,,Location + (100 + 100 * FRand()) * (VRand() + Vect(0,0,0.5))); Destroy(); } singular function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation, vector momentum, name damageType ) { if (damageType == MyDamageType) SuperExplosion(); Super.TakeDamage( NDamage, instigatedBy, hitlocation, momentum, damageType ); } Âw gA3fa"‚rV_ ÿ`!6%D6ÅV Ò-ê%Âg`V_ c@â o þßÇ%-ã(-Ä( Üu ˜ñ ( ð_A 2ñ-Ç( ÿÿÿÿÿÿÿÿÿÿ €æ} [GGÊú—P%c^[PasswordÜ‚›: Ô:$ [y™“׳PcËÜÜ‚{m{ë^ëmÂz^cå]NEEDPWÜcË]WRONGPW÷�>^cææ[^c] Uclass ExcessiveShockExpl expands UT_SpriteBallExplosion; var int Damage; simulated function PostBeginPlay() { if ( Level.NetMode != NM_Client ) MakeSound(); if ( !Level.bDropDetail ) Texture = SpriteAnim[Rand(3)]; if ( (Level.NetMode!=NM_DedicatedServer) && Level.bHighDetailMode && !Level.bDropDetail ) SetTimer(0.05+FRand()*0.04,False); else LightRadius = 6; Super(AnimSpriteEffect).PostBeginPlay(); } simulated Function Timer() { if ( Level.bDropDetail ) return; if ( FRand() < 0.4 + (MissCount - 1.5 * ExpCount) * 0.25 ) { ExpCount++; Spawn(class'UT_SpriteBallChild',Self, '', Location + (20 + 20 * FRand()) * (VRand() + Vect(0,0,0.5)) ); HurtRadius(Damage,60.0, class'Shockproj'.Default.MyDamageType, 0, Location ); MakeNoise(1.0); } else MissCount++; if ( (ExpCount < 3) && (LifeSpan > 0.45) ) SetTimer(0.05+FRand()*0.05,False); }  O H:T¹�:rH*FÓre׊ �Ôr@FD.‘ŠvwD*DMÍÌ̾#áC>C€"D`e×××׊ �ÃÕ®6¨?,rÕ6²¨bÕ6§¨a w.þH*£,.þHj.a Ê ×eÔF?,PF‹‚‚wH wHŠ wH*H+ ä.…ŠeÕ`jGrÿ Ó(¬+r » /4r ¤ 8Nr ™ hr ¥ 7‚r É 4œr ¢ 2¶r Ý 0Ðr ¹ 3êr ± 6r Œ 1r ¸ .Ó Âÿÿ0class ExcessiveShockCore expands ShockCore; €òC ]Cv= ØO“׳°‚M –OPXMPassword zëXëm¡³’O&cò]M`Z¢³’O&­`Ë*Ðcò]M`Zc Ô M  ¨<:„„š:.…ŠÖ% —È,-òq!T ;class ExcessiveSeekingRocket extends ut_SeekingRocket; 2class ExcessiveRocketPack extends RocketPack; €X€‘Ö _ Y.‚ð rŠ* êŠa/!d×׊ �ÃÕ6§¨#€?Ëw.…ŠÌ*Jadc×dÕ?,úâØ.…ŠÌ �dd(#@A@A@AÒJêwJ*8 Y î£&q!-Ì'ÅŠa/!Å‚‚‚‚Ša!}$rŠú.…ŠÌš:Šü:$�.¬Š-ܰ«Ã?,.…ŠÏ.…ŠD-å'HÛÚ-ë#Y ðn ò°1&‚wÑ*Ñ # a?( T class ExcessiveRocketLauncher expands UT_EightBall; function SetSwitchPriority(pawn Other) { local int i; local name temp, carried; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'UT_Eightball' ) { // set to the same priority as the UT_Eightball AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } simulated function PlayLoading(float rate, int num) { if( Owner == None ) return; Owner.PlayOwnedSound(CockingSound, SLOT_None, Pawn(Owner).SoundDampening); PlayAnim(LoadAnim[num],3.0, 0.05); } simulated function PlayRotating(int num) { Owner.PlayOwnedSound(Misc3Sound, SLOT_None, 0.1*Pawn(Owner).SoundDampening); PlayAnim(RotateAnim[num],3.0, 0.05); } simulated function PlayRFiring(int num) { if ( Owner.IsA('PlayerPawn') ) { PlayerPawn(Owner).shakeview(ShakeTime, ShakeMag*RocketsLoaded, ShakeVert); //shake player view PlayerPawn(Owner).ClientInstantFlash( -0.4, vect(650, 450, 190)); } if ( Affector != None ) Affector.FireEffect(); if ( bFireLoad ) PlayOwnedSound(class'RocketMk2'.Default.SpawnSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening); else PlayOwnedSound(AltFireSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening); if (!bInstantRocket) PlayAnim(FireAnim[num], 3.45, 0.05); } state NormalFire { function AnimEnd() { if ( bRotated ) { bRotated = false; PlayLoading(1.1, RocketsLoaded); } else { if ( bInstantRocket || (RocketsLoaded >= 6) ) { GotoState('FireRockets'); return; } RocketsLoaded++; AmmoType.UseAmmo(1); if (pawn(Owner).bAltFire!=0) bTightWad=True; NewTarget = CheckTarget(); if ( Pawn(NewTarget) != None ) Pawn(NewTarget).WarnTarget(Pawn(Owner), ProjectileSpeed, vector(Pawn(Owner).ViewRotation)); if ( LockedTarget != None ) { If ( NewTarget != LockedTarget ) { LockedTarget = None; Owner.PlaySound(Misc2Sound, SLOT_None, Pawn(Owner).SoundDampening); bLockedOn=False; } else if (LockedTarget != None) Owner.PlaySound(Misc1Sound, SLOT_None, Pawn(Owner).SoundDampening); } bPointing = true; Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening); RotateRocket(); } } } state ClientFiring { simulated function Tick(float DeltaTime) { if ( (Pawn(Owner).bFire == 0) || (Ammotype.AmmoAmount <= 0) ) FiringRockets(); } simulated function AnimEnd() { if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else if ( ( bRotated ) && ( ClientRocketsLoaded < 6 ) ) { PlayLoading(1.1, ClientRocketsLoaded); bRotated = false; ClientRocketsLoaded++; } else { if ( bInstantRocket || (ClientRocketsLoaded >= 6) ) { FiringRockets(); return; } Enable('Tick'); PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function BeginState() { bFireLoad = true; if ( bInstantRocket ) { Disable('AnimEnd'); ClientRocketsLoaded = 1; FiringRockets(); if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else { FiringRockets(); return; } } else { ClientRocketsLoaded = 1; PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function EndState() { ClientRocketsLoaded = 0; bClientDone = false; bRotated = false; } } state ClientAltFiring { simulated function Tick(float DeltaTime) { if ( (Pawn(Owner).bAltFire == 0) || (Ammotype.AmmoAmount <= 0) ) FiringRockets(); } simulated function AnimEnd() { if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else if ( ( bRotated ) && ( ClientRocketsLoaded < 6 ) ) { PlayLoading(1.1, ClientRocketsLoaded); bRotated = false; ClientRocketsLoaded++; } else { if ( bInstantRocket || (ClientRocketsLoaded >= 6) ) { FiringRockets(); return; } Enable('Tick'); PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function BeginState() { bFireLoad = false; if ( bInstantRocket ) { Disable('AnimEnd'); ClientRocketsLoaded = 1; FiringRockets(); if ( !bCanClientFire || (Pawn(Owner) == None) ) GotoState(''); else if ( bClientDone ) { PlayLoading(1.5,0); GotoState('ClientReload'); } else { FiringRockets(); return; } } else { ClientRocketsLoaded = 1; PlayRotating(ClientRocketsLoaded - 1); bRotated = true; } } simulated function EndState() { ClientRocketsLoaded = 0; bClientDone = false; bRotated = false; } } ////////////////////////////////////////////////////// state AltFiring { function Tick( float DeltaTime ) { if( (pawn(Owner).bAltFire==0) || (RocketsLoaded > 5) || bInstantRocket ) // If if Fire button down, load up another GoToState('FireRockets'); } function AnimEnd() { if ( bRotated && (RocketsLoaded <= 6) ) { bRotated = false; PlayLoading(1.1, RocketsLoaded); } else { if ( bInstantRocket || (RocketsLoaded >= 6) ) { GotoState('FireRockets'); return; } RocketsLoaded++; AmmoType.UseAmmo(1); if ( (PlayerPawn(Owner) == None) && ((FRand() > 0.5) || (Pawn(Owner).Enemy == None)) ) Pawn(Owner).bAltFire = 0; bPointing = true; Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening); RotateRocket(); } } function BeginState() { Super.BeginState(); RocketsLoaded = 1; bFireLoad = False; if (!bInstantRocket) RotateRocket(); } Begin: bLockedOn = False; } /////////////////////////////////////////////////////// state FireRockets { function Fire(float F) {} function AltFire(float F) {} function ForceFire() { bForceFire = true; } function ForceAltFire() { bForceAltFire = true; } function bool SplashJump() { return false; } function BeginState() { local vector FireLocation, StartLoc, X,Y,Z; local rotator FireRot, RandRot; local ExcessiveRocket r; local ExcessiveSeekingRocket s; local ExcessiveGrenade g; local float Angle, RocketRad; local pawn BestTarget, PawnOwner; local PlayerPawn PlayerOwner; local int DupRockets; local bool bMultiRockets; PawnOwner = Pawn(Owner); if ( PawnOwner == None ) return; PlayerOwner = PlayerPawn(Owner); Angle = 0; DupRockets = RocketsLoaded - 1; if (DupRockets < 0) DupRockets = 0; if ( PlayerOwner == None ) bTightWad = ( FRand() * 4 < PawnOwner.skill ); GetAxes(PawnOwner.ViewRotation,X,Y,Z); StartLoc = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; if ( bFireLoad ) AdjustedAim = PawnOwner.AdjustAim(ProjectileSpeed, StartLoc, AimError, True, bWarnTarget); else AdjustedAim = PawnOwner.AdjustToss(AltProjectileSpeed, StartLoc, AimError, True, bAltWarnTarget); if ( PlayerOwner != None ) AdjustedAim = PawnOwner.ViewRotation; PlayRFiring(RocketsLoaded-1); Owner.MakeNoise(PawnOwner.SoundDampening); if ( !bFireLoad ) { LockedTarget = None; bLockedOn = false; } else if ( LockedTarget != None ) { BestTarget = Pawn(CheckTarget()); if ( (LockedTarget!=None) && (LockedTarget != BestTarget) ) { LockedTarget = None; bLockedOn=False; } } else BestTarget = None; bPendingLock = false; bPointing = true; FireRot = AdjustedAim; RocketRad = 4; if (bTightWad || !bFireLoad) RocketRad=7; bMultiRockets = ( RocketsLoaded > 1 ); While ( RocketsLoaded > 0 ) { if ( bMultiRockets ) Firelocation = StartLoc - (Sin(Angle)*RocketRad - 7.5)*Y + (Cos(Angle)*RocketRad - 7)*Z - X * 4 * FRand(); else FireLocation = StartLoc; if (bFireLoad) { if ( Angle > 0 ) { if ( Angle < 3 && !bTightWad) FireRot.Yaw = AdjustedAim.Yaw - Angle * 600; else if ( Angle > 3.5 && !bTightWad) FireRot.Yaw = AdjustedAim.Yaw + (Angle - 3) * 600; else FireRot.Yaw = AdjustedAim.Yaw; } if ( LockedTarget != None ) { s = Spawn( class 'ExcessiveSeekingRocket',, '', FireLocation,FireRot); s.Seeking = LockedTarget; s.NumExtraRockets = DupRockets; if ( Angle > 0 ) s.Velocity *= (0.9 + 0.2 * FRand()); } else { r = Spawn( class'ExcessiveRocket',, '', FireLocation,FireRot); r.NumExtraRockets = DupRockets; if (RocketsLoaded>4 && bTightWad) r.bRing=True; if ( Angle > 0 ) r.Velocity *= (0.9 + 0.2 * FRand()); } } else { g = Spawn( class 'ExcessiveGrenade',, '', FireLocation,AdjustedAim); g.NumExtraGrenades = DupRockets; if ( DupRockets > 0 ) { RandRot.Pitch = FRand() * 1500 - 750; RandRot.Yaw = FRand() * 1500 - 750; RandRot.Roll = FRand() * 1500 - 750; g.Velocity = g.Velocity >> RandRot; } } Angle += 1.0484; //2*3.1415/6; RocketsLoaded--; } bTightWad=False; if (bInstantRocket) { Disable('AnimEnd'); bRotated = true; RocketsLoaded = 1; PlayLoading(1.5,0); } else bRotated = false; } function AnimEnd() { if ( !bRotated && (AmmoType.AmmoAmount > 0) ) { PlayLoading(1.5,0); RocketsLoaded = 1; bRotated = true; return; } LockedTarget = None; Finish(); } Begin: Sleep(0.18); Finish(); } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } ñP ùBår.…Š*q!ãJ˜£Í%a!r33s@ÍÌL=q!ãl‚�-ü �-Ìq!㢄-Ê›:.…ŠÖ%e-Ê(ãÊ›:.…ŠÞ%8 ãa!r33s@ÍÌL=q! ÔA \ qZSr£*2.…ŠQ£&-Ì'-å'&׊ �Ã~.¬Ša.…ŠŠb«@a®°a !Ú&DÊ'-ðå°e[Wa Ù !×&Ôe?,"&×××&Õ6¨eÕ6²¨[Õ6§¨Wa a !&°a d !Ø&W°a e !××&Õ?,[W°a ~ !Ø&[°a a !Ø×&Õ?,[W°?w~*?±~Ï?&a e !Ø×&[W° \q!; ïR ;(ïwÑ*aÍÌL>(&a?( -class ExcessiveRocket extends rocketmk2; Iclass ExcessiveRipper expands ripper; function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'Ripper' ) { // set to the same priority as the standard Ripper AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } function Projectile ProjectileFire(class ProjClass, float ProjSpeed, bool bWarn) { local Vector Start, X,Y,Z; local Rotator A1, A2; local Vector LStart, RStart, Spawnoffset; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; // Spawnoffset.X = FireOffset.X; Spawnoffset.Y = 85; Spawnoffset.Z = FireOffset.Z; RStart = Owner.Location + CalcDrawOffset() + Spawnoffset.X * X + Spawnoffset.Y * Y + Spawnoffset.Z * Z; Spawnoffset.Y = -85; LStart = Owner.Location + CalcDrawOffset() + Spawnoffset.X * X + Spawnoffset.Y * Y + Spawnoffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(ProjSpeed, Start, AimError, True, bWarn); if ( (Pawn(Owner).bFire != 0) && (Pawn(Owner).bAltFire == 0) ) { // A1 = pawn(owner).AdjustAim(ProjSpeed, RStart, AimError, True, bWarn); A2 = pawn(owner).AdjustAim(ProjSpeed, LStart, AimError, True, bWarn); A1.Roll -= 8192; A1.Yaw -= 4096; A2.Roll += 8192; A1.Yaw += 4096; Spawn(ProjClass,,, RStart,A1); Spawn(ProjClass,,, LStart,A2); } return Spawn(ProjClass,,, Start,AdjustedAim); } simulated function PlayFiring() { LoopAnim( 'Fire', 1.4 + 0.6 * FireAdjust, 0.05 ); PlayOwnedSound(class'Razor2'.Default.SpawnSound, SLOT_None,4.2); } simulated function PlayAltFiring() { LoopAnim('Fire', 2.7 + 0.3 * FireAdjust,0.05); PlayOwnedSound(class'Razor2Alt'.Default.SpawnSound, SLOT_None,4.2); } óaFFkZóF^Q%»–Q`V“ÙQa Ž"·�w"*xr"ÚV�""¾R±r"*·aV¥QX-_V“ÙExcessive.HitSound Ž"·6w"*r"ÚV6""¾ùXr"*·aV úT Ù#ú!wÑ*Ñq! Iclass ExcessiveBrowserIRCSetupClient expands UBrowserIRCSetupClient; /class ExcessiveRazorAlt expands Razor2Alt; B€iclass ExcessiveRazor expands Razor2; ///////////////////////////////////////////////////// auto state Flying { simulated function ProcessTouch (Actor Other, Vector HitLocation) { if ( bCanHitInstigator || (Other != Instigator) ) { if ( Role == ROLE_Authority ) { Other.TakeDamage(damage, instigator,HitLocation, (MomentumTransfer * Normal(Velocity)), 'shredded' ); } if ( Other.bIsPawn ) PlaySound(MiscSound, SLOT_Misc, 2.0); else PlaySound(ImpactSound, SLOT_Misc, 2.0); //destroy(); } } simulated function HitWall (vector HitNormal, actor Wall) { local vector Vel2D, Norm2D; bCanHitInstigator = true; PlaySound(ImpactSound, SLOT_Misc, 2.0); LoopAnim('Spin',1.0); if ( (Mover(Wall) != None) && Mover(Wall).bDamageTriggered ) { if ( Role == ROLE_Authority ) Wall.TakeDamage( Damage, instigator, Location, MomentumTransfer * Normal(Velocity), MyDamageType); Destroy(); return; } NumWallHits++; SetTimer(0, False); MakeNoise(0.3); if ( NumWallHits > 4 ) Destroy(); if ( NumWallHits == 1 ) { Spawn(class'WallCrack',,,Location, rotator(HitNormal)); Vel2D = Velocity; Vel2D.Z = 0; Norm2D = HitNormal; Norm2D.Z = 0; Norm2D = Normal(Norm2D); Vel2D = Normal(Vel2D); if ( (Vel2D Dot Norm2D) < -0.999 ) { HitNormal = Normal(HitNormal + 0.6 * Vel2D); Norm2D = HitNormal; Norm2D.Z = 0; Norm2D = Normal(Norm2D); if ( (Vel2D Dot Norm2D) < -0.999 ) { if ( Rand(1) == 0 ) HitNormal = HitNormal + vect(0.05,0,0); else HitNormal = HitNormal - vect(0.05,0,0); if ( Rand(1) == 0 ) HitNormal = HitNormal + vect(0,0.05,0); else HitNormal = HitNormal - vect(0,0.05,0); HitNormal = Normal(HitNormal); } } } Velocity -= 2 * (Velocity dot HitNormal) * HitNormal; SetRoll(Velocity); } } ÂW ]A3ea"‚rlV ÿW!6%D6Ål Ò-ê%Â]WlV p class ExcessiveBrowserIRCSystemPage expands UBrowserIRCSystemPage; function Created() { Super.Created(); Splitter = UWindowVSplitter(CreateWindow(class'UWindowVSplitter', 0, 0, WinWidth, WinHeight)); SetupClient = UBrowserIRCSetupClient(Splitter.CreateWindow(class'ExcessiveBrowserIRCSetupClient', 0, 0, WinWidth, WinHeight, Self)); TextArea.SetParent(Splitter); Splitter.TopClientWindow = SetupClient; Splitter.BottomClientWindow = TextArea; Splitter.SplitPos = 45; Splitter.MaxSplitPos = 45; Splitter.MinWinHeight = 0; Splitter.bSizable = True; Splitter.bBottomGrow = True; Setup(); } Öa <$’IÐÌ$«.…Š®€@a!]®ÍÌÌ?«ÍÌÌ>ÖÍÌL= Ø FÛ‰$-Ä-Ä(ÍÌŒ?ȇD„-ò ™È,q!T ¥È£&}›:.…ŠÖ%-Ó'ËLÐw.…Ë*.…Ë){.…ŠÛ9.…Š ¿Swä*"wËää*ŠaÏ$.…Š®-Ç(SSwä*Šaõ$.…Š®-å'Šb«š™?.…Š®c ×j -ëIÐË$«.…Š®€@a!r®33³?«š™™>ÖÍÌL= €æ] nGHÌú—f%QpnPasswordÜ‚›: Ô:$ ny™“׳fQËÜÜ‚{d{ëpëdÂzpQåoNEEDPWÜQËoWRONGPW÷�>UQæænUQo HFclass ExcessivePulseGun expands PulseGun; // import a new sound file //#exec AUDIO IMPORT FILE="Sounds\ExcessivePulseFire.WAV" NAME="ExcessivePulseFire" GROUP="ExcessivePulseGun" function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'PulseGun' ) { // set to the same priority as the standard PulseGun AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } simulated function PlayFiring() { FlashCount++; // comment this out when you replace the sound file AmbientSound = FireSound; SoundVolume = Pawn(Owner).SoundDampening*255; // LoopAnim( 'shootLOOP', 1 + 0.5 * FireAdjust, 0.0); bWarnTarget = (FRand() < 0.2); } // PlayFiring /////////////////////////////////////////////////////// state NormalFire { ignores AnimEnd; function Projectile ProjectileFire(class ProjClass, float ProjSpeed, bool bWarn) { local Vector Start, X,Y,Z; local Vector LStart, RStart, Spawnoffset; local Rotator A1, A2; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; Spawnoffset.X = FireOffset.X; Spawnoffset.Y = 135; Spawnoffset.Z = FireOffset.Z; RStart = Owner.Location + CalcDrawOffset() + Spawnoffset.X * X + Spawnoffset.Y * Y + Spawnoffset.Z * Z; Spawnoffset.Y = -135; LStart = Owner.Location + CalcDrawOffset() + Spawnoffset.X * X + Spawnoffset.Y * Y + Spawnoffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(ProjSpeed, Start, AimError, True, bWarn); // A1 = pawn(owner).AdjustAim(ProjSpeed, RStart, AimError, True, bWarn); A2 = pawn(owner).AdjustAim(ProjSpeed, LStart, AimError, True, bWarn); // RStart = RStart - Sin(Angle)*Y*4 + (Cos(Angle)*4 - 10.78)*Z; LStart = LStart - Sin(Angle)*Y*4 + (Cos(Angle)*4 - 10.78)*Z; Start = Start - Sin(Angle)*Y*4 + (Cos(Angle)*4 - 10.78)*Z; Angle += 1.8; // uncomment this with new sound file name //PlayOwnedSound(Sound'Excessive.ExcessivePulseGun.ExcessivePulseFire', SLOT_None, 2.0*Pawn(Owner).SoundDampening); Spawn(ProjClass,,, RStart,A1); Spawn(ProjClass,,, LStart,A2); return Spawn(ProjClass,,, Start,AdjustedAim); } function Tick( float DeltaTime ) { if (Owner==None) GotoState('Pickup'); } function BeginState() { Super.BeginState(); Angle = 0; AmbientGlow = 200; } function EndState() { PlaySpinDown(); AmbientSound = None; AmbientGlow = 0; OldFlashCount = FlashCount; Super.EndState(); } Begin: Sleep(0.13); Finish(); } function AltFire( float Value ) { if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if (AmmoType.UseAmmo(1)) { GotoState('AltFiring'); bCanClientFire = true; bPointing=True; ClientAltFire(value); if ( PlasmaBeam == None ) { PlasmaBeam = PBolt(ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget)); if ( FireOffset.Y == 0 ) PlasmaBeam.bCenter = true; else if ( Mesh == mesh'PulseGunR' ) PlasmaBeam.bRight = false; } } } state AltFiring { ignores AnimEnd; function Tick(float DeltaTime) { local Pawn P; P = Pawn(Owner); if ( P == None ) { GotoState('Pickup'); return; } if ( (P.bAltFire == 0) || (P.IsA('Bot') && ((P.Enemy == None) || (Level.TimeSeconds - Bot(P).LastSeenTime > 5))) ) { P.bAltFire = 0; Finish(); return; } Count += Deltatime; if ( Count > 0.24 ) { if ( Owner.IsA('PlayerPawn') ) PlayerPawn(Owner).ClientInstantFlash( InstFlash,InstFog); if ( Affector != None ) Affector.FireEffect(); Count -= 0.24; if ( !AmmoType.UseAmmo(3) ) Finish(); } } function EndState() { AmbientGlow = 0; AmbientSound = None; if ( PlasmaBeam != None ) { PlasmaBeam.Destroy(); PlasmaBeam = None; } Super.EndState(); } Begin: AmbientGlow = 200; FinishAnim(); LoopAnim( 'boltloop'); } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } €‰|class ExcessivePowerups expands Mutator; function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { // remove regular health if ( Other.IsA('MedBox') || Other.IsA('HealthVial') ) return false; // replace big keg with better one if ( Other.IsA('HealthPack') && !Other.IsA('ExcessiveHealthPack') ) { ReplaceWith(Other, "Excessive.ExcessiveHealthPack"); return false; } // put it here just because if ( Other.IsA('ZoneInfo') ) ZoneInfo(Other).ZoneGravity.Z = ZoneInfo(Other).ZoneGravity.Z*0.968000; return true; } “f D pÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ g wàn:“ÕƒC,„œÔ�X„œÔ�X„œÔ�X„œÔ�X„œÔ�X´¹ ´¹ †6class ExcessivePlasmaSphere expands PlasmaSphere; Óc TCw? ØS“׳°‚Y –SfQYPassword zëQëd¡³’S&{ÓTYrS¢³’S&­rË*Ð{ÓTYrS{ üo e "¿ æ} KGGÔú—j%MbKPasswordÜ‚›: Ô:$ Ky™“׳jMËÜÜ‚{G{ëbëGÂzbMåwNEEDPWÜMËwWRONGPW÷�>~MææK~Mw sCclass ExcessivePBolt expands PBolt; var float ExplodeTime; simulated function Destroyed() { Super.Destroyed(); if ( PlasmaBeam != None ) PlasmaBeam.Destroy(); if ( WallEffect != None ) WallEffect.Destroy(); } simulated function CheckBeam(vector X, float DeltaTime) { local actor HitActor; local vector HitLocation, HitNormal; // check to see if hits something, else spawn or orient child HitActor = Trace(HitLocation, HitNormal, Location + BeamSize * X, Location, true); if ( (HitActor != None) && (HitActor != Instigator) && (HitActor.bProjTarget || (HitActor == Level) || (HitActor.bBlockActors && HitActor.bBlockPlayers)) && ((Pawn(HitActor) == None) || Pawn(HitActor).AdjustHitLocation(HitLocation, Velocity)) ) { ExplodeTime += DeltaTime; if (ExplodeTime > 0.08) { Explode(HitLocation, HitNormal); ExplodeTime = 0; } if ( Level.Netmode != NM_Client ) { if ( DamagedActor == None ) { AccumulatedDamage = FMin(0.5 * (Level.TimeSeconds - LastHitTime), 0.1); HitActor.TakeDamage(damage * AccumulatedDamage, instigator,HitLocation, (MomentumTransfer * X * AccumulatedDamage), MyDamageType); AccumulatedDamage = 0; } else if ( DamagedActor != HitActor ) { DamagedActor.TakeDamage(damage * AccumulatedDamage, instigator,HitLocation, (MomentumTransfer * X * AccumulatedDamage), MyDamageType); AccumulatedDamage = 0; } LastHitTime = Level.TimeSeconds; DamagedActor = HitActor; AccumulatedDamage += DeltaTime; if ( AccumulatedDamage > 0.22 ) { if ( DamagedActor.IsA('Carcass') && (FRand() < 0.09) ) AccumulatedDamage = 35/damage; DamagedActor.TakeDamage(damage * AccumulatedDamage, instigator,HitLocation, (MomentumTransfer * X * AccumulatedDamage), MyDamageType); AccumulatedDamage = 0; } } if ( HitActor.bIsPawn && Pawn(HitActor).bIsPlayer ) { if ( WallEffect != None ) WallEffect.Destroy(); } else if ( (WallEffect == None) || WallEffect.bDeleteMe ) WallEffect = Spawn(class'PlasmaHit',,, HitLocation - 5 * X); else if ( !WallEffect.IsA('PlasmaHit') ) { WallEffect.Destroy(); WallEffect = Spawn(class'PlasmaHit',,, HitLocation - 5 * X); } else WallEffect.SetLocation(HitLocation - 5 * X); if ( (WallEffect != None) && (Level.NetMode != NM_DedicatedServer) ) Spawn(ExplosionDecal,,,HitLocation,rotator(HitNormal)); if ( PlasmaBeam != None ) { AccumulatedDamage += PlasmaBeam.AccumulatedDamage; PlasmaBeam.Destroy(); PlasmaBeam = None; } return; } else if ( (Level.Netmode != NM_Client) && (DamagedActor != None) ) { DamagedActor.TakeDamage(damage * AccumulatedDamage, instigator, DamagedActor.Location - X * 1.2 * DamagedActor.CollisionRadius, (MomentumTransfer * X * AccumulatedDamage), MyDamageType); AccumulatedDamage = 0; DamagedActor = None; } if ( Position >= 9 ) { if ( (WallEffect == None) || WallEffect.bDeleteMe ) WallEffect = Spawn(class'PlasmaCap',,, Location + (BeamSize - 4) * X); else if ( WallEffect.IsA('PlasmaHit') ) { WallEffect.Destroy(); WallEffect = Spawn(class'PlasmaCap',,, Location + (BeamSize - 4) * X); } else WallEffect.SetLocation(Location + (BeamSize - 4) * X); } else { if ( WallEffect != None ) { WallEffect.Destroy(); WallEffect = None; } if ( PlasmaBeam == None ) { PlasmaBeam = Spawn(class'ExcessivePBolt',,, Location + BeamSize * X); PlasmaBeam.Position = Position + 1; } else PlasmaBeam.UpdateBeam(self, X, DeltaTime); } } simulated function UpdateBeam(PBolt ParentBolt, vector Dir, float DeltaTime) { local actor HitActor; local vector HitLocation, HitNormal; SpriteFrame = ParentBolt.SpriteFrame; Skin = SpriteAnim[SpriteFrame]; SetLocation(ParentBolt.Location + BeamSize * Dir); SetRotation(ParentBolt.Rotation); CheckBeam(Dir, DeltaTime); } function BlowUp(vector HitLocation) { HurtRadius(80,100.0, MyDamageType, 60000, HitLocation ); MakeNoise(1.0); } simulated function Explode(vector HitLocation, vector HitNormal) { local UT_SpriteBallExplosion s; s = spawn(class'UT_SpriteBallExplosion',,,HitLocation + HitNormal*16); BlowUp(HitLocation); } Õ J aî2‚-Ä ˜È,-Ä(ÍÌŒ?ÈìR„-ò ™È,q!T ¥È£&¸‚r.‘Š*%„±Ã?r.…ŠÌ*.…ŠÖ$-å'Šb«š™?.…Š®c Q€‘ýRn`^w.‘R*x%^–x,Tþx.‘RÈó!cì=x ¥x (class ExcessivePAmmo expands PAmmo; Jclass ExcessiveCow expands TCow; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } Q2class ExcessiveMinigun expands minigun2; function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'Minigun2' ) { // set to the same priority as the standard Minigun AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } function TraceFire( float Accuracy ) { local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z, AimDir; local actor Other; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); StartTrace = Owner.Location + CalcDrawOffset() + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustAim(1000000, StartTrace, 2.75*AimError, False, False); EndTrace = StartTrace + Accuracy * (FRand() - 0.5 )* Y * 1000 + Accuracy * (FRand() - 0.5 ) * Z * 1000; AimDir = vector(AdjustedAim); EndTrace += (10000 * AimDir); Other = Pawn(Owner).TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); Count++; if ( Count == 4 ) { Count = 0; if ( VSize(HitLocation - StartTrace) > 250 ) Spawn(class'MTracer',,, StartTrace + 96 * AimDir,rotator(EndTrace - StartTrace)); } ProcessTraceHit(Other, HitLocation, HitNormal, vector(AdjustedAim),Y,Z); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local int rndDam; local Actor a; if (Other == Level) Spawn(class'UT_LightWallHitEffect',,, HitLocation+HitNormal, Rotator(HitNormal)); else if ( (Other!=self) && (Other!=Owner) && (Other != None) ) { if ( Other.IsA('Bot') && (FRand() < 0.2) ) Pawn(Other).WarnTarget(Pawn(Owner), 500, X); rndDam = 12 + Rand(13); if ( FRand() < 0.2 ) X *= 2.5; Other.TakeDamage(rndDam, Pawn(Owner), HitLocation, rndDam*500.0*X, MyDamageType); } a = spawn(class'UT_SpriteBallExplosion',,,HitLocation+HitNormal*9); a.DrawScale = a.DrawScale/3; HurtRadius(60,60.0, MyDamageType, 60000, HitLocation+HitNormal*9); } function AltFire( float Value ) { Enable('Tick'); if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(1) ) { bPointing=True; bCanClientFire = true; ShotAccuracy = 2.5; SoundVolume = 255*Pawn(Owner).SoundDampening; ClientAltFire(value); GoToState('AltFiring'); } else GoToState('Idle'); } simulated function PlayAltFiring() { if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag*2, ShakeVert); PlayAnim('Shoot1',1 + 0.3 * FireAdjust, 0.05); AmbientGlow = 250; AmbientSound = FireSound; bSteadyFlash3rd = true; } state AltFiring { Begin: Sleep(0.13); GenerateBullet(); if ( AnimSequence == 'Shoot2' ) Goto('FastShoot'); Goto('Begin'); FastShoot: Sleep(0.04); GenerateBullet(); Goto('FastShoot'); } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } .class ExcessiveMiniammo extends Miniammo; P€@üUOQ )èU$\Oa/!O\‚Oa/UÊ�Oa/|Ê(ä‚‚Oa/!C wU ¤ wU »ä‚Oa/UËÊ&�Oa/|ËÊ(' s-class ExcessiveLastManStanding expands LastManStanding; var string Mutators[13]; var int NumMutators; var globalconfig bool bUseHitSound; var globalconfig string ReservedPassword; var globalconfig int NumReservedSpots; event InitGame( string Options, out string Error ) { local Mutator M; local class MutatorClass; local int i; Super.InitGame(Options, Error); // add all the mutators for (i = 0; i < NumMutators; i++) { MutatorClass = class(DynamicLoadObject(Default.Mutators[i], class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } if (bUseHitSound) { MutatorClass = class(DynamicLoadObject("Excessive.HitSound", class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } } function int ReduceDamage( int Damage, name DamageType, pawn injured, pawn instigatedBy ) { if ( (injured == instigatedBy) && (DamageType != 'SpecialDamage') ) return 0; if( injured.Region.Zone.bNeutralZone ) return 0; return Super.ReduceDamage( Damage, DamageType, injured, instigatedBy ); } event PreLogin ( string Options, string Address, out string Error, out string FailCode ) { local string InPassword; if (NumReservedSpots > 0) { Error=""; InPassword = ParseOption( Options, "Password" ); if( (Level.NetMode != NM_Standalone) && AtCapacity(Options) ) { if ( (NumPlayers - MaxPlayers) >= NumReservedSpots) Error=MaxedOutMessage; else if ( ReservedPassword !="" && (caps(InPassword) != caps(ReservedPassword))) { if( InPassword == "" ) { Error = NeedPassword; FailCode = "NEEDPW"; } else { Error = MaxedOutMessage; FailCode = "WRONGPW"; } } } if(!CheckIPPolicy(Address)) Error = IPBanned; } else Super.PreLogin(Options, Address, Error, FailCode); } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local string InPassword; local int NumReservedPlayers; local playerpawn NewPlayer; NumReservedPlayers = NumPlayers - MaxPlayers; if ( (AtCapacity(Options)) && (NumReservedPlayers < NumReservedSpots) ) { InPassword = ParseOption( Options, "Password" ); if ( caps(InPassword) == caps(ReservedPassword) ) { MaxPlayers += NumReservedPlayers + 1; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); MaxPlayers -= NumReservedPlayers + 1; } else { Error = MaxedOutMessage; return None; } } else NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); return NewPlayer; } N€‘€ôJ Z/Æõ@r£*ÀP.…Š2rP*ÃôZ ×w I vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6 { ù?P×EJù;•’ÔûR…àÀñ´¹ “ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,†]Excessive.ExcessiveTimeÝExcessive.ExcessivePowerupsÝExcessive.EnforcerUpgradeÝExcessive.HammerUpgradeÝExcessive.BioUpgradeÝExcessive.ShockRifleUpgradeÝExcessive.PulseUpgradeÝExcessive.RipperUpgradeÝExcessive.MinigunUpgradeÝ Excessive.FlakUpgradeÝ Excessive.RocketUpgradeÝ Excessive.SniperUpgradeÝ Excessive.TranslocatorUpgradeB" 9Ó=]Excessive Last Man StandingM-g3¹ w- UL* aLžw*ò n--ø' - u-Þ$à-a/!Or.‘-Ôðq!0-Ïq!5-ü*-Ïž‚�a/!z�a/!d 2-£Í£Î ~class ExcessiveInvisibility expands UT_invisibility; function GiveTo( pawn Other ) { Instigator = Other; BecomeItem(); Other.AddInventory( Self ); GotoState('Activated'); } ÷H °Á5Þ$ð*-wØ*ØaØ*÷ Ã} F xÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2 ‹eàÃqýå;…àÀñ†MK8 ‚éMK@ ìÈw@*±„@a/!@a/!_K@бwK*šw.K*.KX±KKÐh@@ïçw¾*¾ 8K ëm +~(ëÈ&-Î(&�-òc j class ExcessiveHealthPack expands HealthPack; var int HealMax; auto state Pickup { function Touch( actor Other ) { local Pawn P; if ( ValidTouch(Other) ) { P = Pawn(Other); if (bSuperHeal) HealMax = Min(399, HealMax * 1.333333); if (P.Health < HealMax) { if (Level.Game.LocalLog != None) Level.Game.LocalLog.LogPickup(Self, P); if (Level.Game.WorldLog != None) Level.Game.WorldLog.LogPickup(Self, P); P.Health += HealingAmount; if (P.Health > HealMax) P.Health = HealMax; PlayPickupMessage(P); PlaySound (PickupSound,,2.5); Other.MakeNoise(0.2); SetRespawn(); } } } } ÉB B Bÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿ2C j@ƒÉ(óø…àÀñ•’ÔûR�!íìÛ•’ÔûR�!íìÛÃ& �•’ÔûR�!íìÛ•’ÔûR�!íìÛÃ& �…àÀñ…àÀñ…àÀñ„œÔ�X†g",ü=Q“Ô,„=a/!Y=a/!I(„‚=a/!W�=a/!B]=Excessive.ExcessiveHealthPack(Ð=a/!z6§.´= ê«6§.´= êÙÎw?' class ExcessiveHammerShockWave expands ShockWave; var name MyDamageType; simulated function Timer() { local actor Victims; local float damageScale, dist, MoScale; local vector dir; ShockSize = 13 * (Default.LifeSpan - LifeSpan) + 3.5/(LifeSpan/Default.LifeSpan+0.05); if ( Level.NetMode != NM_DedicatedServer ) { if (ICount==4) spawn(class'WarExplosion2',,,Location); ICount++; if ( Level.NetMode == NM_Client ) { foreach VisibleCollidingActors( class 'Actor', Victims, ShockSize*29, Location ) if ( Victims.Role == ROLE_Authority ) { dir = Victims.Location - Location; dist = FMax(1,VSize(dir)); dir = dir/dist +vect(0,0,0.3); if ( (dist> OldShockDistance) || (dir dot Victims.Velocity <= 0)) { MoScale = FMax(0, 1100 - 1.1 * Dist); Victims.Velocity = Victims.Velocity + dir * (MoScale + 20); Victims.TakeDamage ( MoScale, Instigator, Victims.Location - 0.5 * (Victims.CollisionHeight + Victims.CollisionRadius) * dir, (1000 * dir), MyDamageType ); } } return; } } foreach VisibleCollidingActors( class 'Actor', Victims, ShockSize*29, Location ) { dir = Victims.Location - Location; dist = FMax(1,VSize(dir)); dir = dir/dist + vect(0,0,0.3); if (dist> OldShockDistance || (dir dot Victims.Velocity < 0)) { MoScale = FMax(0, 1100 - 1.1 * Dist); if ( Victims.bIsPawn ) Pawn(Victims).AddVelocity(dir * (MoScale + 20)); else Victims.Velocity = Victims.Velocity + dir * (MoScale + 20); Victims.TakeDamage ( MoScale, Instigator, Victims.Location - 0.5 * (Victims.CollisionHeight + Victims.CollisionRadius) * dir, (1000 * dir), MyDamageType ); } } OldShockDistance = ShockSize*29; } G €€å_“ <B.…Š$rB*q!Z «„š:BÖ%U‚Ba/!?„rBÌ*)±¯ Ú.¬Bè?,BÖ$ ¸ý_:±ý�Âu>øŠa/!O.‘ŠMÃüwõ*õJ¹ý�Âu>:�£, ùoX V­% ÿÿÿÿÿÿÿÿÿÿßU ~ º^(Þ$Èaa!N ÿÿÿÿÿþÿÿÿÿõIL 4 ¥ -I -I'aš™?' …æK 'uaå'  ÿ' {º 3 Ô' yº I À' {º _ Ì' º u È' Eº ‹ ñ' Sº ¡ Ð' Yº · Í' Vº ÿÿãw¾*¾u'RQ [Kclass ExcessiveHammer expands ImpactHammer; var int MomentumTransfer; function SetSwitchPriority(pawn Other) { local int i; local name temp, carried; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'ImpactHammer' ) { // set to the same priority as the ImpactHammer AutoSwitchPriority = i; return; } // couldn't find it so set to 0 AutoSwitchPriority = 0; } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } simulated function bool ClientFire( float Value ) { if ( bCanClientFire ) { if ( Affector != None ) Affector.FireEffect(); Owner.PlayOwnedSound(Misc1Sound, SLOT_Misc, 1.3*Pawn(Owner).SoundDampening); PlayAnim('Pull', 0.13, 0.05); Owner.MakeNoise(1.0); if ( Role < ROLE_Authority ) GotoState('ClientFiring'); return true; } return false; } function Fire( float Value ) { bPointing=True; bCanClientFire = true; ClientFire(Value); GoToState('Firing'); } state Firing { function AltFire(float F) { } simulated function Tick( float DeltaTime ) { local Pawn P; if ( bChangeWeapon ) GotoState('DownWeapon'); if ( Bot(Owner) != None ) { if ( Bot(Owner).Enemy == None ) Bot(Owner).bFire = 0; else Bot(Owner).bFire = 1; } P = Pawn(Owner); if ( P == None ) { AmbientSound = None; GotoState(''); return; } else if( P.bFire==0 ) { PlayIdleAnim(); GoToState('Idle'); return; } ChargeSize += 0.22 * DeltaTime; Count += DeltaTime; if ( Count > 0.2 ) { Count = 0; Owner.MakeNoise(1.0); } if (ChargeSize > 1) { HurtRadius(1000,220.0, MyDamageType, MomentumTransfer, Owner.Location ); Pawn(Owner).Health = -1000; Pawn(Owner).Died(None, 'Fell', Owner.Location); spawn(class'ExcessiveHammerShockWave',,,Location); spawn(class'NuclearMark',,,,rot(16384,0,0)); Destroy(); GoToState(''); } } function BeginState() { ChargeSize = 0.0; Count = 0.0; } function EndState() { Super.EndState(); AmbientSound = None; } Begin: FinishAnim(); AmbientSound = TensionSound; SoundVolume = 255*Pawn(Owner).SoundDampening; LoopAnim('Shake', 0.9); } state ClientFiring { simulated function Tick( float DeltaTime ) { local Pawn P; P = Pawn(Owner); if ( P == None ) { AmbientSound = None; GotoState(''); return; } else if( P.bFire==0 ) { PlayIdleAnim(); GoToState('Idle'); return; } } simulated function AnimEnd() { AmbientSound = TensionSound; SoundVolume = 255*Pawn(Owner).SoundDampening; LoopAnim('Shake', 0.9); Disable('AnimEnd'); } } state Idle { function AnimEnd() { PlayIdleAnim(); } function bool PutDown() { GotoState('DownWeapon'); return True; } simulated function Tick( float DeltaTime ) { if ( bChangeWeapon ) PutDown(); ChargeSize -= 0.22 * DeltaTime; if (ChargeSize < 0) ChargeSize = 0; } function BeginState() { ChargeSize = 0.0; Count = 0.0; } Begin: bPointing=False; if ( (AmmoType != None) && (AmmoType.AmmoAmount<=0) ) Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo if ( Pawn(Owner).bFire!=0 ) Fire(0.0); if ( Pawn(Owner).bAltFire!=0 ) AltFire(0.0); Disable('AnimEnd'); PlayIdleAnim(); } state AltFiring { function Tick( float DeltaTime ) { ChargeSize -= 0.75 * DeltaTime; if (ChargeSize < 0) ChargeSize = 0; } function Fire(float F) { } function AltFire(float F) { } function ForceFire() { bForceFire = true; } function ForceAltFire() { bForceAltFire = true; } function AnimEnd() { Finish(); } Begin: Sleep(0.0); } State DownWeapon { ignores Fire, AltFire, AnimEnd; function BeginState() { Super.BeginState(); ChargeSize = 0; } } function ProcessAltTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local vector realLoc; local float scale; if ( (Other == None) || (Other == Owner) || (Other == self) || (Owner == None) ) return; realLoc = Owner.Location + CalcDrawOffset(); scale = VSize(realLoc - HitLocation)/180; if ( (Other == Level) || Other.IsA('Mover') ) { Owner.TakeDamage(200.0 * scale, Pawn(Owner), HitLocation, -40000.0 * X * scale, MyDamageType); } else { Other.TakeDamage(5000 * scale, Pawn(Owner), HitLocation, 30000.0 * X * scale, MyDamageType); if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9); } } Pclass ExcessiveSkaarj expands TSkaarj; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } ð#ðöù M yxG‡˜2„wy U é*˜yë% va éy y �–wv*vòv nyvx e class ExcessiveGrenade expands ut_grenade; simulated function PostBeginPlay() { local vector X,Y,Z; local rotator RandRot; Super.PostBeginPlay(); if ( Level.NetMode != NM_DedicatedServer ) PlayAnim('WingIn'); SetTimer(1.5+FRand()*0.5,false); //Grenade begins unarmed if ( Role == ROLE_Authority ) { GetAxes(Instigator.ViewRotation,X,Y,Z); Velocity = X * (Instigator.Velocity Dot X)*0.4 + Vector(Rotation) * (Speed + FRand() * 100); Velocity.z += 210; MaxSpeed = 1000; RandSpin(50000); bCanHitOwner = False; if (Instigator.HeadRegion.Zone.bWaterZone) { bHitWater = True; Disable('Tick'); Velocity=0.6*Velocity; } } } simulated function HitWall( vector HitNormal, actor Wall ) { Explosion(Location); } class ExcessiveFlakSlug expands flakslug; function Explode(vector HitLocation, vector HitNormal) { local vector start; local int i, j; HurtRadius(damage, 150, 'FlakDeath', MomentumTransfer, HitLocation); start = Location + 10 * HitNormal; Spawn( class'ut_FlameExplosion',,,Start); j = 4 + Rand(4); for (i = 0; i < j; i++) Spawn( class 'ExcessiveExplodingChunk',, '', Start, Rotator(VRand())); Destroy(); } éQ F8Z×5Fë,3w¾*¾ 8F â\Vu< Ãr£*2.…ŠÁ£&q!-Ì'-å'#VÁrØ*Ø.’HÛÚ-ë¡´6²¨?%Ø-Æ'ÁÁrú àØ-û( ì T iÅz–XH¥X©©šXH\ j **  ì¢w *‹„ a/! a/!_x   ïKX%  ìxw *a„ a/! a/!_a— ë% Ðw*‚‚w.œ*š: Þ%š: Ö%–.œÍ.œÎ¡.œÍ.œÍ—.œÍ.œÎ.œÍ.œÎÐa– ë, ëDô–C?’ ë,  ï½ ôZ P ;'P(‹ùaÍÌL> ÿÿÿÿÿþÿÿÿÿxHclass ExcessiveFlakCannon expands UT_FlakCannon; function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'UT_FlakCannon' ) { // set to the same priority as the standard Flak Cannon AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } state NormalFire { ignores AnimEnd; function EndState() { Super.EndState(); OldFlashCount = FlashCount; } Begin: FlashCount++; Sleep(0.20); Finish(); } function AltFire( float Value ) { local Vector Start, X,Y,Z; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if (AmmoType.UseAmmo(1)) { bPointing=True; bCanClientFire = true; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset(); Spawn(class'WeaponLight',,'',Start+X*20,rot(0,0,0)); Start = Start + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustToss(AltProjectileSpeed, Start, AimError, True, bAltWarnTarget); Spawn(class'ExcessiveFlakSlug',,, Start,AdjustedAim); ClientAltFire(Value); GoToState('AltFiring'); } } state AltFiring { ignores AnimEnd; function EndState() { Super.EndState(); OldFlashCount = FlashCount; } Begin: FlashCount++; Sleep(0.27); Finish(); } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } // Fire chunks function Fire( float Value ) { local Vector Start, X,Y,Z; local Bot B; local Pawn P; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if (AmmoType.UseAmmo(1)) { bCanClientFire = true; bPointing=True; Start = Owner.Location + CalcDrawOffset(); B = Bot(Owner); P = Pawn(Owner); Owner.MakeNoise(2.0 * P.SoundDampening); AdjustedAim = P.AdjustAim(AltProjectileSpeed, Start, AimError, True, bWarnTarget); GetAxes(AdjustedAim,X,Y,Z); Spawn(class'WeaponLight',,'',Start+X*20,rot(0,0,0)); Start = Start + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; Spawn( class 'ExcessiveChunk1',, '', Start, AdjustedAim); Spawn( class 'ExcessiveChunk2',, '', Start - Z, AdjustedAim); Spawn( class 'ExcessiveChunk3',, '', Start + 2 * Y + Z, AdjustedAim); Spawn( class 'ExcessiveChunk4',, '', Start - Y, AdjustedAim); Spawn( class 'ExcessiveChunk1',, '', Start + 2 * Y - Z, AdjustedAim); // lower skill bots fire less flak chunks if ( B != None ) if ( B.Skill > 1 ) Spawn( class 'ExcessiveChunk3',, '', Start + Y - Z, AdjustedAim); ClientFire(Value); GoToState('NormalFire'); } } state ClientFiring { simulated function bool ClientFire(float Value) { return false; } simulated function bool ClientAltFire(float Value) { return false; } simulated function AnimEnd() { if ( (Pawn(Owner) == None) || ((AmmoType != None) && (AmmoType.AmmoAmount <= 0)) ) { PlayIdleAnim(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else if ( Pawn(Owner).bAltFire != 0 ) Global.ClientAltFire(0); else { PlayIdleAnim(); GotoState(''); } } simulated function EndState() { AmbientSound = None; } } state ClientAltFiring { simulated function bool ClientFire(float Value) { return false; } simulated function bool ClientAltFire(float Value) { return false; } simulated function AnimEnd() { if ( (Pawn(Owner) == None) || ((AmmoType != None) && (AmmoType.AmmoAmount <= 0)) ) { PlayIdleAnim(); GotoState(''); } else if ( !bCanClientFire ) GotoState(''); else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else if ( Pawn(Owner).bAltFire != 0 ) Global.ClientAltFire(0); else { PlayIdleAnim(); GotoState(''); } } simulated function EndState() { AmbientSound = None; } } simulated function PlayFiring() { PlayAnim( 'Loading', 3.4, 0.05); PlayOwnedSound(FireSound, SLOT_Misc,Pawn(Owner).SoundDampening*4.0); bMuzzleFlash++; } simulated function PlayAltFiring() { PlayOwnedSound(AltFireSound, SLOT_Misc,Pawn(Owner).SoundDampening*4.0); PlayAnim('Loading', 2.4, 0.05); bMuzzleFlash++; } €‰üc Y "Ç A³L0RIFF WAVEfmt "V"Vdataà €€€€€€€€‚����€€€~}zzxwwvttttvvwx__b€‚…‡‹‘“˜›�Ÿ¢£¥¦§§©ª©©ª­°³´¶¶·¹¹¹¹¹¹¹¹¹¹¶¶±¬©Ž‰‡…„�€}zz’’’‘‘§§§¥¢¢¢  Ÿ���›™–}zvZYXXVVXXYYYZZYqpnpqqswz}˜›œ £¥¦¦¦§¦¥ŒŒ‹‹qpXPL]]ZZZ\\\\tx‘‘‘ŽŒ‰…„€{v\XSPO5210027RYvx}€��€iX54578>D`g’¢¦©ª´¾¥ ‡„���…Œ“±·ÑÑȺ·­œ™–•’’‘�Œ‰‚cB>E?:54475;FIS^y•œœœœ—�€YPLXgn{‡Œˆ‡„„‰ž§·¶²°µ±“ˆƒzrklsskVDBDGJZkt}€tppomox‚‹‘¢²·ÇÍÈÍȸ®¨¡”ƒm_G*!'1DT]elrwwtqqrw}‰ž­·¿ÆÆÃÂÂÈÈÅ¿µ«Ÿ�]D42,&#-CQV[cjnkZKUhv��œ¨®®¬¨¢¤¨ ™——§®³©£�–�|xj_J3'&)0=S|‹˜›–�ˆ{VLJMVcy�ž»ÌÍϽ·²º·°¦�‘|j`ZWSSZfmlVRKE?9658>HZn|‰–¡©®¾ÐØÚÜÚ×ÕϾ« ˜—‹{j\G0% #)-.))6CLSZdlry~ˆ‘±¼ÁÆÍÕåïòèÞÓî–‰xmS@-)#,FRY[\]\S=;;CYrŠ¡»ÙìïìÛ̼±«¦š�›¡—Œ…{tg^^ZQ<63125CQYcmw€€nihlwŠŸ®»Ó××ÒÅ·ªœ ¡¤�—’‚ne`_[XTMLOH=61036:AKXv…�—¡®ÁÍÕÚÝÙÓȼ¸´³¤›‘�‰}oc\@1& "3EUgy’¤°ººÅÄÈÍÓÏÖØßÙζ¨—„vtlbJ=2'&+3?=:567:BP]fouƒ‰�™£©µ¾ÊÍÎÌÆÀ¸¯¬³´°£œ“ƒoZH5 &$*/7BWft‚™¦°··µµ°·ÂËÏÓÛÚÐÆº­œ†te\UG;1)"'.8BU_ecbeo|Œ�«»ËרÕÎŶ¨œ™™——™š�ˆ€wneYLF?5-,.4@N^kw����Ž‹ƒ…‡‘𢩝³¶²®±°¯¦¡ž˜Žƒyn_URRQNHHJILNKLR]djosx~�‹˜¤¯ºÅÉËȼ´¨ žŸŸ—“‹ƒxgVF5("%),.2:FS]jt‹“š¡¥ª¨ª°¹ÃÉÍÒÓÍÅ·¨—„q`WNF?;96569@ENU[`fiioy†“ž«¸ÅÌÍÌËõ§œ•�‹†‚ysplibYSMHD?=>HU_ir{ƒ‰ŒŽ�ŽŒŒ�”™ž¤¨©§§¥£ ›—”�Š�wofa_``[UTW[^][WUWZ^diou|ˆ’œ¦¯·»½»·¯¥œ”‘’‘‘‘��ˆ~sgUF8/,,05ü�ûŸø ôøñEòÉôçö�öô+ò×òLõ²öCõsò—ñ$ô¦÷øjôÖðáòdûf´ù*ëeä~ë8ûJÐ�û�ï£ëðÍõSö¢ñ8í�íˆñ-ôtòvîÄìïéñªð°ê%唿–ð®ý0Ø—õÏç0àâKëàõ�ûùÞïå9ÞÝUÞ2Ýi׸ÏâÊ|ÊñÊUÇ#¿�·¶o¹¸¹ó¯*Ÿ9”Õš7±ïÆãÉx¶É›o�B›ÍµÅË^ÑËõÆÎåÜéè€ìNìñ�ýR /Vŧ(Ÿ4x4!(CãJ*~@äO°P�EŒ7 /�.n39&<`;Ä7”3Ù0Ö/Ã.˜+d&›!oû»¾13þônk³ìÚÕÝ×ô, Š;þvãDÓ*Õkà\æ»à1Ö¾ÑçÖÃÞcàÁÚ�Õ–ØOâl鯿ñÝðÚ‘æÃü¼d¹þ êá†é‘ü> “{O9xþͪaâ)d¿‚  e�ÿåûì‰2,Š39'ÚtÿV6r1~ED—7‹#ÑBd&)>JAË)ÛóY$T'é!ÅØþ%*—& ,p&í./Õ%Pµ!L4(H·L¤¸B¿9ê,˜%�%ù'Õ'“$M!ž " #"žïM A!z=ø¯ýµ&®6E=S4� iô¯56A|< /&ù'�/Ã2•-Þ%:$'*40^.‚%?‹#/«4Ì*)¸¿ &Ñ>uEt6{éžl)¸7»;O8ƒ5þ7Ð=BxBò@¶@ÚBÇEoG^GÂFGþHÀK5M`J3Aq3”'}%â/$@¨IUC�/,sd� Œ"|~E é V °*ü·òñ|ó¼ð3ä‰Ô2΂ֈä¯çÆÖr¹o¢ÉŸ<¯ Á÷ÅV»êª¥ „ ‚¥†¨N§'¥ ¦ªªò¯Z³/µ²·J¼ÂïÆuÉUÊþË^ÑGܪëÁúºMÿXóÅèêéù€K½…þúg —�¦ 9 !^ ¢º ña]ü2ë^ê¾ün@ö÷3åå«óú²òOú7ø‰û£þ5ýjøªô~ôö�õiñÇëWèÃè+ë‘ëÆæÅÜÑbÉ'ÊhÓeßnåéß%фŒ½RÄõÏÄÖ¥ÔóÍeÊ+ÍYÒÍÓÐÌÍÒÕçÐæÈeÆkÏêÞwçßaɶ½³ÜÃ2ÙjãpÜÌj¿¶½_üÇúÅ À}½0¿ÇĞÂ_ÀÁ-ƚʸÊ>ÆbÁ�ÁJÉzգߙá°ÙN̵ÁúÀËÖÙµãÚâFÙîÎË�ÎÔ—ÕaÒ‹ÎSÎ]ÑxÓÎÑ�ÎïÎ`ÔãÙÿ× ÍÁÿ ÎïãtñYì¨Ø·Å“ÁÿÍkàÝëƒëªä÷ß%áåŽæ(äáá¼ãåOãÞÁÛmÞÛä6éVæWÜÑåËŠÐDÜÂçùëœæ{ÛËÑ@Ï‹ÔNݾãçäDâ§ß‹ßPá«âŠââÑâäYã<ßgÚ:Ú}á"ìßð¹èÖ;Ä¢¿SËZÞ’ê¤çÑØ"ÉõÁKÄñÉgÌgÊ„Ç^Ç¿ÉpË=Ê®Ç^ÇúÊîÏ Ñ Î^Èׯ„ÍWÚ ækéÄâB×wÏfѤÜë;õ“÷ôó´ïPïœóú×ÿËø b;^€!–*�12,&Ÿ(X7MLD[æZbL;Ú3U;ôJW%XPŠFqA®@ë?õ;é5=1D/w-H(Št¶T«ùÅø³î´ð²úÃR{ûïXæNåCê“ð~ôVõ¹ôyôõèõ³öøìúùþM¡Öÿîükþf¡Ê½/ †û[÷hTQ$ç'û9» I”5 ^"!š ü"'&/' &Ï%)o.B1O.¼'$®(o4Î?¢B¶:§-–$9% .œ8 >\-¯e’�ÿIÿ *v B[ ý ü®ûÑú„ùAøÕöpô®ð¬ì|êbëBîðïXíGæ;Þ@Ú<ÝdåímîèÞ®Ö“Öâ܃äèååfàØÛÆÚ˜ÜòÞàìßZ߱ކݸÛuÚŒÛ�ß3äóå‹â²ÛWÖ×Þ1ç8ì$êãƒÜÛ ß0å]éÙéçç÷åTåšåãå)æ<çiérëGë"èìãJâ–åˆì{òÜòáìzä–ß²á:éæð¾ó™ðŠêæóåUé†íðxð…ïdî©ísíîíï§òíôõAò6îìë½íDó3ù“û øVò&íÌì¬ñ¬øœý$þ1ûÍ÷¸ö�ø½û§þz Ž!ìK³Œ~ Ò Ä|çÍdí?­> ófóÉ•³i‹L¶£^ÄÆ # & i� ¥ °s’ G«|Ÿ k1Ú— r ¶ è Û ö) ‘ ½ ! : … r ù À@* ð‡É ¨ÿËÿÖú l �ìÊ•io�¥\Ôø!æè Š } Zãî …—ü—ÁpgèÎ J ¦#»&·(Þ)Ñ*Å+f,–,-¾.á1ð4š5¿2Þ-\*ß*/]340|)0$z"Ÿ#æ$ $Ñ ¢õ/åÅõ’ ƒ ‚  ÿ¹þt EºýùÙõ¤õøeû~ývýØûú•ùÚúPýÇÿE›k‡VµCÙsÔ \ ˜ ú Yõ í†t ¼¼î ¬*¦Á À £ ­ ~ u ÿ ® d œ Lcú  x ìðêæ † ¶ ö ½¢¾i{…ú ÄÞµ/˜G’¬h  \ à + 0Ë) ê Ý ù†$”: œ š;|hfËá(¼úrµÿ '06ÄPþçû©ûý|þÔþæýbüûú˜ùDùûø’øÞ÷ÍöŠõyôàó±ó¥óYó—òQñ¡ïÜí™ìxì�í!ïÐï´î$ì±éésêäì‘îšîŽíÎìAí¦îðêðNñÇñ�òVóÝólô¯õÚ÷.úgûÞúSùuø�ùXüOÿÎbñþáýëýÏþÇÿIT2öÿýÿ,i{0�ÿðþ¥þÕþmÿ(ª�­ÿAþý³ü¯ýdÿ®§[ÿÄýúüSý@þÖþ§þþ|ýgýŠý›ý‹ýŒýŸýmý�ü+ûúðùû|üÞü¢ûfù}÷Úö`÷ø"øY÷8öLõ¯ôôGóDòOñ‚ð»ïÏîÅíäìfì<ì ìwëlê,é'è´çîç¬è�é,ê.ê§éééê™ë@íƒîZï'ðJñÀòFôœõÄöølùÖúü4ýŒþQC¶)Б>ìÕûó5‹l«Ç|õ�r]bª°&N>Zóÿþÿ#÷ÿEÿ3þý5üÏû×ûüLü1üÀû"û‘ú0ú÷ùÑù°ù¦ù½ùåùúùìùÎùÁùÜùéùºùTù ùIùúøújûû\úÌùØùpúûjûiûfûªûügüIüÝû}ûkû¤ûçûüõûôûüIüBüðûoûûñú*û‚ûÉûéûêûãûÜûÙûÖûãûü€üýÌýWþ¡þªþ�þ³þ ÿ�ÿ�äEÍaÓùå× …x¡®ÊûäÐ Œoh5  !' éä-,ìyû‘8å† Àp›Üîÿÿ[þþêýËýsýÛü,üŸûHûûÖú…ú9ú!úGú‡ú©ú—újú`ú“úëú<ûlû—ûõû–üKýÄýÙý¦ý€ý·ýHþúþ†ÿØÿ4t¬ÇÍÒüGšÝ /UspRDdµly?݆j“Û éùÅν�“§Ôù/gšŸ…zºPx†Q .yÐ&70ûªXÖŠ$²O»P¦ÌìÿDÿêþÕþÂþzþìý.ý‚üüÜû¼û†û8ûæú¯ú�ú’úwúFú$ú)úMúoú{úuúŽúâú\ûºûÌûœûsû�û)üàüný¯ý¹ýÏýþuþ×þ$ÿ[ÿŸÿøÿ^µó+sÆ00.Q¬#…¡qȬÐ=2ë˜[EC4Κv_@øåÔ¯fúÿ q¨Ž+·ÿÿ”ÿÎÿïÿÚÿ ÿgÿMÿEÿ4ÿÿìþÏþ¼þšþbþþëýäýùýþýÉý_ýçü›üœü×üý2ýý¶ülüTürüªüØüàüÕüÉüÙüý+ýHýWýký‘ýºý×ýæýûý*þ{þÈþãþÄþ“þ�þÝþaÿÖÿðÿÌÿËÿX¥Û0e�Ìü@˜õ5LSxÑUÏ áÄÙ {¿ÖÁš}w}|h< Ùµ–y^C è”9õàóýÕjä�_r‹x7å§‹�u_D-óÿÉÿ¤ÿ ÿ¶ÿÕÿ×ÿ¯ÿqÿHÿXÿœÿõÿ/1ÛÿÒÿúÿ=}™›”œºãý !$',@f‰�rB+K’ÖòÚ³¢ºë6CRh�–ªÈø-Va[bˆÍ3&áéOy}^:ÿæÌº«š‰zfF൤¨­�Gí�tjgNÑ�dB"Úÿ´ÿ“ÿmÿEÿ ÿÿÿÿÿäþ¹þ™þ•þ±þßþüþøþäþÊþÆþàþÿ-ÿAÿHÿGÿKÿYÿhÿvÿ~ÿ�ÿ„ÿ‡ÿ‹ÿ�ÿ‘ÿ�ÿ«ÿ·ÿ¸ÿ¨ÿ‘ÿ…ÿ“ÿ³ÿØÿêÿäÿËÿ»ÿ½ÿÐÿçÿøÿýÿ (7DF>8<OfnfM60:LWO<( øÿóÿêÿãÿÝÿØÿÔÿÎÿÆÿ¹ÿ­ÿ¥ÿ¥ÿ«ÿ¯ÿ©ÿ™ÿ…ÿsÿlÿmÿvÿwÿqÿbÿYÿRÿQÿSÿRÿOÿLÿIÿHÿFÿGÿGÿIÿLÿRÿSÿNÿOÿSÿ]ÿgÿpÿvÿwÿvÿyÿ‚ÿŒÿ•ÿœÿ¢ÿ¥ÿ­ÿ´ÿ¹ÿÀÿÇÿÏÿ×ÿÜÿáÿçÿíÿRclass ExcessiveFemale2 expands TFemale2; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } øp gv (eð*Þ$öùø õM4+. -E -E' Æ_ û_ Ry\Ô‚wN* ws*Ô‚Na/!Osa/!dÔwNs@M¹ Æa/![¹š:NÍü:sÍü@L.‘N y@ ' wé*é$yRsNIHG ûe ”§ Ts.…Š.rs*ð*q! RRš:sÞ%+q!0  .class ExcessiveFlakAmmo extends FlakAmmo; ý@r`^w.‘@*j%^–j,Tþj.‘@Èó!Vì=j ¥j s€ñN~F]Zñ~f[%»–[JS“Ù[N Ž#·�w#*xr#ÚS�##¾R±r#*·aS¥[X-KS“ÙExcessive.HitSound Ž#·6w#*r#ÚS6##¾ùXr#*·aS g class ExcessiveExplodingChunk expands UTChunk2; simulated function HitWall( vector HitNormal, actor Wall ) { ExplodeChunk(); } simulated function ProcessTouch (Actor Other, vector HitLocation) { if ( (Pawn(Other) != None) && (Other != Instigator) ) ExplodeChunk(); } function BlowUp(vector HitLocation) { HurtRadius(70,90.0, MyDamageType, 50000, HitLocation ); MakeNoise(0.8); } simulated function ExplodeChunk() { local UT_SpriteBallExplosion s; s = spawn(class'UT_SpriteBallExplosion',,,Location); s.DrawScale *= 0.6; BlowUp(Location); Destroy(); } [ €‰ëFj a 3 §, F  k �l �ãm �ãn �†€@ìi Db<:ìDBDCADa ó €@  !øK` øÇÞ$È Ñ\ j P rŠ* Š ÐË$.…Š®a^î@@ÍÌL= €‰Rclass ExcessiveFemale1 expands TFemale1; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } Lclass ExcessiveBoss expands TBoss; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } Èv ZÐ+ÿÿÿÿÿÿÿÿÿÿÍB7›r-Ù-í( -Ù±6§B333?aò$©Õš™™>×ÔÕÛ©BBHá À©Çá© Ü _ ’q •-Î'v-òv!Ç&*L„�-Ìr.…Š*q!sk-ãÀ?%q![s* “Ç&K“Ç&-Ä' €„wXclass ExcessiveEnforcer expands Enforcer; function SpawnDouble() { local Pawn P; local Inventory Copy; if (SlaveEnforcer == None) { P = Pawn(Owner); // spawn a double Copy = Spawn(class, P); Copy.BecomeItem(); ItemName = DoubleName; SlaveEnforcer = ExcessiveEnforcer(Copy); SetTwoHands(); AIRating = 0.4; SlaveEnforcer.SetUpSlave( Pawn(Owner).Weapon == self ); SlaveEnforcer.SetDisplayProperties(Style, Texture, bUnlit, bMeshEnviromap); SetTwoHands(); } } function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'doubleenforcer' ) { AutoSwitchPriority = i; DoubleSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } simulated function PlayFiring() { PlayOwnedSound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); bMuzzleFlash++; PlayAnim('Shoot', 3.2, 0.02); } simulated function PlayAltFiring() { PlayAnim('T1', 3.8, 0.05); bFirstFire = true; } simulated function PlayRepeatFiring() { if ( Affector != None ) Affector.FireEffect(); if ( PlayerPawn(Owner) != None ) { PlayerPawn(Owner).ClientInstantFlash( -0.2, vect(325, 225, 95)); PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); } bMuzzleFlash++; PlayOwnedSound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); PlayAnim('Shot2', 3.8 , 0.05); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local UT_Shellcase s; local vector realLoc; realLoc = Owner.Location + CalcDrawOffset(); if (Other == Level) { if ( bIsSlave || (SlaveEnforcer != None) ) Spawn(class'UT_LightWallHitEffect',,, HitLocation+HitNormal, Rotator(HitNormal)); else Spawn(class'UT_WallHit',,, HitLocation+HitNormal, Rotator(HitNormal)); } else if ((Other != self) && (Other != Owner) && (Other != None) ) { if ( FRand() < 0.2 ) X *= 5; Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, 3000.0*X, MyDamageType); if ( !Other.bIsPawn && !Other.IsA('Carcass') ) spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9); else Other.PlaySound(Sound 'ChunkHit',, 4.0,,100); } } simulated function PlayNormRepeatFiring() { if ( Affector != None ) Affector.FireEffect(); if ( PlayerPawn(Owner) != None ) { PlayerPawn(Owner).ClientInstantFlash( -0.2, vect(325, 225, 95)); PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); } bMuzzleFlash++; PlayOwnedSound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); PlayAnim('Shoot', 3.2 , 0.05); } //////////////////////////////////////////////////////// state NormalFire { ignores Fire, AltFire, AnimEnd; function Timer() { if ( SlaveEnforcer != none ) SlaveEnforcer.Fire(0); } function EndState() { Super.EndState(); OldFlashCount = FlashCount; } Begin: if ( SlaveEnforcer != none ) SetTimer(0.20, false); Repeater: if (AmmoType.UseAmmo(1)) { FlashCount++; TraceFire(0.2); PlayNormRepeatFiring(); FinishAnim(); } if ( bIsSlave ) { if ( (Pawn(Owner).bFire!=0) && AmmoType.AmmoAmount>0 ) Goto('Repeater'); } else if ( bChangeWeapon ) GotoState('DownWeapon'); else if ( (Pawn(Owner).bFire!=0) && AmmoType.AmmoAmount>0 ) { if ( PlayerPawn(Owner) == None ) Pawn(Owner).bFire = int( FRand() < ReFireRate ); Goto('Repeater'); } PlayAnim('Shoot', 2.8, 0.05); Finish(); } state AltFiring { ignores Fire, AltFire, AnimEnd; function Timer() { if ( Slaveenforcer != none ) Slaveenforcer.AltFire(0); } function EndState() { Super.EndState(); OldFlashCount = FlashCount; } Begin: if ( SlaveEnforcer != none ) SetTimer(0.20, false); FinishAnim(); Repeater: if (AmmoType.UseAmmo(1)) { FlashCount++; TraceFire(AltAccuracy); PlayRepeatFiring(); FinishAnim(); } if ( AltAccuracy < 3 ) AltAccuracy += 0.5; if ( bIsSlave ) { if ( (Pawn(Owner).bAltFire!=0) && AmmoType.AmmoAmount>0 ) Goto('Repeater'); } else if ( bChangeWeapon ) GotoState('DownWeapon'); else if ( (Pawn(Owner).bAltFire!=0) && AmmoType.AmmoAmount>0 ) { if ( PlayerPawn(Owner) == None ) Pawn(Owner).bAltFire = int( FRand() < AltReFireRate ); Goto('Repeater'); } PlayAnim('T2', 3.8, 0.05); Finish(); } state ClientAltFiring { simulated function bool ClientFire(float Value) { if ( bIsSlave ) Global.ClientFire(Value); return false; } simulated function Timer() { if ( (SlaveEnforcer != none) && SlaveEnforcer.ClientAltFire(0) ) return; SetTimer(0.5, false); } simulated function AnimEnd() { if ( Pawn(Owner) == None ) GotoState(''); else if ( Ammotype.AmmoAmount <= 0 ) { PlayAnim('T2', 3.8, 0.05); GotoState(''); } else if ( !bIsSlave && !bCanClientFire ) GotoState(''); else if ( bFirstFire || (Pawn(Owner).bAltFire != 0) ) { PlayRepeatFiring(); bFirstFire = false; } else if ( Pawn(Owner).bFire != 0 ) Global.ClientFire(0); else { PlayAnim('T2', 3.8, 0.05); GotoState(''); } } simulated function BeginState() { Super.BeginState(); if ( SlaveEnforcer != None ) SetTimer(0.2, false); else SetTimer(0.5, false); } simulated function EndState() { Super.EndState(); if ( SlaveEnforcer != None ) SlaveEnforcer.GotoState(''); } } ìHoe6ìwñ*ña4wº*ºa éz i¨ëa,L×�Õà�'‚‚‚w* wŸI„„-Ó r $‚-Å-Ì1„r.…*.…s,©¸HK±H ×£=o,LH©›: Ô:$˜rî*Åô«?¯ Ú×ÍÌÌ=6 D«ÀÅŸ,ÔÕ?ÍÅôÅññwîî6 D«ÀÅŸ,ÔÕ?ÍÅôÅ× Úî¸ÅK©±Å®Ga>_‚îa/!d °ÃìQ¸=Ŭ BÀî6 D«ÀÅŸ,ÔÕ?ÍÅôÅî‚-í.…-ûëwº*ºa”1„rº*º-ëºa Ó Ø,Õ?,”w�ºa/!Vºaºa Ó Ø,Õ?,”ºa Ø,Õ?,Í‚wº*›: Ô:$aÓ ,PLwñ*¸ÅñÅñañ* ¡¡‚›: Ô:$ wî*î] D«ÀÅŸØî �ÔÔš™™?îóÔÕ?ÍÅôÅî*i™Â, ÷„rº*º-ëºa á ×�Õ¯à?,fBºa/!Vºaºa á ×�Õ¯à?,fºa ×�Õ¯à?,é‡wº*ºaº*Ïrñ*ña u ×�ÕàñÂ’Â&éñNK k-class ExcessiveDomination expands Domination; var string Mutators[13]; var int NumMutators; var globalconfig bool bUseHitSound; var globalconfig string ReservedPassword; var globalconfig int NumReservedSpots; event InitGame( string Options, out string Error ) { local Mutator M; local class MutatorClass; local int i; Super.InitGame(Options, Error); // add all the mutators for (i = 0; i < NumMutators; i++) { MutatorClass = class(DynamicLoadObject(Default.Mutators[i], class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } if (bUseHitSound) { MutatorClass = class(DynamicLoadObject("Excessive.HitSound", class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } } function int ReduceDamage( int Damage, name DamageType, pawn injured, pawn instigatedBy ) { if ( (injured == instigatedBy) && (DamageType != 'SpecialDamage') ) return 0; if( injured.Region.Zone.bNeutralZone ) return 0; return Super.ReduceDamage( Damage, DamageType, injured, instigatedBy ); } event PreLogin ( string Options, string Address, out string Error, out string FailCode ) { local string InPassword; if (NumReservedSpots > 0) { Error=""; InPassword = ParseOption( Options, "Password" ); if( (Level.NetMode != NM_Standalone) && AtCapacity(Options) ) { if ( (NumPlayers - MaxPlayers) >= NumReservedSpots) Error=MaxedOutMessage; else if ( ReservedPassword !="" && (caps(InPassword) != caps(ReservedPassword))) { if( InPassword == "" ) { Error = NeedPassword; FailCode = "NEEDPW"; } else { Error = MaxedOutMessage; FailCode = "WRONGPW"; } } } if(!CheckIPPolicy(Address)) Error = IPBanned; } else Super.PreLogin(Options, Address, Error, FailCode); } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local string InPassword; local int NumReservedPlayers; local playerpawn NewPlayer; NumReservedPlayers = NumPlayers - MaxPlayers; if ( (AtCapacity(Options)) && (NumReservedPlayers < NumReservedSpots) ) { InPassword = ParseOption( Options, "Password" ); if ( caps(InPassword) == caps(ReservedPassword) ) { MaxPlayers += NumReservedPlayers + 1; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); MaxPlayers -= NumReservedPlayers + 1; } else { Error = MaxedOutMessage; return None; } } else NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); return NewPlayer; } î| XAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6 } ’`¥gîïÙL�•’ÔûR…àÀñ´¹ “ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,†]Excessive.ExcessiveTimeÝExcessive.ExcessivePowerupsÝExcessive.EnforcerUpgradeÝExcessive.HammerUpgradeÝExcessive.BioUpgradeÝExcessive.ShockRifleUpgradeÝExcessive.PulseUpgradeÝExcessive.RipperUpgradeÝExcessive.MinigunUpgradeÝ Excessive.FlakUpgradeÝ Excessive.RocketUpgradeÝ Excessive.SniperUpgradeÝ Excessive.TranslocatorUpgradeB" 9Ó=]Excessive Dominationu-class ExcessiveDeathMatchPlus extends DeathMatchPlus; var string Mutators[13]; var int NumMutators; var globalconfig bool bUseHitSound; var globalconfig string ReservedPassword; var globalconfig int NumReservedSpots; event InitGame( string Options, out string Error ) { local Mutator M; local class MutatorClass; local int i; Super.InitGame(Options, Error); // add all the mutators for (i = 0; i < NumMutators; i++) { MutatorClass = class(DynamicLoadObject(Default.Mutators[i], class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } if (bUseHitSound) { MutatorClass = class(DynamicLoadObject("Excessive.HitSound", class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } } function int ReduceDamage( int Damage, name DamageType, pawn injured, pawn instigatedBy ) { if ( (injured == instigatedBy) && (DamageType != 'SpecialDamage') ) return 0; if( injured.Region.Zone.bNeutralZone ) return 0; return Super.ReduceDamage( Damage, DamageType, injured, instigatedBy ); } event PreLogin ( string Options, string Address, out string Error, out string FailCode ) { local string InPassword; if (NumReservedSpots > 0) { Error=""; InPassword = ParseOption( Options, "Password" ); if( (Level.NetMode != NM_Standalone) && AtCapacity(Options) ) { if ( (NumPlayers - MaxPlayers) >= NumReservedSpots) Error=MaxedOutMessage; else if ( ReservedPassword !="" && (caps(InPassword) != caps(ReservedPassword))) { if( InPassword == "" ) { Error = NeedPassword; FailCode = "NEEDPW"; } else { Error = MaxedOutMessage; FailCode = "WRONGPW"; } } } if(!CheckIPPolicy(Address)) Error = IPBanned; } else Super.PreLogin(Options, Address, Error, FailCode); } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local string InPassword; local int NumReservedPlayers; local playerpawn NewPlayer; NumReservedPlayers = NumPlayers - MaxPlayers; if ( (AtCapacity(Options)) && (NumReservedPlayers < NumReservedSpots) ) { InPassword = ParseOption( Options, "Password" ); if ( caps(InPassword) == caps(ReservedPassword) ) { MaxPlayers += NumReservedPlayers + 1; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); MaxPlayers -= NumReservedPlayers + 1; } else { Error = MaxedOutMessage; return None; } } else NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); return NewPlayer; } í~ i Bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6  ïtÈíÊ�¡•’ÔûR…àÀñ´¹ “ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,†]Excessive.ExcessiveTimeÝExcessive.ExcessivePowerupsÝExcessive.EnforcerUpgradeÝExcessive.HammerUpgradeÝExcessive.BioUpgradeÝExcessive.ShockRifleUpgradeÝExcessive.PulseUpgradeÝExcessive.RipperUpgradeÝExcessive.MinigunUpgradeÝ Excessive.FlakUpgradeÝ Excessive.RocketUpgradeÝ Excessive.SniperUpgradeÝ Excessive.TranslocatorUpgradeB" 9Ó=]Excessive DeathMatchA.class ExcessiveCTFGame expands CTFGame; var string Mutators[13]; var int NumMutators; var string ReserveMessage; var globalconfig bool bUseHitSound; var globalconfig string ReservedPassword; var globalconfig int NumReservedSpots; event InitGame( string Options, out string Error ) { local Mutator M; local class MutatorClass; local int i; Super.InitGame(Options, Error); // add all the mutators for (i = 0; i < NumMutators; i++) { MutatorClass = class(DynamicLoadObject(Default.Mutators[i], class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } if (bUseHitSound) { MutatorClass = class(DynamicLoadObject("Excessive.HitSound", class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } } function int ReduceDamage( int Damage, name DamageType, pawn injured, pawn instigatedBy ) { if ( (injured == instigatedBy) && (DamageType != 'SpecialDamage') ) return 0; if( injured.Region.Zone.bNeutralZone ) return 0; return Super.ReduceDamage( Damage, DamageType, injured, instigatedBy ); } event PreLogin ( string Options, string Address, out string Error, out string FailCode ) { local string InPassword; if (NumReservedSpots > 0) { Error=""; InPassword = ParseOption( Options, "Password" ); if( (Level.NetMode != NM_Standalone) && AtCapacity(Options) ) { if ( (NumPlayers - MaxPlayers) >= NumReservedSpots) Error=MaxedOutMessage; else if ( ReservedPassword !="" && (caps(InPassword) != caps(ReservedPassword))) { if( InPassword == "" ) { Error = NeedPassword; FailCode = "NEEDPW"; } else { Error = MaxedOutMessage; FailCode = "WRONGPW"; } } } if(!CheckIPPolicy(Address)) Error = IPBanned; } else Super.PreLogin(Options, Address, Error, FailCode); } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local string InPassword; local int NumReservedPlayers; local playerpawn NewPlayer; NumReservedPlayers = NumPlayers - MaxPlayers; if ( (AtCapacity(Options)) && (NumReservedPlayers < NumReservedSpots) ) { InPassword = ParseOption( Options, "Password" ); if ( caps(InPassword) == caps(ReservedPassword) ) { MaxPlayers += NumReservedPlayers + 1; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); MaxPlayers -= NumReservedPlayers + 1; } else { Error = MaxedOutMessage; return None; } } else NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); return NewPlayer; } ï { MN‚ßgÔMÔÁÔØa ×M �ÕàCa+M ÷iCz Ü@I Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6 Bm^ NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } Ý w ²~Ç%-ã(-Ä( ,class ExcessiveChunk4 expands UTChunk4; Nclass ExcessiveMale2 expands TMale2; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } ,class ExcessiveChunk3 expands UTChunk3; ,class ExcessiveChunk2 expands UTChunk2; éc tCw/ ØV“׳°‚N –VirNPassword zërëh¡³’V&TétN@s¢³’V&­@Ë*ÐTétN@sT ,class ExcessiveChunk1 expands UTChunk1; õ(4m®õrŸ* k‚Ÿa/!.¬Ÿ-ÜC®€ E«¯?,ŸÏ?,“C®zD«¯?,ŸÏ?�¬°Ã?¶C?ÿÿÿÿ ûTz$)›¸OzR±OÍÌL=¹OÍÌL=¥ÔAšÔ,Ô%ÁÔØswŸ* ‚š: Ô:$/„�Ÿa/!Or.‘Ÿñ *a+Ÿ ¿RaÕ ×#< ¢ À÷ßRÕŸè#€?v\.¬Ÿ<w\*YrŸú*ŸúŸÌÄrŸúŸÌ¶\-ÜG««z®?,ŸÏš™™=ÝG««z®?,ŸÏ�Âõ=±(r(õ¯(Gr!(ô®(Gr?´(rr¯Ã?Z±~?%¹~z¸­‚\-Ü&°¯ Ú\áÍÌL>~\á¸~×Õ ?Ÿú ©Õ@?Ÿ ©°º6§?,x¶6§€>,¶6§?ˆš:Ÿúü:$ØŸú �Õ««4€7:C(ÁØŸú �Õ««o:C(‚š:Ÿü:$±6§Ÿ ©?%ØÕ««RI�9C(Q××ן �Õ6ÂØYÕ6²Ø}Õ¯«š™™?6§Ø?,­b$Ø# AQØ# AåŸ ÷Y}PØQ6ÀD®?6À««®(~@?CKœ“6Àœ6ÀŸ ÷ÿÿÿÿÁ‚—K¸  –KGôœ–K€6À’6ÀŸ ÷¸ Á6À“6ÀŸ ÷¸  wŸú*PØŸú �Ÿ �Ÿ ¿Ÿ ¿a+XŸ ¿a+RŸÏ ÃåŸ ¿Y}Í-Æ6§Ø«6§ØÀ?6²Ø6§Ø6§Ø-û6²Ø6²Ø6²Ø«€¿6²Øa ×××ן �RÕ6ÂØYÕ6²Ø}Õ6§Ø‰å÷Y}iYz 0class ExcessiveBulletBox expands BulletBox; A€Qclass ExcessiveBrowserUpdateServerWindow expands UBrowserUpdateServerWindow; ÀXIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2YYqÎ�À̬a,.†Mcsclass ExcessiveBrowserUpdateServerLink expands UBrowserUpdateServerLink; var config string MainServerAddress; var config string SecondaryServerAddress; function QueryUpdateServer() { UpdateServerAddress = MainServerAddress; Super.QueryUpdateServer(); } function SetupURIs() { MaxURI = 3; //URIs[3] = "/UpdateServer/utmotd"$Level.EngineVersion$".html"; URIs[3] = "/excessive/ut.html"; URIs[2] = "/UpdateServer/utmotdfallback.html"; URIs[1] = "/UpdateServer/utmasterserver.txt"; URIs[0] = "/UpdateServer/utircserver.txt"; } function HTTPError(int ErrorCode) { UpdateServerAddress = SecondaryServerAddress; Super.HTTPError(ErrorCode); } function HTTPReceivedData(string Data) { ProcessData(Data); UpdateServerAddress = SecondaryServerAddress; if(CurrentURI == MaxURI) CurrentURI--; if(CurrentURI == 0) Success(); else { CurrentURI--; BrowseCurrentURI(); } } 5class TranslocatorUpgrade expands WeaponUpgrade; ` //============================================================================= // ExcessiveBrowserMenuItem. // original code written by N.Bogenrieder (aka Beppo) //============================================================================= // That's the menuitem in the UT MainDialog window (startup window) // you will find it under 'Mod' //============================================================================= class ExcessiveBrowserMenuItem expands UMenuModMenuItem; function Execute() { MenuItem.Owner.Root.CreateWindow(class'ExcessiveBrowserMainWindow', 10, 10, 150, 100); } á\LKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2]VwTZá‰üÍ·Ñ;aG°ÒÕ¶mêÖo ûg.†c]E&xcessive Server Browserf]Excessive Server Browser.oclass ExcessiveBrowserMainWindow expands UBrowserMainWindow; function BeginPlay() { Super.BeginPlay(); ClientClass = class'ExcessiveBrowserMainClientWindow'; } r€‘ÏdNO£ÿÿÿÿÿÿÿÿÿÿùSD¿�Ž„-ê wSŸ[š:Ñ:$S* DÀŸOÕ?Íâ©!kS-íaô$@Žaò$@ z1//============================================================================= // ExcessiveBrowserMainClientWindow - The main client area //============================================================================= class ExcessiveBrowserMainClientWindow extends UTBrowserMainClientWindow; function Created() { local int i, f; local UWindowPageControlPage P; local UBrowserServerListWindow W; local class C; local class FC; local class MC; Super(UWindowClientWindow).Created(); InfoWindow = UBrowserInfoWindow(Root.CreateWindow(class'UBrowserInfoWindow', 10, 40, 310, 170)); InfoWindow.HideWindow(); PageControl = UWindowPageControl(CreateWindow(class'UWindowPageControl', 0, 0, WinWidth, WinHeight)); PageControl.SetMultiLine(True); // Add MOTD MC = class(DynamicLoadObject(UpdateServerClass, class'Class')); MOTD = PageControl.AddPage(MOTDName, MC); IRC = PageControl.AddPage(IRCName, class'ExcessiveBrowserIRCWindow'); // Add favorites FC = class(DynamicLoadObject(FavoriteServersClass, class'Class')); Favorites = PageControl.AddPage(FavoritesName, FC); C = class(DynamicLoadObject(ServerListWindowClass, class'Class')); ServerListNames[3]='ExcBrowserDeathmatch'; ServerListNames[4]='ExcBrowserTeamGames'; ServerListNames[5]='ExcBrowserCTF'; ServerListNames[6]='ExcBrowserDOM'; ServerListNames[7]='ExcBrowserAS'; ServerListNames[8]='ExcBrowserLMS'; for(i=0; i<20; i++) { if(ServerListNames[i] == '') break; P = PageControl.AddPage("", C, ServerListNames[i]); if(string(ServerListNames[i]) ~= LANTabName) LANPage = P; W = UBrowserServerListWindow(P.Page); if(W.bHidden) PageControl.DeletePage(P); if(W.ServerListTitle != "") P.SetCaption(W.ServerListTitle); else { switch(i) { case 3: W.ServerListTitle = "Excessive Deathmatch"; P.SetCaption(W.ServerListTitle); break; case 4: W.ServerListTitle = "Excessive Team Deathmatch"; P.SetCaption(W.ServerListTitle); break; case 5: W.ServerListTitle = "Excessive Capture the Flag"; P.SetCaption(W.ServerListTitle); break; case 6: W.ServerListTitle = "Excessive Domination"; P.SetCaption(W.ServerListTitle); break; case 7: W.ServerListTitle = "Excessive Assault"; P.SetCaption(W.ServerListTitle); break; case 8: W.ServerListTitle = "Excessive Last Man Standing"; P.SetCaption(W.ServerListTitle); break; default: P.SetCaption(Localize("ServerListTitles", string(ServerListNames[i]), "UBrowser")); break; } } FactoryWindows[i] = W; } } function Close(optional bool bByParent) { ServerListNames[3]='UBrowserDeathmatch'; ServerListNames[4]='UBrowserTeamGames'; ServerListNames[5]='UBrowserCTF'; ServerListNames[6]='UBrowserDOM'; ServerListNames[7]='UBrowserAS'; ServerListNames[8]='UBrowserLMS'; SaveConfig(); StaticSaveConfig(); Super.Close(bByParent); } òa7œR-ê'aò$@a!q€?“‚w.ÆG*.ÆG-üŽš:Ñ:$G* DÀŸ�Õ?Íâ©ôa ¥Ãa(bš™™>º—Ã,a&šÃ&a Ç �PI©6§I*6§**â*IâI&°ÛI*w¾¿â×Õš™?I*6§**â*&°ÛI*w¾¿¿š§&%×#ÍÌL=ÙØ#ÍÌL=ÿš§&%×#ÍÌL=Ø#ÍÌL=âà©Õ«?,Û©l©  [Rÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿeñµ)r »=, †»/]! Excessive.ExcessiveTranslocator4class ExcessiveBladeHopper expands BladeHopper; Ûs úH wclass ExcessiveBioSplash extends ExcessiveBioGel; auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('UT_BioGel') ) /*&& (LifeSpan > Default.LifeSpan - 0.2) )*/ return; if ( Pawn(Other)!=Instigator || bOnGround) Global.Timer(); } } ñj7ua k€‰€„ËiD Ö)'‚w.…* wŸa ÊA yTÒ ' aìQ8> ÿÿÿÿÿÿÿÿÿÿ€‰lwUP)ÄŒB´BôPCGwbÍÌL? èM lðÖ -ú' o~aí:~a Ò �¶~Ûš™?U�a ã s :} €Î}u  "v€w€…x€‰y€‰€ä r{;œ €å zl?¾ -ú' €‰€ v Tÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlô,( »=, †É4]Excessive.ExcessiveShockRifle/class RocketUpgrade expands WeaponUpgrade; óutl+(o�t-î S�-Áya Ö "@yÛÍÌÌ=-Á'©ÕÍÌÌ=© èw sA3\a"‚rzp ÿq!6%D6Åz Ò-ê%èsqzp æ |pDø -û' õ A8 q!D ö D=BšYš:Ñ:$©Ô9÷Ǹ6§©?,xY6ÅÒ-î©Ô©333?{›: Ô:$âPÃGa!NÍÌÌ>-Á(aÉ B€¡€ç CLXI8( }x4 •xÛ} |INN*jÿÿÿÿÿÿÿÿÿÿ{vD#=va/!R ;„w.…vŸ-Á8 €€‰uKu7á¡o‚$b€?-Á'aòRuNM±Û?&^“D«?,Û&w×�Õ?,uÛôÛ@@˜—^%L˜—^%Lq!^ ýH@Y¸­:.…Šr:* Y.‘Š%D“È&X–D%D%�rY*-Ó°«Ã?,:Ïå: ¿XPNC×××׊ �ÃÕ6¨XÕ6²¨PÕ6§¨N--ΰ: !ÛCDÊ'-ðY°: SÚCDÊ'-ëxwY*°: ¿H“È&Šb:®½�-Îä*-Ç(wä*V.…L‚wä* wäVä*-Ç(V*-Ñ(-å'P°q€@U„-Ó �-Îqà@-g—È&m—È%Ð-g@Ø×ØCÕ¯«»%qð@PÕ¯«¼%q?,NÔÔX?,ÃÛ@C›-Î’±%?%3‚°%?, �-Ó6ÀPD¯?6À°«%?X’}‚±%`@ �-Ó6ÀPD®?6À°«¯%?,?X’6ÀP6À°wä*ka i !@PkàäkÜD±%?%Ýk ©®fff?«ÍÌL>Ø]a q !@P]ÜDl‚—È,-Ó]-Í'˜±%?%Ý] ©®fff?«ÍÌL>ÃWna w !@°nøDW—D%6ËfD¯«Ã?Ü?î6ÀfD¯«Ã?Ü?î6ÒfD¯«Ã?Ü?în ©an ©f¸%ù1†?¦Èd-Ó(£-òv!-Ä'È&À?%«-Ä( .class PulseUpgrade expands WeaponUpgrade; JEL2½}¦^E×wÕ?,ü_wŠ*ta f EPØE�tÛx{a v EPØE� Y2class ExcessiveBioRifle expands ut_biorifle; function SetSwitchPriority(pawn Other) { local int i; if ( PlayerPawn(Other) != None ) { for ( i=0; i<20; i++) if ( PlayerPawn(Other).WeaponPriority[i] == 'ut_biorifle' ) { // set to the same priority as the standard BioRifle AutoSwitchPriority = i; return; } } } function DropFrom(vector StartLocation) { // keep weapon from being dropped } simulated function PlayFiring() { PlayOwnedSound(AltFireSound, SLOT_None, 1.7*Pawn(Owner).SoundDampening); //fast fire goop PlayAnim('Charging', 10, 0.05); } simulated function PlayAltFiring() { PlayOwnedSound(Sound'Botpack.BioRifle.BioAltRep', SLOT_Misc, 1.3*Pawn(Owner).SoundDampening); //loading goop PlayAnim('Charging',2.0,0.05); } function Projectile ProjectileFire(class ProjClass, float ProjSpeed, bool bWarn) { local Vector Start, X,Y,Z; Owner.MakeNoise(Pawn(Owner).SoundDampening); GetAxes(Pawn(owner).ViewRotation,X,Y,Z); Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; AdjustedAim = pawn(owner).AdjustToss(ProjSpeed, Start, 0, True, (bWarn || (FRand() < 0.4))); return Spawn(ProjClass,self,, Start,AdjustedAim); } function AltFire( float Value ) { bPointing=True; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(20) ) { GoToState('AltFiring'); bCanClientFire = true; ClientAltFire(Value); } else { GoToState(''); bCanClientFire = true; } } state AltFiring { ignores AnimEnd; function Tick( float DeltaTime ) { if ( ChargeSize < 1.0 ) { Count += DeltaTime; if (Count > 0.5) { ChargeSize += Count; Count = 0; if ( (PlayerPawn(Owner) == None) && (FRand() < 0.2) ) GoToState('ShootLoad'); } } if( (pawn(Owner).bAltFire==0) ) GoToState('ShootLoad'); } function BeginState() { ChargeSize = 0.0; Count = 0.0; } function EndState() { ChargeSize = FMin(ChargeSize, 1.0); } Begin: FinishAnim(); } state ShootLoad { function ForceFire() { bForceFire = true; } function ForceAltFire() { bForceAltFire = true; } function Fire(float F) { } function AltFire(float F) { } function Timer() { local rotator R; local vector start, X,Y,Z; GetAxes(Pawn(owner).ViewRotation,X,Y,Z); R = Owner.Rotation; R.Yaw = R.Yaw + Rand(8000) - 4000; R.Pitch = R.Pitch + Rand(1000) - 500; Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; Spawn(AltProjectileClass,,, Start,R); } function AnimEnd() { Finish(); } function BeginState() { Local Projectile Gel; Gel = ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget); Gel.DrawScale = 1.0 + 0.8 * (14 * ChargeSize); PlayAltBurst(); } Begin: } function float RateSelf( out int bUseAltMode ) { local Pawn P; if ( AmmoType == None ) return -2; P = Pawn(Owner); if ( P == None ) return AIRating; return Super.RateSelf(bUseAltMode); } êEH7£Šb.…Š®å.…Š ¿hFAB×××׊ �ÃÕ6¨hÕ6²¨FÕ6§¨A6Â)6¨6²)C6§)6§¨{×××׊ �ÃÕ6Â)hÕ6²)FÕ6§)A6²)Ãt×××׊ �ÃÕ6Â)hÕ6²)FÕ6§)A°.…Š !UBDÊ'-T@.…Š !U{DÊ'-TA.…Š !UtDÊ'-T{ר{ÔÕ»ÇF?,Õ¯«¼Ç?,áz,AAtרtÔÕ»ÇF?,Õ¯«¼Ç?,áz,AABרBÔÕ»ÇF?,Õ¯«¼Ç?,áz,AA¸Çffæ?aE {@aE tAaE B° æQW^V<ÿÿÿÿÿÿÿÿÿÿûVC8/—^%L%—^%L,v!6v! €ÿULDQêLa/!R q!D éC nCv3 ØL“׳°‚T –L~kTPassword zëkëM¡³’L&uénTxl¢³’L&­xË*ÐuénTxlu €‰|[N1ÿÿÿÿÿÿÿÿÿÿ{sD�=sa/!D ;„w.…sŸ-Á8 Ùc^ ;nï a¸> ÿÿÿÿÿþÿÿÿÿ€‰ÓJo”�ÄÀC!A?ÍJI×�Õ?, Ga Þ Ir’,§,W%Š–Wra @ !IPü¥W[a îJ  `*ÿÿÿÿÿÿÿÿÿÿýCm }`^w.‘m*k%^–k,Tþk.‘mÈó!Xì=k ¥k Bclass ExcessiveBioGlob expands ExcessiveBioGel; var float TempScale; var int NumSplash; var vector SpawnPoint; function PostBeginPlay() { TempScale = DrawScale; Super.PostBeginPlay(); } auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('ExcessiveBioGel') ) return; if ( Pawn(Other)!=Instigator || bOnGround) Global.Timer(); } simulated function HitWall( vector HitNormal, actor Wall ) { SetPhysics(PHYS_None); MakeNoise(1); bOnGround = True; PlaySound(ImpactSound); SetWall(HitNormal, Wall); if ( DrawScale > 1 ) NumSplash = int(2 * DrawScale) - 1; SpawnPoint = Location + 5 * HitNormal; DrawScale= FMin(DrawScale, 3.0); if ( NumSplash > 0 ) { SpawnSplash(); if ( NumSplash > 0 ) SpawnSplash(); } GoToState('OnSurface'); } } function SpawnSplash() { local vector Start; local Projectile Gel; NumSplash--; Start = SpawnPoint + 4 * VRand(); if (Owner != None) { Gel = Spawn(class'ExcessiveBioGlob',,,Start,Rotator(Start - Location)); Gel.DrawScale = TempScale; } else Spawn(class'ExcessiveBioSplash',,,Start,Rotator(Start - Location)); } state OnSurface { function Tick(float DeltaTime) { if ( NumSplash > 0 ) { SpawnSplash(); if ( NumSplash > 0 ) SpawnSplash(); else Disable('Tick'); } else Disable('Tick'); } function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('ExcessiveBioGel') ) return; GotoState('Exploding'); } } class ExcessiveBioGel expands UT_BioGel; function PostBeginPlay() { Super.PostbeginPlay(); SetTimer(3.0, false); } singular function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation, vector momentum, name damageType ) { } auto state Flying { function ProcessTouch (Actor Other, vector HitLocation) { if ( Other.IsA('ExcessiveBioGel') ) return; if ( Pawn(Other)!=Instigator || bOnGround) Global.Timer(); } simulated function HitWall( vector HitNormal, actor Wall ) { SetPhysics(PHYS_None); MakeNoise(0.3); bOnGround = True; PlaySound(ImpactSound); SetWall(HitNormal, Wall); PlayAnim('Hit'); GoToState('OnSurface'); } simulated function ZoneChange( Zoneinfo NewZone ) { local waterring w; if (!NewZone.bWaterZone) Return; if (!bOnGround) { w = Spawn(class'WaterRing',,,,rot(16384,0,0)); w.DrawScale = 0.1; } bOnGround = True; Velocity=0.1*Velocity; } function Timer() { GotoState('Exploding'); } function BeginState() { if ( Role == ROLE_Authority ) { Velocity = Vector(Rotation) * Speed; Velocity.z += 120; if( Region.zone.bWaterZone ) Velocity=Velocity*0.7; } if ( Level.NetMode != NM_DedicatedServer ) RandSpin(100000); LoopAnim('Flying',0.4); bOnGround=False; PlaySound(SpawnSound); } } À u-!pc‹ùðËÑC«.…Š®?,ÿa!J®€?«?Ö-ð°ÃÍÌL> ÷Z4‡÷%›: Ô:$a!la®À?«Ã?(š:Ñ:$åŸ ¿Zsr©×ÔÔZÛŸ ©ZÍÌÌ>Ô9÷®Ç«Ã?,d¸6§©?,ÒÏzDâPCG-Ê(6ÅŸ Ø-î-û'v!©Õš™?© ,class ExcessiveBioAmmo extends BioAmmo; rclass HitSound expands Mutator; #exec AUDIO IMPORT FILE="..\Excessive\Sounds\hit.WAV" NAME="Hit" GROUP="Sounds" #exec AUDIO IMPORT FILE="..\Excessive\Sounds\thit.WAV" NAME="TeamHit" GROUP="Sounds" var sound Hit; var sound TeamHit; var bool Initialized; function PostBeginPlay() { if (Initialized) return; Initialized = True; Level.Game.RegisterDamageMutator( Self ); } simulated function MutatorTakeDamage( out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local sound Sound; if ( (InstigatedBy != None) && (Victim != None) ) { if ( (InstigatedBy.IsA('PlayerPawn')) && (Victim.IsA('Pawn')) ) { if (InstigatedBy != Victim) { Sound = Hit; if (Level.Game.IsA('TeamGamePlus')) if (InstigatedBy.PlayerReplicationInfo.Team == Victim.PlayerReplicationInfo.Team) Sound = TeamHit; PlayerPawn(InstigatedBy).ClientPlaySound(Sound,, true); } } } if ( NextDamageMutator != None ) NextDamageMutator.MutatorTakeDamage( ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType ); } ûT mÀò ;-Áv¹ï«®Ga>m9°ï?%ï «ödj7!  t� k€‰€„ý Rj zÉÄ«À?,›Cô«?Íš™Ù?�a ß !�Ÿ ¿aË  A úDš™?q’,§,R%Ä–Rqa Z ×�Õ®?,d«?,dÃ×ü#?¥R{a ßgýYa ÿÿÿÿÿÿÿÿÿÿ €‰‰Ülp q6þpôjÜpolkp "çgÌ‘ ïï /class HammerUpgrade expands WeaponUpgrade; ß e ½86„š:.…ŠÖ%˜£Í%* “f` {ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿt~ žm“ÕƒC,…àÀñ…àÀñ•’ÔûR�!íìÛ…àÀñã.ê;û…àÀñã.ê;û‘FoÀî“ÕƒC,•’ÔûR�!íìÛ†K[ n\ üHn"D  r[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvn=�9 »=, †¤8]Excessive.ExcessiveHammerÏn4w©›: Ô:$uA� -ëå§,Í™‚‚›: Ô:$ -þ� -ëa®ÍÌL=«Ã ×#=(¡ä$õ ÀwÙç -ë ­°Ã®ÍÌÌ>«¯?ÿ«À??þ€>¥þa Ì!×�Õ®?,«?,Ã×ü#?Ä?npB þô�b€?´¥ÿå‚–þ, ±ùffæ>a®ÍÌL=«ÃÍÌL=( è OÈW&M>‚�-Ä—£Í%À?%È&-Ä' ä* à o  È–Ö®«PA¯ùù¬`@®¬ùùÍÌL=ô›: Ô:$gšÁ,a å �¥Áôš: Ô:$/a8 „ «Ö?,�ñðš: Ñ:$Ø  ��9õ€?á×Ö9#š™™>ð„±9Á²Û  ©?%?õ¯€‰D«ÍÌŒ?9  ©×  ©Ô®??, _ D?ŸØ  �Õ«?® ï óÕ?èo10 /a8 „ «Ö?,�ƒØ  ��9õ€?á×Ö9#š™™>‚„±9Á°Û  ©?%?õ¯€‰D«ÍÌŒ?9ê -í.… }Ô®??,  ©×  ©Ô®??, _ D?ŸØ  �Õ«?® ï óÕ?èo10Á«Ö?, i-class ExcessiveAssault expands Assault; var string Mutators[13]; var int NumMutators; var globalconfig bool bUseHitSound; var globalconfig string ReservedPassword; var globalconfig int NumReservedSpots; event InitGame( string Options, out string Error ) { local Mutator M; local class MutatorClass; local int i; Super.InitGame(Options, Error); // add all the mutators for (i = 0; i < NumMutators; i++) { MutatorClass = class(DynamicLoadObject(Default.Mutators[i], class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } if (bUseHitSound) { MutatorClass = class(DynamicLoadObject("Excessive.HitSound", class'Class')); for (M = BaseMutator; M != None; M = M.NextMutator) if (M.class == MutatorClass) break; if (M == None) BaseMutator.AddMutator(Spawn(MutatorClass)); } } function int ReduceDamage( int Damage, name DamageType, pawn injured, pawn instigatedBy ) { if ( (injured == instigatedBy) && (DamageType != 'SpecialDamage') ) return 0; if( injured.Region.Zone.bNeutralZone ) return 0; return Super.ReduceDamage( Damage, DamageType, injured, instigatedBy ); } event PreLogin ( string Options, string Address, out string Error, out string FailCode ) { local string InPassword; if (NumReservedSpots > 0) { Error=""; InPassword = ParseOption( Options, "Password" ); if( (Level.NetMode != NM_Standalone) && AtCapacity(Options) ) { if ( (NumPlayers - MaxPlayers) >= NumReservedSpots) Error=MaxedOutMessage; else if ( ReservedPassword !="" && (caps(InPassword) != caps(ReservedPassword))) { if( InPassword == "" ) { Error = NeedPassword; FailCode = "NEEDPW"; } else { Error = MaxedOutMessage; FailCode = "WRONGPW"; } } } if(!CheckIPPolicy(Address)) Error = IPBanned; } else Super.PreLogin(Options, Address, Error, FailCode); } event playerpawn Login ( string Portal, string Options, out string Error, class SpawnClass ) { local string InPassword; local int NumReservedPlayers; local playerpawn NewPlayer; NumReservedPlayers = NumPlayers - MaxPlayers; if ( (AtCapacity(Options)) && (NumReservedPlayers < NumReservedSpots) ) { InPassword = ParseOption( Options, "Password" ); if ( caps(InPassword) == caps(ReservedPassword) ) { MaxPlayers += NumReservedPlayers + 1; NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); MaxPlayers -= NumReservedPlayers + 1; } else { Error = MaxedOutMessage; return None; } } else NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); return NewPlayer; } 9Ý{RTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6 }³««ùÝ—¬ž •’ÔûR…àÀñ´¹ “ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,“ÕƒC,†]Excessive.ExcessiveTimeÝExcessive.ExcessivePowerupsÝExcessive.EnforcerUpgradeÝExcessive.HammerUpgradeÝExcessive.BioUpgradeÝExcessive.ShockRifleUpgradeÝExcessive.PulseUpgradeÝExcessive.RipperUpgradeÝExcessive.MinigunUpgradeÝ Excessive.FlakUpgradeÝ Excessive.RocketUpgradeÝ Excessive.SniperUpgradeÝ Excessive.TranslocatorUpgradeB" 9Ó=]Excessive AssaultV class ExcessiveAmpMsg extends CriticalEventPlus; var(Message) string AmpMessage[11]; static function string GetString(optional int Spree, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { return Default.AmpMessage[Rand(11)]; } static simulated function ClientReceive( PlayerPawn P, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { Super.ClientReceive(P, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); P.PlaySound(Sound'Botpack.Pickups.AmpPickup',, 4.0); return; } èI q0к ¨-å(=‚w£*˜£Í%.…Šnb›:.…ŠÞ% ‡›:.…ŠÖ%v!+ ÿÿÿÿÿÿÿÿÿÿ˜Ú_ZÚö x Ûk^Ûø.Îä ÎÈÙã.íø ä WÈÙâ @øøò ãøÄ âøó4Bø× 4Bøí ø-÷ 'ø-õ'K ÝkV”Ýþ.àä àÈÙþ}'þ-Ð'à.ÁþPú VÀàèþ ç5k!�æÞ.êÔä ê A B›C*CÞmÕ.àä àÈÙÕ}'DÀÙ÷ ŽñÕPïDô ÕPà TkÿÙÿ Žÿ ÕPãkmªÙý Ž,Õ!m,Õ!C,Õ!E,Õ!A,Õ!@,Õ!B5%›–5,¯þ5Õ!›ÕPm5Õ÷|W5ÕðÕ.ªÀ6-ÌÕ ok{Ü)Ü€5 ¼,ÜExcessive Deathmatch)Ü€ ,ÜExcessive Team Deathmatch)Ü€ [,ÜExcessive Capture the Flag)Ü€ ¥,ÜExcessive Domination)Ü€ ì,ÜExcessive Assault)Ü€ =,ÜExcessive Last Man Standing)Ü€ ÿÿ4)^ServerListTitlesW5ÕUBrowser€5ë ¥5‹ qclass EnforcerUpgrade expands WeaponUpgrade; function ModifyPlayer(Pawn Other) { local Pawn P; local Inventory Inv; Super.ModifyPlayer(Other); for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('Bot') || P.IsA('TournamentPlayer')) for( Inv=P.Inventory; Inv!=None; Inv=Inv.Inventory ) if (ExcessiveEnforcer(Inv)!=None) { ExcessiveEnforcer(Inv).SpawnDouble(); break; } if ( NextMutator != None ) NextMutator.ModifyPlayer(Other); }  D@ Sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ F U§¸ »=, •’ÔûR…àÀñ…àÀñ…àÀñ…àÀñžÌj@£�¿K®žÌj@£…àÀñ“ÕƒC,†™]Excessive.ExcessiveEnforcer,class BioUpgrade expands WeaponUpgrade; ýn ù`^w.‘n*D%^–D,TþD.‘nÈó!Zì=D ¥D l€ÂN H:2e-å'#r£*2.…ŠT£,q!-Ì'#Hcq!-Ì' ñCOeaJ k,Õ!z,Õ!y,Õ!|,Õ!w,Õ!v,Õ!xbùñ-O òh <ïöÔä P A ACÈB x x x p ÿÿÿÿU p ÿÿÿÿdp þÿÿÿJ p ÿÿÿÿ| p þÿÿÿk j úÿÿÿO R üÿÿÿp þÿÿÿK p ýÿÿÿWx ,p þÿÿÿp p ÿÿÿÿFp þÿÿÿR p ÿÿÿÿOp ýÿÿÿ@ p ÿÿÿÿS p þÿÿÿJ p ÿÿÿÿ} p þÿÿÿY p þÿÿÿ{ p ýÿÿÿOp ýÿÿÿFx .p þÿÿÿT p ÿÿÿÿG K üÿÿÿt p ÿÿÿÿH R üÿÿÿw R üÿÿÿS p ÿÿÿÿop ýÿÿÿZR ùÿÿÿwp ýÿÿÿzp ýÿÿÿip óÿÿÿz T ÷ÿÿÿxK ùÿÿÿDK üÿÿÿ p óÿÿÿi j úÿÿÿv p ýÿÿÿp þÿÿÿM T ûÿÿÿ] p þÿÿÿo K ùÿÿÿQp ýÿÿÿVT ÷ÿÿÿPY ñÿÿÿz p ÿÿÿÿzp þÿÿÿW p ýÿÿÿ[R ñÿÿÿzp ýÿÿÿXp ýÿÿÿhR îÿÿÿQ p ýÿÿÿdp ýÿÿÿDp óÿÿÿ| R íÿÿÿqK ûÿÿÿY Õÿÿÿrp óÿÿÿv T ÷ÿÿÿvk âÿÿÿ] W ôÿÿÿK T îÿÿÿR R ëÿÿÿy Y ôÿÿÿI Y ôÿÿÿXp ýÿÿÿcT ùÿÿÿu J ñÿÿÿx W èÿÿÿz Y äÿÿÿ'p æÿÿÿRp æÿÿÿRk üÿÿÿ` R çÿÿÿ{ p ýÿÿÿi k ïÿÿÿ([ ëÿÿÿE Q ÚÿÿÿY[ ûÿÿÿnY ñÿÿÿ| K îÿÿÿDk úÿÿÿ{M úÿÿÿp T üÿÿÿ[J ÖÿÿÿF p ýÿÿÿa[ ûÿÿÿqp þÿÿÿQ p æÿÿÿLp ýÿÿÿm p æÿÿÿdp ÿÿÿÿpR ôÿÿÿ\W ùÿÿÿuk ñÿÿÿGp óÿÿÿw p ýÿÿÿQ k ÊÿÿÿCp ýÿÿÿj Y ûÿÿÿa [ âÿÿÿy p ýÿÿÿT R îÿÿÿT T ÜÿÿÿWR üÿÿÿ_ R îÿÿÿA W ôÿÿÿw Q ïÿÿÿB Q ßÿÿÿtR èÿÿÿy p ýÿÿÿ} K üÿÿÿNR ¿ÿÿÿG [ âÿÿÿNR üÿÿÿu x hk èÿÿÿ"k ùÿÿÿp ýÿÿÿ~ Q ùÿÿÿtT ßÿÿÿ W Äÿÿÿdj üÿÿÿb T ùÿÿÿX k üÿÿÿh R ~ÿÿÿr o Ûÿÿÿ]T ÞÿÿÿV p ýÿÿÿ^ o çÿÿÿ`o ôÿÿÿTR ùÿÿÿYR ûÿÿÿ{ Y ßÿÿÿ1W ôÿÿÿZT ûÿÿÿwp ýÿÿÿk [ üÿÿÿo K üÿÿÿx W ôÿÿÿ[Y îÿÿÿP R ÚÿÿÿM T èÿÿÿu p ýÿÿÿA R ÞÿÿÿA o Þÿÿÿ;T ùÿÿÿi o ÄÿÿÿNp ýÿÿÿf x {[ üÿÿÿmo èÿÿÿT îÿÿÿl [ ùÿÿÿVT ÛÿÿÿWW ôÿÿÿJ k ±ÿÿÿUJ ñÿÿÿw J ñÿÿÿv o ÜÿÿÿEk ÊÿÿÿAp ýÿÿÿr W Ìÿÿÿ}W ùÿÿÿET Ûÿÿÿ\ W üÿÿÿa o ôÿÿÿ`T Üÿÿÿ\ o ôÿÿÿo ôÿÿÿVR ßÿÿÿrp ÿÿÿÿc p ýÿÿÿv k üÿÿÿ4[ âÿÿÿMR ÅÿÿÿD p ýÿÿÿH T üÿÿÿ?x bk üÿÿÿW çÿÿÿ| p FÿÿÿL R ™ÿÿÿM x ýÿÿÿSp óÿÿÿLW ùÿÿÿtk “ÿÿÿAp ÿÿÿÿ{p ýÿÿÿl k ÊÿÿÿFp ÿÿÿÿpW ùÿÿÿmT ±ÿÿÿCR ßÿÿÿyQ úÿÿÿ R ôÿÿÿs R ùÿÿÿ]R ûÿÿÿpY äÿÿÿ3R ûÿÿÿ| R üÿÿÿH [ üÿÿÿuo çÿÿÿp ýÿÿÿP R ñÿÿÿtR ñÿÿÿpT –ÿÿÿe p ýÿÿÿN T ùÿÿÿn T ±ÿÿÿBT ëÿÿÿq M ùÿÿÿXW Ôÿÿÿx p ýÿÿÿk T ùÿÿÿo o Þÿÿÿo Ûÿÿÿp ÿÿÿx gT ùÿÿÿs J ÃÿÿÿR o çÿÿÿ;Y ÃÿÿÿWp óÿÿÿJo ùÿÿÿ0k íÿÿÿ8p óÿÿÿDW ëÿÿÿGR ëÿÿÿC p óÿÿÿu W ÌÿÿÿxR ûÿÿÿi W ùÿÿÿxp …ÿÿÿl k iÿÿÿCT üÿÿÿ~o Ïÿÿÿ;o Ïÿÿÿo èÿÿÿ5p ýÿÿÿo p ýÿÿÿq p ýÿÿÿZ W èÿÿÿW W èÿÿÿZ [ üÿÿÿtT Þÿÿÿ\ Y ®ÿÿÿmp ýÿÿÿs p ýÿÿÿh T –ÿÿÿf Y îÿÿÿ`Y ˜ÿÿÿxY Çÿÿÿ\ J Ãÿÿÿ[ T çÿÿÿUT ßÿÿÿ p ýÿÿÿf T ÈÿÿÿC W çÿÿÿ} Y Õÿÿÿ}p ýÿÿÿg p …ÿÿÿm p ÿÿÿÿb o ˜ÿÿÿNp …ÿÿÿn o èÿÿÿ`Y Õÿÿÿ|k “ÿÿÿCp ýÿÿÿe o èÿÿÿVp cÿÿÿIk ÃÿÿÿRY ÃÿÿÿXp cÿÿÿH k ÿÿÿ_k ¿ÿÿÿkk üÿÿÿ k ™ÿÿÿkR ÚÿÿÿPk ÃÿÿÿUR ™ÿÿÿ[p óÿÿÿm R ßþÿÿGR ¿ÿÿÿSp ýÿÿÿb R üÿÿÿd p ›þÿÿj Y �ÿÿÿIT ûÿÿÿsR íÿÿÿhW ˜ÿÿÿyW üÿÿÿnk îÿÿÿok Äÿÿÿ4p ýÿÿÿn T üÿÿÿ{k ÿÿÿk »þÿÿeo Ïÿÿÿ`o ÏÿÿÿVk Þÿÿÿ/o ôÿÿÿ;p ýÿÿÿs k !ÿÿÿk gÿÿÿo ÜÿÿÿVk YÿÿÿW îÿÿÿ`[ �ÿÿÿt p ýÿÿÿc p ýÿÿÿE p óÿÿÿBR žÿÿÿeR üÿÿÿMk .ÿÿÿp ýÿÿÿt p ýÿÿÿh p æÿÿÿlW îÿÿÿao Èÿÿÿ0o ŠÿÿÿZp ýÿÿÿWp ýÿÿÿr M ùÿÿÿ%p ýÿÿÿC p ýÿÿÿBp ýÿÿÿa p ýÿÿÿO k iÿÿÿFp æÿÿÿKk dÿÿÿFp ýÿÿÿVR ±ÿÿÿEp ýÿÿÿB p æÿÿÿnT îÿÿÿS R îÿÿÿQW Šÿÿÿc k dÿÿÿAT ùÿÿÿk Y pÿÿÿlk çÿÿÿ k Ûÿÿÿ/k ·ÿÿÿ/k ôÿÿÿ/T ÔÿÿÿLk ßÿÿÿ_ p ÿÿÿÿD k çÿÿÿx Vo Äÿÿÿ^k ÿÿÿp ýÿÿÿI p ýÿÿÿ] K Ìÿÿÿd k Pÿÿÿk òþÿÿbk Çÿÿÿ/k Èÿÿÿ/k wÿÿÿk ÿÿÿk #ÿÿÿFT âÿÿÿHk “ÿÿÿFR Üÿÿÿp R ùÿÿÿXo <ÿÿÿZk xÿÿÿ4k gÿÿÿp ýÿÿÿV k wÿÿÿp ýÿÿÿd k íÿÿÿQp ýÿÿÿK k Ïÿÿÿ/Y ®ÿÿÿd p þÿÿÿ[ Y –ÿÿÿg k ÿÿÿk ëþÿÿ[ üÿÿÿH p cÿÿÿzp þÿÿÿx k çÿÿÿ:k ÃÿÿÿQx k ÜÿÿÿFR ùÿÿÿ[W üÿÿÿAR {þÿÿQT ïÿÿÿm R ùÿÿÿZk Çÿÿÿ:W ôÿÿÿL k Šþÿÿkk ÿÿÿoT ïÿÿÿl p ýÿÿÿU W âÿÿÿOk ïþÿÿK ûÿÿÿ} W ÅÿÿÿG J ëÿÿÿg k zÿÿÿk Yÿÿÿk ÿÿÿvk Ïÿÿÿp ýÿÿÿ\ J ÚÿÿÿJ ëÿÿÿI k Ãÿÿÿ^J ÚÿÿÿJ [ üÿÿÿIk !ÿÿÿk íÿÿÿuk úÿÿÿT ûÿÿÿz k îÿÿÿik gÿÿÿHk òþÿÿaQ üÿÿÿsc þÿÿwk çÿÿÿJ Úÿÿÿ{J Úÿÿÿ@k …þÿÿ7k ñþÿÿ7p æÿÿÿkR ùÿÿÿYW ²ÿÿÿdM Mþÿÿ}J ÚÿÿÿZW âÿÿÿJk ñþÿÿDJ ™ÿÿÿ_ W ûÿÿÿr R ûÿÿÿ|k vÿÿÿR Šÿÿÿb J ÚÿÿÿK K âÿÿÿHk ÿÿÿk Èÿÿÿ:T èÿÿÿ^ W üÿÿÿp k ÈÿÿÿIT ïÿÿÿq p ýÿÿÿX T ùÿÿÿ^ R âÿÿÿKW xÿÿÿgk …þÿÿDW Öÿÿÿvk ¸þÿÿ7T ùÿÿÿQT ßÿÿÿ$W ãýÿÿ~k Cÿÿÿ\J Cÿÿÿ=k Cÿÿÿak Ïÿÿÿ R Úÿÿÿ\k ßÿÿÿoY <ÿÿÿ|k ÛÿÿÿHT Åÿÿÿ~K ÈÿÿÿB k aÿÿÿk £ÿÿÿHJ ëÿÿÿF j ‚ýÿÿip ýÿÿÿ` X ýÿÿÿ@ k Üÿÿÿk çÿÿÿ"W üÿÿÿA Y ·ÿÿÿSY çÿÿÿT J çÿÿÿt k ÚÿÿÿkR ¿ÿÿÿL J âÿÿÿc k ëþÿÿ#T ÅÿÿÿE k zÿÿÿQ ôÿÿÿb Q ôÿÿÿ` k ôÿÿÿHW <ÿÿÿJR ÚÿÿÿVx þÿÿTk eÿÿÿlk eÿÿÿDk eÿÿÿ7k xÿÿÿ7x @ Y xÿÿÿik úÿÿÿyR üÿÿÿW k íÿÿÿyK èÿÿÿZ J ÚÿÿÿV W ëÿÿÿe k šþÿÿDk ®ÿÿÿx ýÿÿÿ` k Ûÿÿÿp ýÿÿÿn k ÇÿÿÿW üÿÿÿ^k wÿÿÿ k ïþÿÿ Y çÿÿÿSJ �þÿÿ~ p ýÿÿÿ[ R ‚ÿÿÿf p ýÿÿÿY W pÿÿÿkk Äÿÿÿ k ®ÿÿÿ4k ôÿÿÿKk ôÿÿÿp æÿÿÿvW üÿÿÿzk ÿÿÿQ Èÿÿÿj k ·ÿÿÿ<k ·ÿÿÿ-W Ôÿÿÿbk Üÿÿÿ k Üÿÿÿ p æÿÿÿek ëþÿÿ p æÿÿÿwp ýÿÿÿ_ Q ôÿÿÿa R ÿÿÿjk ¹þÿÿ k Þÿÿÿk aÿÿÿk aÿÿÿ p ýÿÿÿW k ±ÿÿÿkk ïþÿÿ#k aÿÿÿlk aÿÿÿpk çÿÿÿ-k çÿÿÿ<k çÿÿÿeW üÿÿÿT k ÿÿÿR ÿÿÿB k wÿÿÿk wÿÿÿk ÿÿÿhT ²ÿÿÿ\R ßÿÿÿok .ÿÿÿR ¯þÿÿx ýÿÿÿAc Éýÿÿ~ k Yÿÿÿk YÿÿÿW xÿÿÿhW :ÿÿÿC k Çþÿÿk Çÿÿÿ<o Çÿÿÿk Þÿÿÿ-k gÿÿÿW ÅÿÿÿF k ÅÿÿÿjR ²ÿÿÿck £ÿÿÿ-k £ÿÿÿ<k Èÿÿÿ-x ýÿÿÿcc ¸ýÿÿH k Ûÿÿÿ<k ÿÿÿk ÿÿÿk zÿÿÿlk zÿÿÿpk zÿÿÿ k zÿÿÿk zÿÿÿk Ûÿÿÿ-M ßÿÿÿtk Pÿÿÿk Pÿÿÿk ·ÿÿÿT ²ÿÿÿak Ëþÿÿk âÿÿÿnk Oÿÿÿk Oÿÿÿk Oÿÿÿk OÿÿÿR ñÿÿÿD k Rÿÿÿk Rÿÿÿk Rÿÿÿk Rÿÿÿk vÿÿÿ k vÿÿÿk vÿÿÿlk vÿÿÿpk vÿÿÿXk vÿÿÿk Ïÿÿÿ-k Ïÿÿÿ<R Úÿÿÿ]k üÿÿÿT ²ÿÿÿOk Íþÿÿk îÿÿÿNk ÎþÿÿR ïÿÿÿY R ²ÿÿÿbc ÿýÿÿN R ÚÿÿÿZk eÿÿÿk eÿÿÿW ²ÿÿÿ~d AÿÿÿV d AÿÿÿW d AÿÿÿX d AÿÿÿY d AÿÿÿZ k ‚ÿÿÿjp wþÿÿhR ÚÿÿÿD T Çÿÿÿuk ÇÿÿÿIk ·ÿÿÿ:k –ÿÿÿ­_@ |â­v@ Jã­@ Xã­h@ fã­Ó@ tã­Ê@ Bä­c@ Pä­d@ ^ä“^llä”eq Xì�úydì�VR  rìµ½U  실F Kí‹ú\  Yí�rfí�<J  tí‹•N Aî–½N  Oj\î–½M  kî”e_ wî–½R  Cï�{r Oï‹{v\ï‹ë] jï�VQ zï™@|Gð�R C÷�÷~ Q÷”½O  _÷�×~ l÷�·~ z÷�~ Hø�f~ Vø�w~ dø›ÏV  rø‹q ø­MQ Mù›ë[  \ù‹ÓC iù‹¤a  wù‹ŒC  Dú‹{I Qú�<O_ú¸damú»`{NÿÝl{I„Œj{Dˆ¢oI�¹tdH–Éjl™–i kž±}^xž¥feV£¤zS{¦›ú~ N¬�ÏCZ¬�¥X h¬�žX v¬�DX D­�¾R  R­›úh  _­�@R k­‹Óxy­�HR  G®›ëu T®–Ï` b®�]X o®‹ÓP}®‹­E K¯�X Y¯‹¤I  g¯‹,E t¯�@Q B°­w{ O°”+e  ^°�`Uk°�6X y°‹Ï_G±”#e  U±�­C b±­f{ o±‹“q ~±”£e  L²­{ Y²‹xh²­÷{ v²‹•vE³­×{ S³‹Pb³�•`  p³–°i }³–&O  I´”ãe  V´­·{ c´‹Esr´”Ãe  @µ”e  Mµ”½P  Zµ�…X gµ–7i uµ›¥} A¶–2i M¶ùhsZ¶–ci M¸–ài Y¸–€i e¸‹žF q¸‹­v¸–¸i M¹‹ŒD Y¹Ðksg¹›ë\ Z»�`Pi»‹ÓA w»–”i E¼�Q R¼È{U`¼–/i u¾�QOA¿›•Y  O¿‹ÓB  \¿–Cg i¿‹•Pu¿›ë CÀ‹•x PÀ‹Ï]]À¼RNkÀ‹Óq y‹Ï^GÖi UËÑq aÖéP  oÛ•_  |Ö÷i IÄ–·i UÄ–×i aÄ–•M mÄ–ØP  zÄ” ]  GÅ”’]  TÅ– P  aÅ”é]  nÅ–i {Å‹•EGÆ–)P  UÆ”Ø]  bÆ­ oÆ–’P  ~Æ�MX  KÇ–ìU  XÇ”)]  eÇ–‰P  rÇ–fi Ç”‰]  KÈ�ÏsXÈ‹…I gÈ‹…F uÈ�…mCÉ‹žI RÉ–wi `É‹ŒvlÉ‹q  zÉ‹I GÊ‹ÏbUÊ‹�q cÊ‹ÓvqÊ‹,fÊ‹,PMË�Ïm[Ë‹]I jË‹,xxË�ÏtFÌ‹ŒPTÌ‹ŒxbÌ›ÏY pÌ‹v}Ì‹¥I KÍ‹]F YÍ�Øo gÍ”ÃW tÍ–ñO  @ΔØe  LΔÃ_ YÎ�ÂTfΔÃ]  tΔñN  AÏ�ÝTNÏ–}O  \Ï‹ŒB  hÏ”’e  uÏ”ã]  BД£W OЋŒE [Дée  iÐ�¾X  vДã_ CÑ”‚N  PÑ”£]  ]Ñ�UA jÑ�‰o wÑ”+]  DÒ�}TQÒ”}N  _Ò›ŒL  lÒ­Œ|yÒ–;O  HÓ�]g TÓ–]v aÓ‹]vnÓ�’o |Ó”£_ IÔ�ýTVÔ‹, dÔ‹ŒA rÔ”ãW @Õ��TLÕ”]  ZÕ‹,I gÕ”_ uÕ”W BÖ‹Žq NÖ” e  \Ö�R  iÖ”+W vÖ� o B×”N  O׋v\×–O  j׋“vv×”ýN  DØ–ýO  QØ–‚O  ]Ø�éo iØ�TvØ”;N  DÙ”#]  QÙ”#_ ^Ù”#W kÙ”‰e  wÙ”)e  DÚ�aR  QÚ�{R  ^Ú’rxkÚ�…g cá”+_ pá‹…v}ዌq KⵌG Yâ�)o fâ­ sâ‹­xBã�qPã‹­f^ã�`c lã‹­I zã‹vF Hä–.^  Vä�c bä­Ó|oä‹F ~ä�¤pLå›õZ  Zå‹Þq få�rtå›{Y  Bæ‹{F  Næ��U [æ‹Ïxiæ›ëf wæ‹ÏPCç‹•^ Qç–ìi _ç�¡X lçµÓG zç›ÓL  Gè�ÏD Tè–Þi aè‹Ïvnè�Ïc|è‹ävJé‹�x Xé�”X eé‹�Ps鋞vAê�°X Oê�UR ]êýGskê�ÆX  ^ìÌugkì‹�vRîÏEs`îAQISðµÏM  \ò‹ŽPhò�ÝUvò‹¥vDó­NRó�™R  bó­Toó�X ~óßt Lôßð@ Xô–ì\  dô–Þg qô�ÛX }ô�Ñe Kõ‹ÎF Xõ�ËX fõ‹&F  tõ›&g  Aö�ÁrNö�;X \öˆô<DHjö¯Û�N-r÷ˆí�4)_ø�±mHù�¬X Vù‹ÓD dù‹ÓE  rù‹ŠI ù‹�\ Mú�oR [úµô@  iú�TX  uú‹­F Bû–ì[ Pûµì@  \û��Uiû�@X wû­<A Eüˆé 8YSü”‰W lý­ S yý�:R  Hþ”)W Uþ�/X bþ­)Q pþ”)S þ”#K Lÿ�UYÿß@ gÿ” W tÿ›o A€­ Q N€ß}@ ]€�}Uj€” S x€”K E��ýUR�ßý@ `�”éW m�­éQ z�‹…PI‚”#F W‚”éS c‚”ãK p‚‹¥V}‚‹…xKƒßÝ@ Yƒ�áR  fƒ”ØW sƒ­ØQ @„�àX O„”ØS ]„”ÃK j„�ÂUw„ßÂ@ E…”’W R…­’Q _…”’S n…”£K {…�tR  H†�,X  U†ß�@ b†�¸X o†‹­P}†­‰Q K‡�­X Z‡”‰S h‡”+K u‡‹“PBˆ�cX Pˆ�2X ^ˆ��R  lˆ‹“x yˆ­^F‰‹Žx U‰”½k b‰”½Q  n‰›,O {‰�€X HŠ�ÒR  VŠ�7X cŠ›{Y  qŠ�1R  ~Š�;e K‹‹,F X‹‹Ex f‹‹Žvs‹‹EPAŒ‹EvOŒ‹Eq ]Œ–ÏV  kŒ›Uo wŒ–81 C�ˆÙ8 5O�›˜o DŽ–:I PŽ–ÒI ]Ž–ÞV  jŽ–™I vŽ–qV  C�›HY  O�›So \�‹xh�‹Pv�‹F D�‹I R�–áI `�”fe  m�”×]  y�”×e  F‘µñ9 R‘ÊR^_‘‹ðK }—‹ðI K˜›çY  Y˜–  e˜�ðUq˜–ðR ˜›ÐY  L™‹äxX™‹äPf™”·e  t™�õp @š–}B Mš‹¯I  Zšµ}9 gšÔQ\tšþHgPœÿS\w��ŠmSŸ‹ŠF aŸäDsoŸÌN\b¡×v~¢�oF t¤‹¥F A¥�oS O¥�o@^¥ÈP\m¥”ª I§ß`@ V§‹`K c§‹`I q§–ýB §µý9 L¨�ônY¨�ôKh¨”ý w¨µ f D©›“o P©”M]  ]©”MS i©ñL^v©çINT«À6nb­ÁHvp­íJsf°–�I Y³ènmf³”we  S¶Óms_¶›o R¸–  ^¸”e  k¸µ9 w¸–B D¹” Q¹›®o ^¹µ‚9 k¹èggx¹–‚B _»þewl»–ý  c½”os p½”‚ |½”÷e  I¾ucg U¾”÷]  |ǵ;9 IÈ–;B VÈ”#G cÈ–ñB pÈ”ñ }ȵÜG  JÉ–Â  WÉ�ÁG dɈõ<7LrÉAOk~ÊùNgiÌæMAPΔ} QÕ›�Y  ^ÕÀO\kÕ‹žV G×Õ~gT×”f]  {Ø­Ž|HÙ›ŽL  WÙµŽG dÙ–oy  qÙ–tI ~ÙÄqtKÚ–}  Û”]  LÜ‹ÞF YÜ› o gÜÎPasÜ‹ÞI TÞ›[Y  bÞ�×X nÞ”½a |Þ�Îp Hß‹¡I  UßçLzbß‹õF \á–`P  jáø|bwá–�  YãêydfãÍK^Jè‹,vhéÍsgvéÐM^]ëÒfm{ì›no hï”w]  tï–m  Að÷wgMð–1I tñ”; AòýigNò”·]  uó½JOBô×FsQö‹ˆI  Dø–Ý  Qøö^\^ø›<o zùˆü3"Fú‹)H dúß2l qúˆÁ 3I_~úˆõK5]€ˆÚ8 LR�¯ç8Ea^ƒß2[  „ˆÞ7/IK…ˆý8hT†›1u |‡ˆÌ \+Iˆˆäktˆ›io R‰ˆý3a^‰ˆü8"ŠˆÑ W ]‹‹8H }‹ˆìWUJŒˆäK_�›Jo }�¯ÿ3kI޵.u t�›.o @� _~M�¯Ç.0,K’ˆÂK(w’›Òu _“ˆÛW|l“ˆü0"h–ˆÐ WF—›Gz d—ˆÊ 7<Gp—ˆÝK w˜¯ÒaT™¯É`-u�ˆðk(bžˆÒ 7-GJŸˆÎ Wp$Q ›Rz u ˆê-LA¡ˆÏ W M¢ˆáB gk¢ˆÍ Wl#R¦ˆXYu¦ˆÅ 0-MN©¯Æ7]:[ªˆË \/U«ˆ×ô"D¬›5o f¬ˆÔ\Dr¬¯à7=v®ˆÐ3:ts¯ˆîk5g´ˆÓÅ(@\µ‹]P\¸›jo j¸µju w¸ˆÓ(@C¹ˆÓÓ(@C¼ˆÑÜ\K C¿”eu NÊ‹]xZʈӻ(@hʈÝk h͈çô# Eίå;KeΈÈ#QvpÒˆß#U-fÕˆÄ3xSÖˆâ#^VK؈þ3<paÙµòu QÛˆêz# ]Û›ro }Ûˆí3/IJÜ›o S݈Óû(@`݈҂FG`àˆù/gä›xz Då¯ó6V-PåˆÜ/N}åˆú//KëˆÚ‚Aczë›tu ]í¯õ1;,jíˆý0aVîˆþ6/Iwï–}u @ñˆT]Lñ—Ôj4LióˆÂ.:Guú¯õ6H|€ˆç†'D‚‹FH k‚ˆé‚Crx‚¯ñ1V-j…—j4WW†ˆÜ0HhnœˆÚ ŠCV¤ˆØ7HrY¥›�Y  K¨ˆÃ /jmW¨ˆú/&D¯�Žuj¯ˆÞ6Ax¯ˆý1ay³�ŒuZµ�žmhµß”l wµ‹žxD¶ˆà1/IR¶‹¬H [·‹¥xh·ˆü1"v·ˆèýAcT¸ˆÇ:[w¹ˆÛ ŠiR¾‹žP{Àˆìe^IÁ–�u gÈæýGlsÈë<3_LjÊ8FYRÈ‹¯H k̈á´ẍX´ VÍ›¨o sÍ›qD  Í— j4TLΈü7"`íˆÅ.I\~íˆÆL ,Zòˆâ"Fóˆîidó—µj49Mõˆé 6-LFöˆéíp$R÷¯ö85,v÷ V|bø—¿j4=^úˆÅ}FG[ûˆý7abÿˆê 6<LC�ˆÆ 0<MO‚ˆð ô]\ƒ UDy…ˆÓÜa[ }‡ˆÒÂkRX“ˆÇ .-Ej——Äj49o™‹ÅH hš¯öCZ-ušˆæ}Glb› Y}NŸˆü."K¡ˆÙ ?n9i¡ W~b¢—Ëj4:`¤”½u Z¥ˆÓ¿(@f¥ Z}f¨›Ñz cªˆãíoª�ØuM«ˆÐ1KS[«ˆûí?n¬ˆäí m­ˆî./IK®ˆÓ(@T¯ˆÝÿv%T²µÔu y²—Új47E³ˆÅñFG|³ˆýIGC¸ˆÁÿJ¹ \@i¹—Üj4@Gi»ý@[i‚ˆèñAcD‡ˆï1H]gˆ›áu DŒ—'j4_QŒˆß4/Ip“–Ýu y”ˆæñGlE•ˆ×#R)q˜›óY  Z™—/j4Yf™—j45¨›òo t©ˆéñCrAª–i s¬—ìj4D*@­“agD׈à ßikÝ�éuTàˆá ßGbà—ñj4v-iâ¶bh _�ˆÇô GšˆÃz"fš¯ò6`-H›—ëj4uDu›ˆî z]jàˆÐ;FGGãµru Nçµu Zç—.j44fç—4j4_-eœ —æj4L DÊ ˆÂ;AcPÖ ”‚L  s× ˆâ ß.@Ø ˆÜz nØ ¯ð1?MÙ –ýu LÚ ˆæ;GlXÚ —j4`DÞ ˆÂ 4:tdì ˆÓ¹(@Xñ —äj4:Xô µ®u Rõ ˆò;Cr^õ ˆÔ IPø —ij4EYù —!j4<^ú › Y  Zû � ufû ˆÖ 4|tû ˆðLEp� —1j4` u‚ ˆñLHU£ ˆÔ6 U]¦ ˆïL?r¬ —qj47q­ —0j4Th® ˆóFG|Í ˆúL5CÒ —×j4TxÒ —Ûj49LÔ ›�u EÕ —Ùj4tRÕ ˆÂAcFô —Öj4{ iõ ˆÖ4<Sdÿ ˆØ iw€ ˆ×4-S`… –u s† ˆæGl† —2j4SFkŠ ‹*H ~Ð —'j4G KÑ “pXRÚ —j4@jÜ ˆÓCrjÝ ˆü4"\à ˆæ‚Glzà —õj4~Cfä ˆÕ Jd¨ �)un« ˆý4a|« —j42]­ —j4UO® —3j4\2dÄ —#j48@÷ ›:u x÷ ”  Eø ˆü QUQø —;j4~-fû �‰ud©µ6u r©ˆô2/I~©×vl G«ˆ gts´—?j4Ig¹ˆ÷JDp¼Ãxet½ˆM8CY¿ˆë9\—Cj4u UÃÉBlJΈü'Q{vÑ—j4JqÔÀDn{ñµDu IòˆåJCUò¯ù8V-Xö¯ß2IE÷ˆõì46Nø�KR  DùˆæìuwQù—8j4fKHü—Ój4[nLjðW'IÞˆìxOpÞ—wj4p à—j4Joíˆéì8Byôˆâ2`{õˆì ìM[ø¯ô6;Hhÿ—6j4CIp€‹ZH sɈü6"@Êó KU0^Êó nLsú—Åj4]rLjøÜ7OÞˆõô4>F߈ûôyeDàˆûIViã—ýj48äˆý6awåß”[  Xç›aY  dçˆñýFGqç—Àj4r xë‹¥Pjõˆëªa(xõ–ip  `ö�i@mö�iS |ö�iFK÷”iu Y÷ˆìªbGe÷ˆøÜ0løˆÑ1U\ù‹œH qú—¿j4]~ú—ûj4W[‘¯È'Z,r§ˆÍu7n^¨ˆÜ ŠGLª�vp S¬—j4BY`¬ˆìõoFb…ˆéõiOh†—}j4v-w—îAe mÅ—j4@.RÏíBe Rý—‚j4L.w†ˆï õNeCµÜCk h¶›‹Y  SÀ›§o _À��rkÀ‹�I yÀ‹�F  GÁˆõU?TÁˆÂ´*SˆÖõo?}ˆÁ Ü+|×»j4YgÄˆÝ Š.@Û—¾j46nÛ—¹j4YdÜ—%j46}ò—$j46sóˆéýCriô—!j46[÷ˆõë4eQøˆûëtvú—ºj4:j�›­O d‘—™j4\q‘ÀI`M“—#j4~m”—¥j4?k£—�j4k j¤áKyU®—j4zN±�’uH´¯ÏÙN,V´ˆù DHBµ—øj4E2J·–¿s Oéˆò 7F[é RBað—÷j4>còˆÛí aó—öj4BAôˆñÀ7!Cù‹©F dù�©p rùˆËÀD:ù¯Ê1TCyú‹¬I  |ûˆÀU?Iüˆèíl$HýˆÀaFlýˆã ­ rþ›²z OÿˆÎ� [ÿ–´R yÿ�´UF€‹´I T€‹´K b€ß´@ p€ˆä ­|€›ºz Z�ˆå ­l$f�‹;I  J‚›Íz W‚ TAc‚—¼j49d„ˆó<lv]…ˆè}AcS‡ˆæ ­p$vˆˆõ <"Z‰ˆö <M|‰�ÓuIŒ–Âu WŒˆç ­X!cŒˆ}&4(D�¯|&N-l�ˆ{ÊDHY޵Èu a�‹ËI  m�ˆuÊ7Xz�ˆý­zR’—Çj48L£ˆ&LvD¤—7j4d2z¥ˆêÜHg^دæ&^-EáˆûÔErá›ÕY  wâˆÿÔD6Cãˆé}Cryã‹×I  kæ¯|öN,xæˆ{ÚDHdç¯Ù2;Blè‹ÛI  néˆÓoE{é¯î1`-@ìˆý.bmì—&j4MOî—�j4J\‡ˆÀ 2-gf�ˆ÷w4jMŸ— j46w¢—ôj4}m£ˆûÿKj¶‹äb u·ˆöw7$B¸‹éF f¸�ép t¸ˆý æj{A¹¯ß8A|»‹õH }¼‹ìp J½ˆÜæ @W½ˆçÿ/W¾—öj49F¿ˆß ßC¿“{QBÁˆü2"SÄ [|qĈÏ4amƈÀ^NÉˆè ­Ul̈à X AΗýj4t-YØ›úM  M†ÝTb Y†—ªj4a {�¯è80_\›ˆÚ_({�ˆÛÖk]cžˆÝÔkE@¢ˆçøkv E¤—j4|{±–z w¹ SYCº—Aj46\½ˆý2aR¾›™u s¿ˆÂ7^@Àˆñøej^Áˆò�hMHÃÆCUÄ