*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 PointRegionk | ^+ =, ՃC,X'X'X'X'X'X'X'FoX'X'X'X'X'X'ѸBX'ѸBՃC,ԝXԝXԝXԝXԝXѸBԝXѸB]Botpack.TournamentWeapon@|GmRI M@,KO y L @2(Kt@t@ѸBt@t@ѸBѸBѸBt@ѸBѸBѸBXu6FoFoԝXԝXԝXԝXԝXXu6FoFoFoj@t@t@S"-%cXd@Z`VSLqeRr@LLz B d 2.2Ը鶜ѸBԝXL]ԝXԝX}M}MԝXԝXԝXԝXԝXFoFoFo%zt\f P `2/k@.] "R!ەR!& .;R!ەR!& .;ԝXԝXԝX~$DYV z l20ۙVCpn;7ԝXԝXԝXԝXFo%wYYX[Q Y j251}WhƜѸBԝXԝXi1Ni1Ni1Nq]1q]1q]1wAwAwA펜ѸBԝXѸBѸBѸBԝXԝXԝXԝXFoFoXu6sBƅԝXԝXFo%aqYd z o22$CjaRL]ԝXFoXu6ѸBѸBjajaԝXԝXԝXԝXFo%XYDXkr t t23 anFoѸBԝXԝXԝXԝXԝXԝXFo%c{ a j 24ԝXFoԝXѸB „ԝXԝXԝXѸBԝXԝXԝXԝXL]FoS"P%dqXfEX y }26G.ѸBѸBѸBԝXԝXL]ѸBԝXԝXFo%}qRqf27W}ťyO_ԝXԝXѸBԝXԝXFo%IYAXfN e z28&&]ԝXԝXԝXԝXԝXԝXѸBL]L]L]ԝXԝXԝXXu6ԝXԝXFo1"?YsaF Kt glAe*ibw@IUfo@[gU@Q~H}JWwF@ITy@]@G@^kK h#i1NZ $@D$$D $B1"_^zCU k#q]1sB $@D$$D $B1"_~ N{W R i{;wA726R  $HD $BvY)CCb|R#ARwq  R !t"ڄԝX $BhXtk\Gu`@@@cD@Q{x@|THr@Jq@kq_xvmoF]dFWmnitW%wppVbBS@@l@v@po@w@Di@+s@f@@Xb@>Y@j@Du@~@\~@DzN@Q` B@_w@J^@O^@@QZ@@f@D[@i@D@@VP@DU@p@@{@S@l Jr"'uN˒jajajajaԝXԝXԝXRRԝXԝXRԝXԝXԝXRjajaRԝXԝXԝXjajaja $Bb@ccU O|anGx UrIWdCPNKqOFT:rPDsu[` ]ISG;a7 $"E$$/E $A?$ff@s u2c1552X'"3",]PE;esjQ $"E$$/E $A?$ff@AaTQ#foFARwqԝX_ԝX $aD $4B1"0uEb h DkDo]NM^}zDd=za/!R ;w.z-8 tENJy4La@@( nA}zBG@Xb @v W8">ZW)wO*gWO9gW|Xw* 8W Z@u S@xn Y@Q@b lO@JN LB M@c@B VF@n h@@P@_@g`}L@N kT@b@GzV@_N@U@Zo}x R\@M@Cjh @F@\lftJhPRSnY 6$-'-' Yq!E t D IBj adc_ #@h@ @|@~o RjƿplFo]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.pklohr!@xM@OF Q 6y+:0Y&VH2z.vx'"3"dLh S 6{8&|ND;~P\G $"E$$/E $A?$ff@s J N 6X> w&g q;@0}en $D $ BtjAC] _ P 6E \ܯ& @g@GHKh@ELJ @T@Q@O d L 6S9·h&D BI2TXu«*7`7`7`?{9ŋT,.y ^ AH6 VͤH9ŋTc1Q`zZc1Q`c1Q`c1Q`c1Q`c1Q`c1Q`c1Q`,.Y J6WOJwS,.E= #excessiveE  #utgamesE #utchatE #utmodsE  #utlevelsE #uthelp[ \ `n"YqAk7yrүԝXԝXԝX $D$$D $B?$`@mZM PI$@Z m"[Xѯn; $D$$D $HB1"`[&W"@d@_` @H G@G g2d>_'"3"~ | pe"fq … $aD $B1"8`@e @@uu Uc ::$"4kͰuN˕RFoCL]L]RL]L]ԝXԝXԝXԝXԝXX'L]$?Q Q Q Q Q hZM PeSq2Ij@m@md@@ip @@@qy{Q7">o$b>-'aRQua!Kq!^ AhZO#vfARwqԝX $DfN2w|#e'"3"bKM6"xGo2o + 7`7`7`7`7`?{~7`~?{~۪~?{~۪~?{~۪~?{~۪~?{~۪~?{~۪~?{~?{V,.Z].-Excessive.ExcessiveBrowserUpdateServerWindowv @Et v O 6{ZXĝUJ&b ~2}i'"3"df@@AR D~ h q#Dϙ,A $E $HB1"`[$?[^@IeP2I|Ytsl'"GY@^@L2P8~܌̅,.L]Excessive Server BrowserusS ^|+SB9) $BxE zyU\}ylTRRԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXt?$@?K c K 6VHh&jp s2XnN"W'"3",q S M 6Y%삦h&D xf ZٍenR •RRRRR{ "2Z@g w"^a$/ $E$$Esn @L i2aE5b'"3"dt@Zo Jc-Žeo,G]www.planetquake.comF]unreal.epicgames.comQF;dU $"E$$/E $A?$ff@i` u ^2g=wj" p iHI Gb.. WjmJ 6j6m. !$tIJD0@((iJիH?j?իH?m?W9i?'Ww.F\OiJ,%\J?,a  J?,`WPiJ:w\O9jm |!w*  x@ $o-#w*J'$ff?.a!X>L=b?::$q!V'( XQ ELaC?,.a!Jfff? <W _/ @r*M.2rM*_ WA hfw.A*h%^h,Th.A!z=h h$ M X j? i Z S  Ki`^w.K*f%^f,Tf.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.ExcessiveBioRifleR S 0, m JG a . SRPa 6a6a@6a6aT 6S6R6Pa Ta @ H "  R H 6   N <'; $ff?.a!C@L= }  k C PLw*aL>(aE&Iea^?,?-:.%% !@-q!5:.%%r.*.=A !@a!r33s@L= @ 4K X `1^    l - ;$?.a!C AL=  T p{ -' o -6B$@.a!fL@ ף<  O P   ` w r*2.&q!;-'-'a/!.- ff&??A ?,??@@I `  lv -' `X ur*`.Ia`Is.IY>Br.]--Y  L -C=a! 33??L= $ff@ \ {]   [ d {  * KSf?Kf?fr.* L>q!]:.%q!] JtmIa lE:;s.rEa  ltPtwE wE wE*Ea/! L>.E{.CSR, , L>S @E3 R.lի?RCSQa  lt?, QQ?,pBpB`jGlt?,  uz !w*   (+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  . g b (+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  . (+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  . } f \Y ` p\hostname\  pp \hostport\Si pp \maptitle\ pp \mapname\V~V.vV3-r'zExcessiveDeathMatchPlusDeathMatchPlus3UzExcessiveCTFGameCTFGame3zExcessiveDominationDomination3zExcessiveTeamGamePlusTeamGamePlus3zExcessiveLastManStandingLastManStanding33zExcessiveAssaultExcessiveAssault pp \gametype\ pp \numplayers\S pp \maxplayers\S p \gamemode\openplaying pp \gamever\ pp \minnetver\ p \   @R(+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  . v J  r a #( C M ; 0w*aL>(B&IL>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] ] [Su!"r*2.&-'-'  @C?,.#[q!q!0 m h^!OPhd,@%~M_ n L=$-' @ s #A ( x ~C/ @r*v.2rv*C y (+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  . i\FwZ\Zb%beLbi $w$*xr$L$$Rr$*aLbX-cLExcessive.HitSound $6w$*r$L6$$Xr$*aL y Al S s V=x LG-q!5hw.*Rr.*.$h.$t.rt**q! :t%+q!0 Ga>LLL>b??&zD\C?W ..c*!j a U a  "@aq! { }L w EA3pa"rL\ [!6%D6L -%E[L\ v^ ` ;ie Ih`^w.I*l%^l,Tl.I!a=l l F X/^V@r*B.2rB*X ^ Tq w*Jsw.*.ML#CaCB.W$@.a!fL@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@ch?&w`*`@`Tpծ>>xծL>L>cծ>?h?, rea  ^_P_we we we*e( ,W.^`Fxva  ^_?, vv?BB`jG^_?,  S G R(aq=> N k }CwI Z\ ZjN\PasswordzNGZ&J}\q{Z&q*J}\q{J  MVLclass 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 6c6o6p6+66+B6+6 6+c6+o6+p6+X 6+c6+o6+p. !NyD'-z:.%:.%p. !ND'-zC. !NXD'-z6p 6p6C 6paO paO XCaO y  O p 86:.%%* I H0b.. QhE_ 6Q6h6E.& S@_%'-A >a _  gjq9ow*7|throw_translocatorS.w*7|throw_translocatorS.a/!- 'g 6d6]6[. . Sg%''. d][a g g0w*-' a/! aT.g7q!0 | * _W P2fr*2.d&-'-'b.. gCT a  !Tg?,"TT6g66C. STD'-a S T#Pq! \ `^w.\*u%^u,Tu.\!W=u u y|d V m]/'@r*l.2rl*] gT r " f TA3Va"rZJ x!6%D6Z -%TxZJ a <:X[| r<`- w*a  amPm|a  amPmYYw< w< w<*L>^?,<+ .a;E^<<-<a/!da  am?, Y<a  @ B  M v5 '-r.*q!F-?%q![- ,̌?-(- ,* u!K&-' X d eEw*Jsw.*.ML#CaCB.W$@.a!i33s@L= ] HGGi%UBHPassword::$ HyiU{h{BhzBUUNEEDPWUUWRONGPW>uUHuUU Q <=Ja!d33s@L=-' t ;Fc8r;* r; r; r* g ggs?,r;;a/!p8 D?,g.s@jga;; D?g.s`Fjga;-;a/!da  sB?,  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 "  WI1pR.bRR nz}G R}R !$tIGD?,((n9G?'n|RFAGGJAG?,CC,a ^ G?,bnPGC%JC:|AGnz} b G-8 b( p f "1y U _!Ekiw._*]%i],_]._!E=]] ] /class SniperUpgrade expands WeaponUpgrade; t - Ba!OY@L=$.@ pp -' mI5  q Vu ' =, .]Excessive.ExcessiveSniper3class ShockRifleUpgrade expands WeaponUpgrade; ybFcZbtI%Iv`Iy !w!*xr!`!!Rr!*a`IX-x`Excessive.HitSound !6w!*r!`6!!Xr!*a` ym`^w.y*o%^o,To.y!i=o o  r <B$.@a!O@L=  V L= $ff@  j Cr.*w*%+q!X-q!:.%8 :.%8#+q!  @U| q =, 1]#"Excessive.ExcessiveRocketLauncherra C3%- `MdG;- vzbasic- Gzinfo- \zrules- mezplayers?%- ~b- Kzstatus- G%- \%%- mH- m%- ~zecho- p\echo\dzsecureFp\validate\Gd- F6zlevel_property- ]d~zgame_property- \dzplayer_property- SdpUdpServerQuery: Unknown query: +- UdpServerQuery: Error responding to query.G Ek US|E>.EB-|D?|?S>|w* w>w* w>>#>|>|U>a  @EbL>w  E c-"$.@@a,fff??L=w.*).. /class RipperUpgrade expands WeaponUpgrade; |~ Z9B{GG~%bv{Password::$ {y~b{M{vMzvbyNEEDPWbyWRONGPW>ob{oby  @ YD 2g =, 0]Excessive.ExcessiveRipper`A "  bn[*bsbfq!`  PWG ^ͷ =, 2]Excessive.ExcessivePulseGun0class MinigunUpgrade expands WeaponUpgrade; @(+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  .  H ZK  =, 3]Excessive.ExcessiveMinigunQ ~ kq UK'J'$=.aU@@L= q,@?q*?% P L  E [/h @r*J.2rJ*[ (+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  . Y U v q!5' -class FlakUpgrade expands WeaponUpgrade; qgFgZghJ%JpZJq  w *xr Z  Rr *aZJX-iZExcessive.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 @\ M6YR!DەR!ەRR!ەR!ەR!ەRRR!ەR!ەR!bk"W fA2^a"r}i i!6%D6} -%fi}i O \H.ea/!O.W?.M̾#"DC>Cw*J- $@.$@.-a\\@L= jTclass 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 ] AGFw%_YAPassword::$ Ayw_{|{Y|zY_FNEEDPW_FWRONGPW>f_Af_F oRo 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 FP FwaPPasswordza|F&kePDbF&D*kePDbk 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,RRj@ѸBѸBѸBѸBѸBѸBѸBѸBj@Ճ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 b6 q  述DR ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,]Excessive.ExcessiveTimeExcessive.ExcessivePowerupsExcessive.EnforcerUpgradeExcessive.HammerUpgradeExcessive.BioUpgradeExcessive.ShockRifleUpgradeExcessive.PulseUpgradeExcessive.RipperUpgradeExcessive.MinigunUpgrade Excessive.FlakUpgrade Excessive.RocketUpgrade Excessive.SniperUpgrade Excessive.TranslocatorUpgradeB" 9=]Excessive Team DeathMatchh ( 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 { Cr.*w*%+q!X-q!:.%8 :.%8#+q! `lFmZljH%HnXH` w*xrXRr*aXHX-mXExcessive.HitSound 6w*rX6Xr*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%D6V -%g`V_ c@ o %-(-( u ( _A 2-(  } [GGP%c^[Password::$ [yPc{m{^mz^c]NEEDPWc]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*Fre r@FD.vwD*DM̾#C>C"D`e ծ6?,r6b6a w.H*,.Hj.a  eF?,PFwH wH wH*H+ .e`jGr (+r  /4r  8Nr  hr  7r  4r  2r  0r  3r  6r  1r  . 0class ExcessiveShockCore expands ShockCore; C ]Cv= OM OPXMPasswordzXmO&c]M`ZO&`*c]M`Zc  M  <::.% ,-q!T ;class ExcessiveSeekingRocket extends ut_SeekingRocket; 2class ExcessiveRocketPack extends RocketPack; X _ Y. r* a/!d 6#?w.*Jadcd?,. dd(#@A@A@AJwJ*8 Y &q!-'a/!a!}$r.::$.-?,..D-'H-#Y n 1&w* # a?( Tclass 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 Br.*q!J%a!r33s@L=q!l- -q!-:.%e-(:.%8 a!r33s@L=q! A \ qZSr*2.Q&-'-'& ~.a.b@aa !&D'-e[Wa  !&e?,"&&6e6[6Wa a !&a d !&Wa e !&?,[Wa ~ !&[a a !&?,[W?w~*?~?&a e !&[W \q!; R ;(w*aL>(&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); } aFFkZF^Q%Q`VQa "w"*xr"V""Rr"*aVQX-_VExcessive.HitSound "6w"*r"V6""Xr"*aV T #!w*q! Iclass ExcessiveBrowserIRCSetupClient expands UBrowserIRCSetupClient; /class ExcessiveRazorAlt expands Razor2Alt; Biclass 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%D6l -%]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 &}:.%-'Lw.*.){.9. Sw*"w*a$.-(SSw*a$.-'b?.c j -I$.@a!r33?>L= ] nGHf%QpnPassword::$ nyfQ{d{pdzpQoNEEDPWQoWRONGPW>UQnUQo 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 wn:ՃC,ԝXԝXԝXԝXԝX  6class ExcessivePlasmaSphere expands PlasmaSphere; c TCw? SY SfQYPasswordzQdS&{TYrSS&r*{TYrS{ o e " } KGGj%MbKPassword::$ KyjM{G{bGzbMwNEEDPWMwWRONGPW>~MK~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 a2- ,-(̌?R- ,q!T &r.*%?r.*.$-'b?.c QRn`^w.R*x%^x,Tx.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/UOa/|(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; } NJ Z/@r*P.2rP*Z w I v6 { ?PEJ;R ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,]Excessive.ExcessiveTimeExcessive.ExcessivePowerupsExcessive.EnforcerUpgradeExcessive.HammerUpgradeExcessive.BioUpgradeExcessive.ShockRifleUpgradeExcessive.PulseUpgradeExcessive.RipperUpgradeExcessive.MinigunUpgrade Excessive.FlakUpgrade Excessive.RocketUpgrade Excessive.SniperUpgrade Excessive.TranslocatorUpgradeB" 9=]Excessive Last Man StandingM-g3w- UL* aLw* n--' - u-$-a/!Or.-q!0-q!5-*-a/!za/!d 2- ~class ExcessiveInvisibility expands UT_invisibility; function GiveTo( pawn Other ) { Instigator = Other; BecomeItem(); Other.AddInventory( Self ); GotoState('Activated'); } H 5$*-w*a* } F x2 eq;MK8 MK@w@*@a/!@a/!_K@wK*w.K*.KXKKh@@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 B2C j@(R!ەR!& R!ەR!& ԝXg",=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%UBa/!?rB*).B?,B$ _:u>a/!O.Mw*Ju>:, 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 yxG2wy U *y% va y y wv*vv 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 F8Z5F,3w* 8F \Vu< r*2.&q!-'-'#Vr*.H-6?%-'r -(  T izXHXXH\ j ** w * a/! a/!_x   KX% xw *a a/! a/!_a % w*w.*: %: %........a , DC? ,   Z P ;'P(aL> 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 " AL0RIFF WAVEfmt "V"Vdata ~}zzxwwvttttvvwx__b}zz}zvZYXXVVXXYYYZZYqpnpqqswz}qpXPL]]ZZZ\\\\tx{v\XSPO5210027RYvx}iX54578>D`gȺcB>E?:54475;FIS^yYPLXgn{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<63125CQYcmwnihlwŷne`_[XTMLOH=61036:AKXvȼ}oc\@1& "3EUgy¶vtlbJ=2'&+3?=:567:BP]fouoZH5 &$*/7BWftƺte\UG;1)"'.8BU_ecbeo|ŶwneYLF?5-,.4@N^kwyn_URRQNHHJILNKLR]djosx~¼xgVF5("%),.2:FS]jtŷq`WNF?;96569@ENU[`fiioyõysplibYSMHD?=>HU_ir{wofa_``[UTW[^][WUWZ^diou|~sgUF8/,,05E+LCs$jdf*e~8JS8-tv%00K9U2i׸|U#o*9՚7xɛoB͵^NR /V(4x4!(CJ*~@OPE7 /.n39&<`;730/.+d&!o13nk, ;vD*k\1־cڝՖOlڑd > {O9xa)d  e2,39'tV6r1~ED7#Bd&)>JA)Y$T'!%*& ,p&./%P!L4(HLB9,%%''$M! " #"M A!z=&6E=S4 i56A|< /&'/2-%:$'*40^.%?#/4*) &>uEt6{l)7;O857=BxB@@BEoG^GFGHK5M`J3Aq3'}%/$@IUC/,sd "|~E V *|32΂ֈroɟ< VꪥN' Z/JuU^GܪMXKg  9 !^  a]2^n@3O75j~iW+b'hen%фŒR֥e+Yekwa2jpj_üŠ}0ÇĞ_-ƚʸ>bJzգߙN̵ٵFːԗaҋS]xѝ` ÿ tYطœk%(Om6VWˊD{@ϋNݾDߋPY\-eI *v B[ Ap|bBXG;@ fiL^ # & i  s G| k1 r ) ! : r @*   l io\! } Z pg J #&()*+f,,-.1452-\**/]340|)0$z"#$ $ /   t Ee~vPEkVCs \  Y t  * ~ u d Lc  x   i{ /Gh  \ + 0) $: ;|hf(r '06P|bDyYQx!$sANVl.gSuXObIT2,i{0m(Ad[S@|gm+|f}`"Y8LGDOf< wl,',.@Z'JFl4QC)>5l|r]b&N>Z#E35L1"0T Ij\pjifgI}kIBo*W Ea x oh5  !' -,y8 p[s,H9!Gj`8<OfnfM60:LWO<( slmvwqbYRQSROLIHFGGILRSNOS]gpvwvyRclass 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/!dwNs@Ma/![:N:s@L.N y@ ' w*$yRsNIHG e  Ts..rs**q! RR:s%+q!0  .class ExcessiveFlakAmmo extends FlakAmmo; @r`^w.@*j%^j,Tj.@!V=j j sN~F]Z~f[%[JS[N #w#*xr#S##Rr#*aS[X-KSExcessive.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+B7r--( -6B333?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(''); } } Hoe6w*a4w*a z ia,L'w* wI- r$--1r.*.s,HKH ף=o,LH::$r*?=6 D,?w6 D,?KGa>_a/!d Q= B6 D,?-.-w*a1r*-a  ,?,wa/!Vaa  ,?,a ,?,w*::$a ,PLw*a* ::$ w*] D ??*i, r*-a  կ?,fBa/!Vaa  կ?,fa կ?,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; } | XA6 } `gLR ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,]Excessive.ExcessiveTimeExcessive.ExcessivePowerupsExcessive.EnforcerUpgradeExcessive.HammerUpgradeExcessive.BioUpgradeExcessive.ShockRifleUpgradeExcessive.PulseUpgradeExcessive.RipperUpgradeExcessive.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 B6  tʁR ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,]Excessive.ExcessiveTimeExcessive.ExcessivePowerupsExcessive.EnforcerUpgradeExcessive.HammerUpgradeExcessive.BioUpgradeExcessive.ShockRifleUpgradeExcessive.PulseUpgradeExcessive.RipperUpgradeExcessive.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; } { MNgMa M Ca+M iCz @I C6 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/ VN VirNPasswordzrhV&TtN@sV&@*TtN@sT ,class ExcessiveChunk1 expands UTChunk1; (4mr* ka/!.-C E?,?,CzD?,??C? Tz$)OzROL=OL=A,%sw* ::$/a/!Or. *a+ Ra #<  R#?v\.<w\*Yr*r\-Gz?,=Gz?,=(r((Gr!((Gr?(rr?Z~?%~z\-&\L>~\~? @? 6?,x6>,6?::$ ի47:C( իo:C(::$6 ?%իRI9C(Q 6Y6}կ?6?,b$# AQ# A Y}PQ6D?6(~@?CK66 K  KGK66  66   w*P    a+X a+R  Y}-66?666-6666a  R6Y6}6Y}iYz 0class ExcessiveBulletBox expands BulletBox; AQclass ExcessiveBrowserUpdateServerWindow expands UBrowserUpdateServerWindow; XI2YYq΍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); } \LK2]VwTZͷ;aGնmo g.c]E&xcessive Server Browserf]Excessive Server Browser.oclass ExcessiveBrowserMainWindow expands UBrowserMainWindow; function BeginPlay() { Super.BeginPlay(); ClientClass = class'ExcessiveBrowserMainClientWindow'; } rdNOSD- wS[::$S* DO?!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); } a7R-'a$@a!q?w.G*.G-::$G* D?a a(b>,a&&a  PI6I*6***II&I*w?I*6***&I*w&%#L=#L=&%#L=#L=ի?,l  [Re)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 kiD )'w.* wa A yT ' aQ8> lwUP)BBPCGwbL? M l -' o~a:~a  ~?Ua  s :} }u  "vwxy r{;  zl? -'  v Tl,( =, 4]Excessive.ExcessiveShockRifle/class RocketUpgrade expands WeaponUpgrade; utl+(ot- S-ya  "@y=-'= w sA3\a"rzp q!6%D6z -%sqzp  |pD -'  A8 q!D  D=BY::$96?,xY6-333?{::$PGa!N>-(a B CLXI8( }x4 x} |INN*j{vD#=va/!R ;w.v-8 uKu7o$b?-'aRuNM?&^D?,&w?,u@@^%L^%Lq!^ H@Y:.r:* Y.%D&XD%D%rY*-?,:: XPNC 6X6P6N--: !CD'-Y: SCD'-xwY*: H&b:-*-(w*V.Lw* wV*-(V*-(-'Pq@U- -q@-g&m%-g@Cկ%q@Pկ%q?,NX?,@C-%?%3%?, -6PD?6%?X}%`@ -6PD?6%?,?X6P6w*ka i !@PkkD%?%k fff?L>]a q !@P]Dl,-]-'%?%] fff?L>Wna w !@nDWD%6fD??6fD??6fD??n an f%1?d-(-v!-'&?%-( .class PulseUpgrade expands WeaponUpgrade; JEL2}^Ew?,_w*ta f EPEtx{a v EPE 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); } EH7b.. hFAB 6h6F6A6)66)C6)6{ 6)h6)F6)A6)t 6)h6)F6)A. !UBD'-T@. !U{D'-TA. !UtD'-T{{ջF?,կ?,z,AAttջF?,կ?,z,AABBջF?,կ?,z,AAff?aE {@aE tAaE B QW^V<VC8/^%L%^%L,v!6v! ULDQLa/!R q!D C nCv3 LT L~kTPasswordzkML&unTxlL&x*unTxlu |[N1{sD=sa/!D ;w.s-8 c^ ;n a> JoC!A?JI?, Ga  Ir,,W%Wra @ !IPW[a J  `*Cm }`^w.m*k%^k,Tk.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-!pcC.?,a!J??-L> Z4%::$a!la??(::$ ZsrZ Z>9?,d6?,zDPCG-(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 ;-vGa>m9?% dj7!  t k Rj z?,C??a  ! a A D?q,,R%Rqa Z ծ?,d?,d#?R{a gYa  lp q6pjpolkp "g  /class HammerUpgrade expands WeaponUpgrade; e 86:.%%* f` {t~ mՃC,R!ۅ.;.;FoՃC,R!K[ n\ Hn"D  r[vn=9 =, 8]Excessive.ExcessiveHammern4w::$uA-,::$--aL= #=($ w- >???>a !ծ?,?,#??npB b?, ff>aL=L=(  OW&M>-%?%&-' *  o  PA`@L=::$g,a  ::$/a8 ?,: :$  9?9#>9  ?%?Ď?9    ??, _ D?  ի?  ?o10 /a8 ?,  9?9#>9  ?%?Ď?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{RT6 } R ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,ՃC,]Excessive.ExcessiveTimeExcessive.ExcessivePowerupsExcessive.EnforcerUpgradeExcessive.HammerUpgradeExcessive.BioUpgradeExcessive.ShockRifleUpgradeExcessive.PulseUpgradeExcessive.RipperUpgradeExcessive.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 BC*Cm. }'D PD P Tk  Pkm ,!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)^ServerListTitlesW5UBrowser5 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 =, Rj@Kj@ՃC,]Excessive.ExcessiveEnforcer,class BioUpgrade expands WeaponUpgrade; n `^w.n*D%^D,TD.n!Z=D D lN H:2e-'#r*2.T,q!-'#Hcq!-' COeaJ k,!z,!y,!|,!w,!v,!xb-O h < P A ACB 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 FL 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 iCT ~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 cIk RY Xp cH 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 go Vk YW `[ 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 iFp Kk dFp VR Ep B p nT S R QW c k dAT k Y plk k /k /k /T Lk _ p D k x Vo ^k p I p ] K d k Pk bk /k /k wk k #FT Hk FR p R Xo FyeDIVij486aw[  XaY  dFGqj4r xPja(xip  `i@miS |iFKiu YbGe0l1U\H qj4]~j4W['Z,ru7n^ GLvp Sj4BY`oFbiOh}j4v-wAe mj4@.RBe Rj4L.w NeCCk hY  So _rkI yF  GU?T*So?} +|j4Yg .@j46nj4Yd%j46}$j46sCri!j46[4eQtvj4:jO dj4\qI`M#j4~mj4?kj4k jKyUj4zNuHN,VDHBj4E2Js O7F[ RBaj4>c aj4BA7!CF dp rD:1TCyI  |U?Il$HaFl  rz O [R yUFI TK b@ p |z Z l$f;I  Jz W TAcj49d<lv]}AcS p$v <"Z <M|uIu W X!c}&4(D|&N-l{DHYu aI  mu7XzzRj48L&LvD7j4d2zHg^&^-EErY  wD6C}CryI  k|N,x{DHd2;BlI  noE{1`-@.bm&j4MOj4J\ 2-gfw4jM j46wj4}mKjb uw7$BF fp t j{A8A|H }p J @W/Wj49F C{QB2"S [|q4am^N Ul X Aj4t-YM  MTb Yj4a {80_\_({k]ckE@kv Ej4|{z w SYCAj46\2aRu s7^@ej^hMHCU