*E@ C))xON#x( None Mutators excessive2CoreEngineSystemBotpack eGiveItemTick TakeDamageDamageBeginAnimEndAltFireFireUseAmmospeedBotSendQueryPacket EndState AltFiringUserWeaponBaseTypeFindInventoryType AtCapacity ParseOption AddMutatorTimerWeaponNewString BeginStateWeaponNewType ClientFireSetSwitchPriority PlayLoading AmpMessage AdjustAimFinishIdle DropFrom DrawBigNumClientAltFireGiveToReceiveLocalizedMessage MaxSpeedTournamentPlayer FireRockets AmmoName GiveAmmo AmmoAmount SetCaption GetWeapon NormalFire LogPickup PlayIdleAnimFiringRockets UBrowser RateSelfPickup PlayRotating ActivateMaxAmmoUWindow PlayFiringPostBeginPlay NotifySpreeSpecialDamage NumMutators ThighPads bUseHitSoundUT_ShieldBelt RepeaterLoginProcessTraceHit ModifyPlayer DownWeapon ReduceDamage InitGame PreLoginHUDTypeCheckIPPolicyIRCChannelHistory GameNameMomentumTransfer ProcessTouchHandlePickupQuery LifeSpanProjectileFirePlayAltFiring UT_Jumpboots TraceFire FireEffectHitWall PlayerPawnClientInstantFlashAddPage DrawStatus SpriteAnim RotateRocketFlying SpawnSplashBlowUp ClientReload SetRespawn ShakeViewProjectileClassAltProjectileClass AdjustToss ClientFiringGetInfo ReplaceWithExcessiveBioGelSuperExplosion OnSurfaceT2 ExplodeChunkCarcass GetRules FastShootClientMessage bRapidFire TraceShot GiveWeaponChargeShootClientAltFiring CheckTarget ShootLoadCreatedPlayRepeatFiring CheckBeam WarnTarget ForceFire ForceAltFire multimeshExplode SetMultiLine UpdateBeam PlayRFiring BecomeItemIpDrvExcessiveUdpServerQuery SetTwoHandsWAV PlasmaHit ChargingFiringHit PendingLockExcessiveHealthPackexcessivethighpadsexcessivearmor SendPlayers ImpactHammerexcessiveshieldbelt GetBasic SpawnDoublePlayNormRepeatFiring ExplodingGenerateBullet TraceFire2StationaryPawnLightBrightnessMutatorTakeDamageProcessTraceHit2GiveAmp hitdamageSetWall ModifyLoginLoadingCheckReplacementPutDown LightEffect LightType LightRadiusshake MyDamageTypeLogSpecialEventFell ValidTouch AddVelocity DrawScale ActivatedGetServerPort AmbientGlow WeaponSet GetItemNameAdjustHitLocationClientPlaySoundPhysicsLightSaturationSetHand GetStringClientReceive AddInventorySwitchToBestWeapon UnrealShareCloseDied LocalizeBroadcastLocalizedMessage BeginPlaySetDisplayProperties ZoneInfoMoverPawnMessage RemoteRole SpawnCopyTouch SpecialFire ZoneChange DestroyedExcBrowserLMSExcBrowserDOMExcBrowserCTF ExcBrowserASHealMaxSecondaryServerAddressMainServerAddressblastedExcessiveDeathMatchPlusExcessiveHUDTeamExcessiveEnforcer ExcessiveHUDExcessiveHUDAssaultExcessiveHUDCTFExcessiveBrowserMenuItemTranslocatorUpgradeHammerUpgrade FlakUpgrade SplashJump#ExcessiveBrowserUpdateServerWindowMinigunUpgrade PulseUpgradeRipperUpgradeRocketUpgradeShockRifleUpgradeRegisterDamageMutatorSniperUpgradeExcessiveChunk2ExcessiveRocketPackExcessiveTracerExcessivePAmmoExcessiveBrowserMainWindowExcessiveBioAmmoExcessivePlasmaSphereExcessiveFlakAmmoExcessiveBladeHopperExcessiveShockCoreExcessiveRazorAltExcessiveBrowserIRCSetupClientExcessiveBrowserIRCSystemPageExcessiveBrowserIRCWindowExcessiveChunk4ExcessiveBulletBoxExcessiveShockExpl!ExcessiveBrowserUpdateServerLinkExcessiveAmpMsgExcessiveExplodingChunkExcessiveBioSplashExcessiveChunk3ExcessiveMiniammoExcessiveInvisibilityExcessiveChunk1ExcessiveShockprojExcessiveFlakSlugExcessiveTranslocatorTargetExcessiveGrenadeExcessiveRocket BioUpgradeExcessiveSeekingRocketExcessiveBioGlobEnforcerUpgradeExcessivePowerupsExcessiveHammerExcessiveBioRifleExcessiveShockRifleExcessiveMinigunExcessiveTranslocatorExcessiveSniperExcessiveRipperExcessivePulseGunExcessiveFlakCannonExcessiveCTFGameExcessiveAssaultExcessiveDominationExcessiveTeamGamePlusExcessiveLastManStandingExcessivePBoltExcessiveStarterBolt!ExcessiveBrowserMainClientWindowExcessiveRazorExcessiveTimeExcessiveHammerShockWaveWeaponUpgradeExcessiveSkaarjExcessiveNaliExcessiveFemale1 ExcessiveCowExcessiveMale1ExcessiveMale2ExcessiveBoss UBrowserAS MaxTossForce UBrowserLMS MinNetVerUBrowserDeathmatch HealthPack DrawTeamMedBoxWindowTitleStringT1 LightHueGetGamePropertyGetLevelPropertyUpdateServerClassParseNextQuery ParseQuery SetupURIs ProcessData MenuCaption MenuHelpExecuteHTTPReceivedDatashot2QueryUpdateServerUnwind shredded ThrowTargetBrowseCurrentURIExcBrowserTeamGamesThrowSuccessTeamHit HTTPErrorExcessiveRocketLauncherFire1 HitSoundEject UBrowserCTFUBrowserTeamGames UBrowserDOMArmor2TournamentAmmo FlakDeath SetParentAbsorptionPriorityPull HealthVial Shootloop PlaySpinDownSetupTournamentWeapon boltloop GetBigFont LinkClass TeamGamePlus HideWindow IpServerGetPlayerPropertyUMenuSetRollUT_FlakCannon UT_EightballExcessiveHUDDomination UTBrowserExcessiveFemale2 minigun2impact FragLimit PulseGunFire2 FireSoundripper SniperRiflePlayPickupMessageWingInHealingAmountspin DeletePageShoot2 MakeSoundShoot1 TacticalMove StartError SetUpSlave UT_BioGeldoubleenforcerProcessAltTraceHit PlayAltBurstDrawGameSynopsis ShockRifle Validate ut_biorifleExcBrowserDeathmatch PlayUnwind Translocator SpawnEffectAmpTimePickupMessage RespawnTime bWaterZone bAltFire bNeutralZone enforcerbFireWallClipX AltFireSoundStyle FireOffset bProjTargetSkill EyeHeight bPointingCopy bUseAltModeExplosionDecal MiscSound PickupSound PlayerID ImpactSound SpawnSound DrawColorPAmmo AnimSequenceTeam AccuracybWarn ProjClass bMuzzleFlash AdjustedAim CreateWindow Misc3Sound Misc2Sound Position Misc1Sound CockingSound ViewRotation SplitPos TextAreabBounce MinWinHeightFCTrace MaxSplitPosTopClientWindowBottomClientWindow bLockedOn ItemClassPlayOwnedSound bByParentF InternetLinkbChangeWeaponAddrbAltWarnTargetSoundsSkinData SoundVolumebHidden AmmoType PlayerOwnerbIsPawnXLStartLocationPendingWeapon InPassword DrawOffset bDeleteMe PawnOwner WorldLogUpdateServerAddress DamageTypePickupMessageClass LocalMessage BaseMutator SystemName ClientClassUBrowserServerListWindow bSizableUBrowserIRCPageBasebSteadyFlash3rdUBrowserIRCSystemPageUBrowserIRCWindowUBrowserMainClientWindowUBrowserMainWindowUBrowserUpdateServerLinkOldFlashCount ErrorCode BytePropertyServerListTitle FlashCountbBlockPlayersdistUWindowVSplitterUWindowPulldownMenuItemURIsUWindowPageControl CurrentURI bHeldItemServerListNamesIRC bIsAnArmor HurtRadiusUWindowPageControlPage instigatedBy GameTypeInvNewItemUWindowDynamicTextAreaUWindowFramedWindowUWindowClientWindowVictimsUWindowRootWindowCollisionHeightUWindowWindowCollisionRadiustempUWindowPulldownMenuAUWindowTabControl RotationXCTeamsZYWPitchbSelectNearestTabOnRemove bBlockActors WinHeightRollAnimSpriteEffectj WinWidthiRootIcons ScriptTextASMDSV ExploSoundbRightB WeaponLight Spawnpoint WaterRing RedColor bSuperHeal bBottomGrow LastPainTime oldTargetYawErrVel2DAnglePickupsPageGRIXOffset PlayerCountYOffsetIpAddrNDamageSkins ArmorAmountCurAbs BestArmorflak AltAccuracyValidationString ChargeSizeRocketsLoaded bSniping bWarnTarget HitNormalQueryClipY StartLocFireRot DupRocketsMaxedOutMessage NeedPassword BioRifle bOnGroundGel AnimTime bCanHitOwner bHitWaterNextDamageMutatorbCenter MagnitudeVel InitialDirVictimFavoritesName SeekingDir ExpCount EndTraceYawRinjuredPortalYL NewPlayer FailCode ShotAccuracyrndDam ChunkHit NumWallHitsbCanHitInstigatorAddressGValuebSuperRelevant NextMutatorUMenuModMenuItem Initialized WeaponClass MenuItem ResultSet ReturnValueFavoriteServersClass LocalLogStaticSaveConfigDynamicLoadObject MOTDNameServerListWindowClass LANTabNameUdpServerQuery QueryNum PacketNum QueryType QueryValue QueryRest bFinalPacketScaleDeathMatchPlusMutatorIRCNameUBrowserFavoriteServersWeapon LevelInfo GameInfo ProjectileInstFogUBrowserInfoWindowHUDPlayerReplicationInfo InstFlashUBrowserIRCSetupClientStatLogGameReplicationInfo StatusDoll StatusBeltUBrowserUpdateServerWindow LoadAnim RotateAnim FireAnimAmmo InventoryCanvas ChallengeHUDFontCTFGameLevel PlasmaSphere InfoWindow FireAnimsAssaultChallengeTeamHUDTournamentHealth DominationActorMesh Splitter bIsPlayerUDamageUT_SpriteSmokePuffUT_invisibility HitActor PageParent SetupClient PageControlLodMeshPlayerMOTDCountOptionsMaxURISoundTranslocatorTargetTexture ShockProj SystemPagePBoltLastManStanding FlakAmmo Miniammo GoldColorLANPage BulletBoxFactoryWindowsMC AssaultHUDTournamentPickup PawnList ShockCoreError RocketPackTitleMinNetVersionEngineVersion PurpleColor WeaponScale StatusScale HUDScale SpreadString RankString UTChunk2 UTChunk3 Razor2AltRazor2NetModerealLocDoubleSwitchPriority UT_WallHitTournamentGameReplicationInfoChallengeCTFHUD BladeHopperWarExplosion2 WallCrackUT_SpriteBallChildUT_SeekingRocketUT_RingExplosion5UT_HeavyWallHitEffectUT_LightWallHitEffect UT_GrenadeUT_FlameExplosion UT_ComboRingBioAmmo UTChunk4 UTChunk1UTChunkTMale2 TFemale2 TFemale1TBossUT_SpriteBallExplosion ShockWave RocketMk2 BeamSize PlasmaCap NuclearMarkMTracer TensionSoundKillingSpreeMessage flakslug FontInfoCriticalEventPlusChallengeDominationHUDTMale1 DoubleName FireAdjust UT_ShellCasebInstantRocketbNoviceMyFonts HudElements1 bTiedScore TutIconBlinkbHideAllWeapons bHideStatus BaseColor HUDColorrankleadHitPosHitTime StatScale ChestAmount ThighAmountH1H2 DamageTime bChestArmor bShieldbelt bThighArmor bJumpBoots bHasDoll BotOwnerTPOwnerDoll DollBeltSpread 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 bDropDetailUTBrowserMainClientWindowRoleTSkaarjtnalitcowClass TimeSecondsOptionalObject RelatedPRI_1OwnerSpreeStart nextPawn NewTargetbUnlitPackage TimerCounterZoneTarget Instigator LocationRegionGame bIsSpectator LastSeenTimeEnemy NumPlayersItem HeadRegionM Velocity AccelerationNewWeaponClassbMeshEnviroMapWeaponPrioritybDamageTriggeredRate StartTraceNewZoneSwitch AmbientSound HitLocation NewWeapon Momentum projSpeed damageScale BestTargetAimSpot actualDamage SpawnClassP RelatedPRI_2 PointRegionResultNum bForceFireOther DeltaTimebForceAltFireCarriedDirCalcDrawOffsetHealth RandSpin DrawIconSetPosSoundDampening ItemName ZoneGravitybHighDetailMode RefireRate TempScaleDamageScalingAltRefireRateAltProjectileSpeedProjectileSpeed Handedness DefaultFOV shakevert shakemag RocketRad bFireLoad DesiredFOV TextBufferObject Function AIRating shaketime ServerName aimerror bTightWad LockedTarget FireLocationState IPBannedColorRotatorVectorStructLStartRStart SpawnoffsetA1A2 MaxPlayersbShowStandardRandRotNumExtraGrenadesNameUnrealIReserveMessage StrPropertyReservedPasswordNumReservedSpotsNumReservedPlayersStructPropertyiiClassProperty NamePropertyWeaponReplaceTypeObjectProperty AmpCountSeekingFloatPropertyAutoSwitchPriority BoolProperty ExplodeTime IntProperty popcountiExplesp MutatorClass WhiteColorbRingPlayerViewOffsetNumExtraRockets Favorites0@Xtf+=, =$:etX'X'X'X'X'X'tX'> YX'tX'ttX'X'X'X'ѸBX'ѸB=$:eԝXԝX&̻ԝX&̻ԝXԝX&̻ѸBԝX&̻ѸB]Botpack.TournamentWeapony3lKxm^t1PCOb\%ggdnwLU`Qm_W  F MI@]M^232\+1t@ԝXtԝXԝXԝXԝXttԝXttt@ѸBttt@t@ѸBtѸBtѸBtt@ѸBtѸBtѸBtXu6> Y> YtԝXԝXԝXԝXԝXXu6> Y> Ytt> YГt@tt@e"-.v[mkfZeY@j <px ?CEH H@ UL Y2F ߫ɕГtГГГГГ& & ttF ߫ГГГz",ZD ] DHARXJ T 2P;ԝX> YԝXѸB „ԝXԝXԝXtttѸBԝXԝXԝXtԝXL]tttt> Ye"P.K wijUO S2QW}ŰyO_tԝXԝXtѸBԝXttԝXttt> Y.N hyiq^jZ2R斊 .ttѸBttѸBttѸBԝXԝXttL]ѸBԝXttԝXt> Y.` wTVR2S&&]ԝXԝXԝXԝXԝXԝXѸBtttttL]L]L]tԝXԝXttԝXtXu6ԝXtԝX> YR"\QX2TۙVCpn;7ԝXttԝXԝXԝXttttt> Y.o hx iJ S ]ZY2V*DCjatttL]tԝX> YXu6ѸBѸBjajaԝXttԝXԝXԝXtttt> Y.O hK ik ZIV2W 2R& t{#U& t{#UԝXԝXtttԝXo$Dt Y] U2Xgbant> YѸBtԝXtԝXԝXԝXԝXttԝXtt> Y.vM BK [[W 2\uU鶡ѸBԝXL]ԝXԝX}M}MԝXԝXԝXԝXttԝXtttt> Y> Y> Y.A o[RkO2S]p- hơѸBttԝXtttԝXtFKFKFKX]1X]1X]1N/7N/7N/7ѸBѸBttԝXtttѸBtѸBttѸBѸBԝXtѸBtttԝXtԝXtԝXtԝX> Y> YXu6sBƅttԝXtԝXtѸBѸBttԝXtԝXtL]tttttttttttttt> Y.V whuwcQD`RMqAcH~i- ecLBUJZbx]BSaLpB F2eq;tRT ]ZOvW&Bq[ YZV)ypC k@S@rhb{@!'w@U^fjX@B@$kN~L@lIMAct*wDbn#yRwq 11!t"ڄԝX $Bn xnLFN@\F | l CcN#FKZԝXI$@ND+$"G $BYToAbK;N/7726ttt1$HD $BB P nBL#X]1sB$@D+$;E $BR"_SV@b@@@u@Bt_\`zmH"j6p€ j6p€t$aD $BR"8ipwFC\DuE+NJfjz`@k}Cs@h Iah@f|~dnzCP|\ WI@Vv#il(HYyov"QW \`shWzHEkm^tsF>NrXVyyD`"'xcjajajajaԝXԝXԝXtԝXԝXԝXԝXԝXtjajaԝXԝXԝXjajaja $B[ er}Vb W@qg ni.rkk om sUVM aX@zF cCkI @Vt@U@K @j@T@`@n@DqrCe@@v@h@h@b@N @z@Dn@@A@p@@E@Dv@@j@DJ@IK@M@P@DJr G @b@NR@d[@DS @@R W@n~Mm{d|x[|vDPwKNzX~CqUpE_TNOjX@\k[Df Ky{`Sd=`a/!n ;w.`-8 rCbJy?La@@( l{l c@r jyMinPyERO#qoFyRwqԝX_ԝX$aD $4BR"0ulrSsG;u7$"E+$/E $AU$ff@nE2v1552X0"<",lD;wsjQ$"E+$/E $AU$ff@}yy{kT[gGG@OL_R @o@Ej Oxtz@p_I">Z_)wV*y_V9y_dXw* I_ orLOeG@SE@bmsIc@r a@ f Y@~[W_6FknV!tГГГГГГГГГxxxxxL]L]xxxtxxxxxxxxxxxxxxxxxxxxxxxxxxxxtxxxtxxxxtxxxxxxxx`]@H_@i@}Lh@[@XT@i^@huHR@ A lI e@@@X } Z@M M\ T ]@agJ D |@GPR O~b e sT a kA vf 6$-'-'f q!Q m k REPoj 6o 3삦Er ap [">o$b>-'afp r a!Rq!p t o@s @JHb6"v Go2o + 7`7`7`7`7`?{~7`~?{~۹~?{~۹~?{~۹~?{~۹~?{~۹~?{~۹~?{~?{m7={]/.excessive2.ExcessiveBrowserUpdateServerWindowLZc"x qAk7yrүԝXԝXԝX$D+$D $BU$`@wlk amz @:@^ }oJ2| -{\I+} B9) $B}@BtC @yjXC#B fyRwqԝX$D~ Q};E P\G$"E+$/E $AU$ff@DIn 6F \ܯFAvu#K ϙ,A$E $HBR"`t$?N L cO  @M7@R @@LHU  @F@@qxrk 6]  D8A^ fa a` h 6c RHEYgg 6d R·EE @@a9@xHOa ::$"4k Ͱxct> YtCttttttL]ttL]L]L]tԝXttԝXtԝXtԝXtttttttttԝXtttttX'tttL]tt@$?` ` ` ` ` Nlk axS}2m@n @{ h @K@Sweq \}ylTԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXtԝXԝXԝXԝXԝXԝXopU$@?u @5@bG V2!w y tГГГГГГГГtГГГГГ& & ttw ГГГz"Z"plQ Y6@hoB;} Oj$D $ B|| @^t @ {eo7KZ]www.planetquake.comY]unreal.epicgames.combgA@ ƿpl> Y"]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.X~2A .vx0"<"dL]6FB BWytГГГГГГГГГxxxxxL]L]xxxtxxxxxxxxxxxxxxxxxxxxxxxxxxxxtxxxtxxxxtxxxxxxxxQ Zu D ٍOj C "2Yga6^E tГГГГГГГГГxxxxxL]L]xxxtxxxxxxxxxxxxxxxxxxxxxxxxxxxxtxxxtxxxxtxxxxxxxxtt{#UxflUxxx> Y;(xxxxxxxxxxxxxxDM|2G 0[m «*7`7`7`?{9ŋT7=K~{6 H \{9ŋTc1Q` zZc1Q`c1Q`c1Q`c1Q`c1Q`c1Q`c1Q`7=Iz6I OJwS7=P= #excessiveP  #utgamesP #utchatP #utmodsP  #utlevelsP #uthelpGy"J Xѯn;$D+$D $HBR"`[Cx2K >_0"<"r}s2L 8~܌̅7=v]Excessive Server BrowserG tt2N |Ytsl0"pr2O nN"W0"<",nq"P a$/$E+$EQ@M rP Q Zp2V E5b0"<"dM Y @Z ]@shZ @_ @8@zv2` i0"<"dLo;a U$"E+$/E $AU$ff@{h l 6b XYl xWU @e[ i 6h  w_m=i @gAw2o |#e0"<"Y p @n HAsm 6u .rw U U2v }kГtГГГГГ& & ttv ГГГz"d` El6Fw 3UUO4tГГГГГГГГГxxxxxL]L]xxxtxxxxxxxxxxxxxxxxxxxxxxxxxxxxtxxxtxxxxtxxxxxxxx|m`6Fx p%/tГГГГГГГГГxxxxxL]L]xxxtxxxxxxxxxxxxxxxxxxxxxxxxxxxxtxxxtxxxxtxxxxxxxxA E mIa ~ R 2wR B *R% laB R R wl*ll$l )Rl;  @ d  W I . r* a/!g 6#?w.*Uar n g?,. gg(#@A@A@AUwU*8I &q!-'a/!a!$r.::$.-?,..Q-'V-(I iY H Gw> YZ Y[iZPasswordzi]Y&SH ZVG Y&V*SH ZVG S d ] Sf?] f?fr.* L>q!~:.%q!~  c ` :2e-'#r*/.T,q!-'(` cq!-' q)[*qJqAq!u | oHT:ro*\de d@Fa.vwa*a]̾#C>C"DMe ծ6?,d6W 6M  w.o*,.oo.a e\?,P\wo wo wo*o+ .e`jGd  H D{ -'  { j? z j@ ~D?$?,~%R,ȓj\R%jRx$, j F$,j $,j $,$%#$, $&#$,$,# $,$,#!$,$,# nwn*}na/!,n* $jnn7 R gO(9dgUg  FwU*ddUUd%U&d&d  Cv -'  p >6B$@.a!{L@ ף< F [Tr[F.  FqrF*n[[FF[w*4[.Dw*4[.pr*.v!9.*%**[a @[f'r*( T[ df@ }`^w.@*~%^~,T~.@!v=~ ~ J & y I ~  YTvrYd.  Fqrd*nYYddYaw*4Y.Gw*4Y.sr*.v!9.*%**Ya @Yf'r*( TY [E \ /1&w* ( a?( @ fHX[`  rf`- w*a  MCPC|a  MCPCYYwf wf wf*L>F ?,f+  .M;EF <f-fa/!sa  MC?, Yfa @ B  ~ W$I$.@a!s?>L= Aa gMG[%hbgPassword::$ gy[h{]{b]zbhXNEEDPWhXWRONGPWOthgthX  _ > ;$?.a!P AL= 2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \ L N &  D f   y P&  2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \  g d K3ea"riK  x!A%D6i -%d xiK  V \q w*Zsw.*.]L#CaCB.g$@.a!{L@L= Ql 99` b { 3 0w*aL>(B&YL>\a-:.%% !F-q!J:.%%r.*.=A !Fa!{333@L=$ F X ^ L][^ _ f%fY ffX 8w8*xr8f88Rr8*affY-Z fexcessive2.HitSound 87w8* r8f788Yr8*af  2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \  C (w*aL>(&a?( z 5$*-w*a* {P USr{e.{B-QD?Q?SeQw* 4ew* 4ee #eQeQwea  @{bL>f |[ ur*|.ua|uJ.2uM>Ar.I--M i s J  u | &1y q S Lg[S R k%kp kkq 7w7*xr7k77Rr7*akkY-Y kexcessive2.HitSound 77w7* r7k777Yr7*ak  ^ v 6  m } !Ekiw.}*H%iH,_H.}!C=HH H } b@ yD?'?,y%^,ȓb\^%b^x', b F',b ',b ','%#', '&#',',# ',',#!',',# UwU*}Ua/!,U* 'bUU7  r W . I M T W 6W6W@6W6WC  6I 6M 6T a C W s m`^w.s*L%^L,TL.s!I=L L \  <h.$rh*q!9 :h%Uha/!?rh*).h?,h$$ \ :u>a/!\.] w*Zu>:,$ \  K T 2wT P *T% aaP T T wa*aa$a )Ta;  P >I$.@a!P?>L=  H @Ew*Zsw.*.]L#CaCB.g$@.a!D33s@L= e gPdw*aL>(a_&K>_VY@ax?,?-:.%% !F2-q!J22:.%%,r.*.=A !Fa!q33s@L=$ F LT U r.*q!J%a!q33s@L=q!l- -q!-:.%@-(:.%8a!q33s@L=q! D wd\6E x"-%ntttttttttt^^^^t1=$:e=$:e=$:e=$:e=$:e=$:e=$:e=$:e]excessive2.ExcessiveTimeexcessive2.ExcessivePowerupsexcessive2.EnforcerUpgradeexcessive2.HammerUpgradeexcessive2.BioUpgradeexcessive2.ShockRifleUpgradeexcessive2.PulseUpgradeexcessive2.RipperUpgradeexcessive2.MinigunUpgrade excessive2.FlakUpgrade excessive2.RocketUpgrade excessive2.SniperUpgrade excessive2.RedeemerUpgrade excessive2.TranslocatorUpgradeexcessive2.ExcessiveHUDexcessive2.ExcessiveGoreB"Dq"dNkQ]Excessive 2.0 DeathMatch x $ a I W=Ja!w33s@L=-' F O  KO V-O ?L??,E C C 8q @r*B.2rB*C  N U GwX e| ejD |PasswordzD Ke&_U |`S e&`*_U |`S _ } `^w.}*z%^z,Tz.}!k=z z g ~ Lc[~ | N%NU mNg 6w6*xr6m66Rr6*amNY-Q mexcessive2.HitSound 67w6* r6m766Yr6*am V |MGj%]b|Password::$ |yj]{K{bKzb]{NEEDPW]{WRONGPWON ]|N ]{ Q Z 8 @r*L .2rL *Z  P^@ jD?!?,j%~,ȓ^\~%^~x!, ^ F!,^ !,^ !,!%#!, !&#!,!,# !,!,#!!,!,# gwg*}ga/!,g* !^gg7 BL  e S(( UT}rU[.  Fqr[*nUU[[Uw*4U.Dw*4U.pr*.v!9.*%**Ua @Uf'r*( TU u z K3a"rgR  Q !A%D6g -%z Q gR  ftV"{b.. {zjo 6{6z6j6I66IB6I6M 6I{6Iz6Ij6Im 6I{6Iz6Ij. #|oD'-r:.%:.%W. #|MD'-rn. #|mD'-r6W 6W6n 6Wat MWat mnat o ] h`^w.]*S%^S,TS.]!u=S S u^   d cO-'-(-'3r*/.M&q! A y Lm[y z ^%^C e^A :w:*xr:e::Rr:*ae^Y-~ eexcessive2.HitSound :7w:* r:e7::Yr:*ae  g -8g (  uK FDw*$@@.a!F@L= _J i`^w.J *M%^M,TM.J !o=M M xJclass ExcessiveHUDDomination extends ChallengeDominationHUD; simulated function DrawStatus(Canvas Canvas) { local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime; Local int ArmorAmount,CurAbs,i; Local inventory Inv,BestArmor; local bool bChestArmor, bShieldbelt, bThighArmor, bJumpBoots, bHasDoll; local Bot BotOwner; local TournamentPlayer TPOwner; local texture Doll, DollBelt; ArmorAmount = 0; CurAbs = 0; i = 0; BestArmor=None; for( Inv=PawnOwner.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv.bIsAnArmor) { if ( Inv.IsA('UT_Shieldbelt') ) bShieldbelt = true; else if ( Inv.IsA('Thighpads') ) { ThighAmount += Inv.Charge; bThighArmor = true; } else { bChestArmor = true; ChestAmount += Inv.Charge; } ArmorAmount += Inv.Charge; } else if ( Inv.IsA('UT_JumpBoots') ) bJumpBoots = true; else { i++; if ( i > 100 ) break; // can occasionally get temporary loops in netplay } } if ( !bHideStatus ) { TPOwner = TournamentPlayer(PawnOwner); if ( Canvas.ClipX < 400 ) bHasDoll = false; else if ( TPOwner != None) { Doll = TPOwner.StatusDoll; DollBelt = TPOwner.StatusBelt; bHasDoll = true; } else { BotOwner = Bot(PawnOwner); if ( BotOwner != None ) { Doll = BotOwner.StatusDoll; DollBelt = BotOwner.StatusBelt; bHasDoll = true; } } if ( bHasDoll ) { Canvas.Style = ERenderStyle.STY_Translucent; StatScale = Scale * StatusScale; X = Canvas.ClipX - 128 * StatScale; Canvas.SetPos(X, 0); if (PawnOwner.DamageScaling > 2.0) Canvas.DrawColor = PurpleColor; else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Doll, 128*StatScale, 256*StatScale, 0, 0, 128.0, 256.0); Canvas.DrawColor = HUDColor; if ( bShieldBelt ) { Canvas.DrawColor = BaseColor; Canvas.DrawColor.B = 0; Canvas.SetPos(X, 0); Canvas.DrawIcon(DollBelt, StatScale); } if ( bChestArmor ) { ChestAmount = FMin(0.01 * ChestAmount,1); Canvas.DrawColor = HUDColor * ChestAmount; Canvas.SetPos(X, 0); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 0, 128, 64); } if ( bThighArmor ) { ThighAmount = FMin(0.02 * ThighAmount,1); Canvas.DrawColor = HUDColor * ThighAmount; Canvas.SetPos(X, 64*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 64, 128, 64); } if ( bJumpBoots ) { Canvas.DrawColor = HUDColor; Canvas.SetPos(X, 128*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 128, 128, 64); } Canvas.Style = Style; if ( (PawnOwner == PlayerOwner) && Level.bHighDetailMode && !Level.bDropDetail ) { for ( i=0; i<4; i++ ) { DamageTime = Level.TimeSeconds - HitTime[i]; if ( DamageTime < 1 ) { Canvas.SetPos(X + HitPos[i].X * StatScale, HitPos[i].Y * StatScale); if ( (HUDColor.G > 100) || (HUDColor.B > 100) ) Canvas.DrawColor = RedColor; else Canvas.DrawColor = (WhiteColor - HudColor) * FMin(1, 2 * DamageTime); Canvas.DrawColor.R = 255 * FMin(1, 2 * DamageTime); Canvas.DrawTile(Texture'BotPack.HudElements1', StatScale * HitDamage[i] * 25, StatScale * HitDamage[i] * 64, 0, 64, 25.0, 64.0); } } } } } Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 64 * Scale; } Canvas.SetPos(X,Y); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = WhiteColor * H2 + (HUDColor - WhiteColor) * H1; } else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 128, 128, 128.0, 64.0); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = Canvas.DrawColor * H2 + (WhiteColor - Canvas.DrawColor) * H1; } else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Max(0, PawnOwner.Health), X + 4 * Scale, Y + 16 * Scale, 1); Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX - 128 * Scale; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 0; } Canvas.SetPos(X, Y); Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 0, 192, 128.0, 64.0); if ( bHideStatus && bShieldBelt ) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Min(300,ArmorAmount), X + 4 * Scale, Y + 16 * Scale, 1); } eM { K3ka"rOM Y!A%D6O -%{ YOM @a V0b.. @ A e 66@ 6A .& jb e%'-e  >aa  e  J( @xMGz%cvxPassword::$ xyzc{}{v}zvcwNEEDPWcwWRONGPWOhcxhcw  Z k !r P r*   $.aj @@L= ~@|j Gb NMGP%oJNPassword::$ NyPo{Q{JQzJoLNEEDPWoLWRONGPWOKoNKoL q ! * O y &  h v :{ J' $=.av  @@L=  ~ { Cr.*w*%5q!X-q!:.%8:.%8(5q! d~ l C!Ol E ,@%LMI m t Lw[t u h%hn [hm 5w5*xr5[55Rr5*a[hY-p [excessive2.HitSound 57w5* r5[755Yr5*a[ Mu 2wu c*u% Iacu u wI*II$I )uI; ~class excessivethighpads expands thighpads; function bool HandlePickupQuery( inventory Item ) { local inventory S; if ( item.class == class ) { S = Pawn(Owner).FindInventoryType(class'excessiveshieldbelt'); if ( S==None ) { if ( Charge  ??2  ?}r?a?'$-'q!%!S -(q!3 q!3  Z W'; $ff?.a!P@L= d  Gr Xa>^#!| !u ! a #=^ !u u) @ F~.,,/excessive/ut.html,/UpdateServer/utmotdfallback.html&/UpdateServer/utmasterserver.txt%/UpdateServer/utircserver.txt NB3n a>$ u o Li[o h r%rs Zru 9w9*xr9Z99Rr9*aZrY-t Zexcessive2.HitSound 97w9* r9Z799Yr9*aZ e Ee  _ j& z2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \ { n`^w.{*K%^K,TK.{!G=K K Ef K2ra"rm` a!A%D6m -%f am` m wGvB [T [PuTPasswordzuQ[&HwTIv[&I*HwTIvH  U>!pcC.?,a!]??-L> MKlMFn%XjlPassword::$ lynX{o{jozjXkNEEDPWXkWRONGPWOTXlTXk  O ( 5class TranslocatorUpgrade expands WeaponUpgrade; @R&D KuuTcY)r=, W]"!Excessive2.ExcessiveTranslocatoros 8@r*z.2rz*s  {]%, \ W w r*/.&q!3-'-'a/!.- ff&??A ?,??@@YW  Qclass ExcessiveBrowserUpdateServerWindow expands UBrowserUpdateServerWindow; NclY `p\hostname\pp\hostport\Svpp\maptitle\pp\mapname\V~V.0yV3-T 'z0ExcessiveDeathMatchPlus0DeathMatchPlus3Uz0ExcessiveCTFGame0CTFGame3z0ExcessiveDomination0Domination3z0ExcessiveTeamGamePlus0TeamGamePlus3z0ExcessiveLastManStanding0LastManStanding33z0ExcessiveAssault0ExcessiveAssaultpp\gametype\0pp\numplayers\Spp\maxplayers\Sp\gamemode\openplayingpp\gamever\pp\minnetver\pl }r 2wr M*r% TaMr r wT*TT$T )rT; ^g2aYq΍a7=c j X#!w*q! @`S@ ZD?)?,Z%e,ȓS\e%Sex), S F),S ),S ),)%#), )&#),),# ),),#!),),# QwQ*}Qa/!,Q* )SQQ7 NeeBb=, R] Excessive2.ExcessiveFlakCannonL} 2w} L*}% _aL} } w_*__$_ )}_; 2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \ mX_)Czb.. [ OPL 6O6P. #$tILD0@((zLիX?O?իX?P?|9z?'|{.xLEzLc{LE9OP  i'86:.%%6 zn 8YQ2@r*G.2rG*n   vV qZSr*/.Q&-'-'G p.d.b@dd #GD'-ZRVa  !GZ?,"GG6Z6R6Va u !Ga a !GVa w !G?,RVa E !GRa u !G?,RV?wp*?p?&a w !GRVV q!3 A b|"G{Y Gb.. h A@r 6A6@. #$tIrD0@((Brի{?A?ի{?@?s9B?'s[.xhWBr,%hr?,a  r?,`sPBrH[hW9A@  2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \  fK@ BD?&?,B%G,ȓK\G%KGx&, K F&,K &,K &,&%#&, &&#&,&,# &,&,#!&,&,# LwL*}La/!,L* &KLL7  2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \   2+r  W4r  SNr  2hr  Qr  Pr  Vr  Tr  Xr  Rr  ]r  \  TOy3wO R* aRw* )O-'  O xO$Oa/!\~.O q!%Oq!JO *Oa/!Xa/!L /O zju2g =, T]excessive2.ExcessiveRipper|c 8^V@r*U.2rU*c  ;@TQI TQtwt*ta/!ta/!,JtwJ*w.2J*.2J[JJhttw* IQ N |kzq=, ]]$#excessive2.ExcessiveRocketLauncherNd 8h @r*E.2rE*d  ~yR(aq=>$ Cl}l,(=, P] excessive2.ExcessiveShockRifleVX 2fr*/.d&-'-'b.. YNOP a  !PY?,"PP6Y6N6O. jPD'-a } P(X q! P@?  -P -P'a?' JgaJ  J ]  3 J b  I J u  _ J h  u J F  J d  J o  J c  w*gJ] Z  /class SniperUpgrade expands WeaponUpgrade; o t S  AvdG2wv  *v% ta v v wt*tt )vt; BnF'=, \]excessive2.ExcessiveSniper,class BioUpgrade expands WeaponUpgrade; EIIZ5I,3w* II #  HizxJxxJG @ **w*a/!a/!,dKx%xw*aa/!a/!,a%3w3*w.3*:%:%.3.3.3.3.3.3.3.333a,DC?, GMK*/M=, Q]excessive2.ExcessiveBioRifle,class ExcessiveChunk2 expands UTChunk2; i,a/!ua/!\(a/!sa/!Tmexcessive2.ExcessiveHealthPack(a/!Va/!Vmexcessive2.excessivearmor(1a/!Ca/!Umexcessive2.excessivethighpads(a/!Ea/!Ymexcessive2.excessiveshieldbelt(a/!J6. 6. w?' T ,} C31%-|W ;YS1;-vz;basic-,Z %1z;info-,l %1z;rules-,t %1ez;players?%-W, %1b-, %1Kz;status-,Z %%-,l %%%-,t %1H-,t %%-W, %1z;echo-,p\echo\Y %1z;securezp\validate\HY-,z %16z;level_property-,zY %1~z;game_property-,yY %1z;player_property-,gY %1pUdpServerQuery: Unknown query: ;+-UdpServerQuery: Error responding to query.S P [WIM=a!,@>L= $ff@ dclass 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 } function Fire( float Value ) { bPointing=True; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(1) ) { bCanClientFire = true; bInstantRocket = false; if ( bInstantRocket ) { bFireLoad = True; RocketsLoaded = 1; GotoState(''); GotoState('FireRockets', 'Begin'); } else if ( Instigator.IsA('Bot') ) { if ( LockedTarget != None ) { bFireLoad = True; RocketsLoaded = 1; Instigator.bFire = 0; bPendingLock = true; GotoState(''); GotoState('FireRockets', 'Begin'); return; } else if ( (NewTarget != None) && !NewTarget.IsA('StationaryPawn') && (FRand() < 0.8) && (VSize(Instigator.Location - NewTarget.Location) > 400 + 400 * (1.25 - TimerCounter) + 1300 * FRand()) ) { Instigator.bFire = 0; bPendingLock = true; GotoState('Idle','PendingLock'); return; } else if ( !Bot(Owner).bNovice && (FRand() < 0.7) && IsInState('Idle') && (Instigator.Enemy != None) && ((Instigator.Enemy == Instigator.Target) || (Instigator.Target == None)) && !Instigator.Enemy.IsA('StationaryPawn') && (VSize(Instigator.Location - Instigator.Enemy.Location) > 700 + 1300 * FRand()) && (VSize(Instigator.Location - Instigator.Enemy.Location) < 2000) ) { NewTarget = CheckTarget(); OldTarget = NewTarget; if ( NewTarget == Instigator.Enemy ) { if ( TimerCounter > 0.6 ) SetTimer(1.0, true); Instigator.bFire = 0; bPendingLock = true; GotoState('Idle','PendingLock'); return; } } bPendingLock = false; GotoState('NormalFire'); } else GotoState('NormalFire'); } } function AltFire( float Value ) { bPointing=True; bInstantRocket = False; bCanClientFire = true; if ( AmmoType == None ) { // ammocheck GiveAmmo(Pawn(Owner)); } if ( AmmoType.UseAmmo(1) ) GoToState('AltFiring'); } 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(); } } function RotateRocket() { if ( PlayerPawn(Owner) == None ) { if ( FRand() > 0.33 ) Pawn(Owner).bFire = 0; if ( Pawn(Owner).bFire == 0 ) { GoToState('FireRockets'); return; } } if ( AmmoType.AmmoAmount <= 0 ) { GotoState('FireRockets'); return; } if ( AmmoType.AmmoAmount == 1 ) Owner.PlaySound(Misc2Sound, SLOT_None, Pawn(Owner).SoundDampening); PlayRotating(RocketsLoaded-1); bRotated = true; } } 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(); }*/ function RotateRocket() { if (AmmoType.AmmoAmount<=0) { GotoState('FireRockets'); return; } PlayRotating(RocketsLoaded-1); bRotated = true; } function BeginState() { Super.BeginState(); RocketsLoaded = 1; bFireLoad = False; 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); } N 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]gpvwvyCclass excessiveshieldbelt extends ut_shieldbelt; function bool HandlePickupQuery( inventory Item ) { local inventory S; if ( item.class == class ) { S = Pawn(Owner).FindInventoryType(class'excessiveShieldbelt'); if ( S==None ) { if ( Charge$ V ?-. -H -H'm W[ b^wA* ws*Aa/!\sa/!LwAscV a/!d:A:scU .A {c ' w*$b[ sAT P O   o `>"$.@@a, fff??L=w.*). . 2class ExcessiveRocketPack extends RocketPack; W >C=a!33??L= $ff@  Dz !w*  erclass 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++; if(frand()<0.4) TraceFire2(AltAccuracy); else 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(''); } } function TraceFire2( 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); ProcessTraceHit2(Other, HitLocation, HitNormal, vector(AdjustedAim),Y,Z); } function ProcessTraceHit2(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); } q S K2ma"r}} r!A%D6} -%S r}}  I D)1M>-%!?%&-' *$ Q b 3 , Q   cdef@aG@<:GR M L N Ga @  !YB Y1pN.bNN Fqp NqN #$tIpD?,((9cp?'|NxTJcpJTp?,Cf,a P p?,bPcpf%JfH|TJFq  qWB$.@a!h@L= ^CMFE%iACPassword::$ CyEi{F{AFzAiBNEEDPWiBWRONGPWOpiCpiB _  a%I %A%H *C#wC*C-lCa/!E-_'Ca/!CH?C-C'-F'l?CaC Ca/!X-@' A A,d#CC0-b.b?-g(wb*Bb]b-g'\.w\*B\]\-g'-g$?,@4aBCCCCI-_6$]-Fl #<l?b(l4aBCBCCBx-CH ף<H?b(HB4aBCBCBCB-@C4aBCBCCCBr--A%A,DAD?&;6A6A:6,d:6,d2b(b%?@D6C?,?@DJa A?,A?,@BABAF"--?b?,@`?,?,bBb,2|?S?|b'b(Sb(b%|4a CBCCCB,2|?S?|b'b(Sb(b%|'%D?,Db?,? --??,b?,@ ?,?,bb4a CB@CCB? --_S ',aD?,Db?,? +class ExcessiveTracer expands MTracer; yk m($aa!a (class ExcessivePAmmo expands PAmmo; i > Ba!hY@L=$.@ oclass ExcessiveBrowserMainWindow expands UBrowserMainWindow; function BeginPlay() { Super.BeginPlay(); ClientClass = class'ExcessiveBrowserMainClientWindow'; } ,class ExcessiveBioAmmo extends BioAmmo; s 6class ExcessivePlasmaSphere expands PlasmaSphere; EAclass ExcessiveDeathMatchPlus extends DeathMatchPlus; var string Mutators[16]; 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("excessive2.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; } function eGiveItem(Pawn PlayerPawn, class ItemClass) { local Pickup newItem; if((PlayerPawn.FindInventoryType(ItemClass) != None) || (PlayerPawn.Health <= 0) ) return; newItem = Spawn(ItemClass,PlayerPawn,,PlayerPawn.Location); if( newItem != None ) { newItem.RespawnTime = 0.0; newItem.AmbientGlow = 0; newItem.GiveTo(PlayerPawn); newItem.Activate(); } } function NotifySpree(Pawn Other, int num) { local Pawn P; local int ii; local int HealingAmount; ii = num % 5; if(ii==0) { HealingAmount = Min(200, (499-Other.Health)); if(HealingAmount>0) Other.Health += HealingAmount; if(num>=10)eGiveItem(Other, Class'ExcessiveShieldBelt'); if(num>=15)eGiveItem(Other, Class'UDamage'); if(num>=20)eGiveItem(Other, Class'ExcessiveInvisibility'); } if (num== 5) num = 0; else if (num==10) num = 1; else if (num==15) num = 2; else if (num==20) num = 3; else if (num==25) num = 4; else return; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('TournamentPlayer') ) P.ReceiveLocalizedMessage( class'KillingSpreeMessage', Num, Other.PlayerReplicationInfo ); } o DG uK r*/.&q!-'-'(G r*.V-6?%-'r -( .class ExcessiveFlakAmmo extends FlakAmmo; loGuD ]_ ]Em_PasswordzmF]&o_@n]&@*o_@n ~h& |O3 D r`^w.D*O%^O,TO.D!j=O O AF * 4class ExcessiveBladeHopper expands BladeHopper; Rg (^*$ 0class ExcessiveShockCore expands ShockCore; $--(!̌?D- ,q!- &}:.%-'}w.*.)B.9. Sw*"w*a$.-(SSw*a$.-'b?.a _  \%F %D%D *H#wH*H-lHa/!E-['Ha/!Cn?H-z'-'K?H\H Ha/!X-y' D D,d#HH0-`.b?-y(w`*v`Z`-y'f.wf*vfZf-y'-y$"?,"@4avCCCCI-[6$"Z-K #<K?b(K"4avCBCCBx-zn ף<n?b(n"B4avCBCBCB-y"C4avCBCCCBr--D%D,qDq?&;"6D6D:6,d:6,d2b(b%?@q6C?,?@qJa D?,D?,@BABDF"--"?g?,@`"?,?,gB"g,2w?b?wb'b(bb(b%w4a CBCCCB,2w?b?wb'b(bb(b%w'%D"?,Dg?,? --"??,g?,@ "?,?,g"g4a CB@CCB? --[S ',\D"?,Dg?,?  S Cr.*w*%5q!X-q!:.%8:.%8(5q! /class ExcessiveRazorAlt expands Razor2Alt; mIclass ExcessiveBrowserIRCSetupClient expands UBrowserIRCSetupClient; r 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(); } lJclass ExcessiveHUDTeam extends ChallengeTeamHUD; simulated function DrawStatus(Canvas Canvas) { local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime; Local int ArmorAmount,CurAbs,i; Local inventory Inv,BestArmor; local bool bChestArmor, bShieldbelt, bThighArmor, bJumpBoots, bHasDoll; local Bot BotOwner; local TournamentPlayer TPOwner; local texture Doll, DollBelt; ArmorAmount = 0; CurAbs = 0; i = 0; BestArmor=None; for( Inv=PawnOwner.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv.bIsAnArmor) { if ( Inv.IsA('UT_Shieldbelt') ) bShieldbelt = true; else if ( Inv.IsA('Thighpads') ) { ThighAmount += Inv.Charge; bThighArmor = true; } else { bChestArmor = true; ChestAmount += Inv.Charge; } ArmorAmount += Inv.Charge; } else if ( Inv.IsA('UT_JumpBoots') ) bJumpBoots = true; else { i++; if ( i > 100 ) break; // can occasionally get temporary loops in netplay } } if ( !bHideStatus ) { TPOwner = TournamentPlayer(PawnOwner); if ( Canvas.ClipX < 400 ) bHasDoll = false; else if ( TPOwner != None) { Doll = TPOwner.StatusDoll; DollBelt = TPOwner.StatusBelt; bHasDoll = true; } else { BotOwner = Bot(PawnOwner); if ( BotOwner != None ) { Doll = BotOwner.StatusDoll; DollBelt = BotOwner.StatusBelt; bHasDoll = true; } } if ( bHasDoll ) { Canvas.Style = ERenderStyle.STY_Translucent; StatScale = Scale * StatusScale; X = Canvas.ClipX - 128 * StatScale; Canvas.SetPos(X, 0); if (PawnOwner.DamageScaling > 2.0) Canvas.DrawColor = PurpleColor; else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Doll, 128*StatScale, 256*StatScale, 0, 0, 128.0, 256.0); Canvas.DrawColor = HUDColor; if ( bShieldBelt ) { Canvas.DrawColor = BaseColor; Canvas.DrawColor.B = 0; Canvas.SetPos(X, 0); Canvas.DrawIcon(DollBelt, StatScale); } if ( bChestArmor ) { ChestAmount = FMin(0.01 * ChestAmount,1); Canvas.DrawColor = HUDColor * ChestAmount; Canvas.SetPos(X, 0); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 0, 128, 64); } if ( bThighArmor ) { ThighAmount = FMin(0.02 * ThighAmount,1); Canvas.DrawColor = HUDColor * ThighAmount; Canvas.SetPos(X, 64*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 64, 128, 64); } if ( bJumpBoots ) { Canvas.DrawColor = HUDColor; Canvas.SetPos(X, 128*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 128, 128, 64); } Canvas.Style = Style; if ( (PawnOwner == PlayerOwner) && Level.bHighDetailMode && !Level.bDropDetail ) { for ( i=0; i<4; i++ ) { DamageTime = Level.TimeSeconds - HitTime[i]; if ( DamageTime < 1 ) { Canvas.SetPos(X + HitPos[i].X * StatScale, HitPos[i].Y * StatScale); if ( (HUDColor.G > 100) || (HUDColor.B > 100) ) Canvas.DrawColor = RedColor; else Canvas.DrawColor = (WhiteColor - HudColor) * FMin(1, 2 * DamageTime); Canvas.DrawColor.R = 255 * FMin(1, 2 * DamageTime); Canvas.DrawTile(Texture'BotPack.HudElements1', StatScale * HitDamage[i] * 25, StatScale * HitDamage[i] * 64, 0, 64, 25.0, 64.0); } } } } } Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 64 * Scale; } Canvas.SetPos(X,Y); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = WhiteColor * H2 + (HUDColor - WhiteColor) * H1; } else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 128, 128, 128.0, 64.0); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = Canvas.DrawColor * H2 + (WhiteColor - Canvas.DrawColor) * H1; } else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Max(0, PawnOwner.Health), X + 4 * Scale, Y + 16 * Scale, 1); Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX - 128 * Scale; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 0; } Canvas.SetPos(X, Y); Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 0, 192, 128.0, 64.0); if ( bHideStatus && bShieldBelt ) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Min(300,ArmorAmount), X + 4 * Scale, Y + 16 * Scale, 1); } Cclass 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; } iBHMXa  ! ?,lծ333@6@~?&wX*X@XTRծ>>lծL>L>~ծ>??, rBa  \YPYwB wB wB*B( ,W.\`Flia  \Y?, ii?BB`jG\Y?,   DaNUr.*2>.$U:.%q!- r%q!- &a$.:&-' {p 2wp l*p% `alp p w`*``$` )p`; ,class ExcessiveChunk4 expands UTChunk4; r`* $ J}wk evaDc8ra* ra ra r* A GAQ?,raaa/!K8 D?,G.Q@~Gaa; D?G.Q`F~Gaa-aa/!sa  Q\ ?,  m 0class ExcessiveBulletBox expands BulletBox; i_class ExcessiveHUDCTF extends ChallengeCTFHUD; simulated function DrawGameSynopsis(Canvas Canvas) { local float XL, YL, XOffset, YOffset; local int MaxPlayers; local string Spread; local TournamentGameReplicationInfo GRI; local int i; if ( (PawnOwner.PlayerReplicationInfo == None) || PawnOwner.PlayerReplicationInfo.bIsSpectator || (PlayerCount == 1) ) return; Canvas.Font = MyFonts.GetBigFont( Canvas.ClipX ); Canvas.DrawColor = WhiteColor; Canvas.SetPos(0, YOffset + YL); GRI = TournamentGameReplicationInfo(PlayerOwner.GameReplicationInfo); if ( GRI != None ) for ( i=0 ;i<4; i++ ) DrawTeam(Canvas, GRI.Teams[i]); // Rank String Canvas.StrLen(RankString, XL, YL); if ( bHideAllWeapons ) YOffset = Canvas.ClipY - YL*2; else if ( HudScale * WeaponScale * Canvas.ClipX <= Canvas.ClipX - 256 * Scale ) YOffset = Canvas.ClipY - 64*Scale - YL*2; else YOffset = Canvas.ClipY - 128*Scale - YL*2; Canvas.SetPos(0, YOffset); Canvas.DrawText(RankString, False); if (bTiedScore) Canvas.DrawColor = RedColor; Canvas.SetPos(XL, YOffset); Canvas.DrawText(" "$Rank@"/"@PlayerCount, False); Canvas.DrawColor = WhiteColor; // Spread String Canvas.SetPos(0, YOffset + YL); if (Lead > 0) Spread = SpreadString$" +"$Lead; else Spread = SpreadString$" "$Lead; Canvas.DrawText(Spread, False); } simulated function DrawStatus(Canvas Canvas) { local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime; Local int ArmorAmount,CurAbs,i; Local inventory Inv,BestArmor; local bool bChestArmor, bShieldbelt, bThighArmor, bJumpBoots, bHasDoll; local Bot BotOwner; local TournamentPlayer TPOwner; local texture Doll, DollBelt; ArmorAmount = 0; CurAbs = 0; i = 0; BestArmor=None; for( Inv=PawnOwner.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv.bIsAnArmor) { if ( Inv.IsA('UT_Shieldbelt') ) bShieldbelt = true; else if ( Inv.IsA('Thighpads') ) { ThighAmount += Inv.Charge; bThighArmor = true; } else { bChestArmor = true; ChestAmount += Inv.Charge; } ArmorAmount += Inv.Charge; } else if ( Inv.IsA('UT_JumpBoots') ) bJumpBoots = true; else { i++; if ( i > 100 ) break; // can occasionally get temporary loops in netplay } } if ( !bHideStatus ) { TPOwner = TournamentPlayer(PawnOwner); if ( Canvas.ClipX < 400 ) bHasDoll = false; else if ( TPOwner != None) { Doll = TPOwner.StatusDoll; DollBelt = TPOwner.StatusBelt; bHasDoll = true; } else { BotOwner = Bot(PawnOwner); if ( BotOwner != None ) { Doll = BotOwner.StatusDoll; DollBelt = BotOwner.StatusBelt; bHasDoll = true; } } if ( bHasDoll ) { Canvas.Style = ERenderStyle.STY_Translucent; StatScale = Scale * StatusScale; X = Canvas.ClipX - 128 * StatScale; Canvas.SetPos(X, 0); if (PawnOwner.DamageScaling > 2.0) Canvas.DrawColor = PurpleColor; else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Doll, 128*StatScale, 256*StatScale, 0, 0, 128.0, 256.0); Canvas.DrawColor = HUDColor; if ( bShieldBelt ) { Canvas.DrawColor = BaseColor; Canvas.DrawColor.B = 0; Canvas.SetPos(X, 0); Canvas.DrawIcon(DollBelt, StatScale); } if ( bChestArmor ) { ChestAmount = FMin(0.01 * ChestAmount,1); Canvas.DrawColor = HUDColor * ChestAmount; Canvas.SetPos(X, 0); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 0, 128, 64); } if ( bThighArmor ) { ThighAmount = FMin(0.02 * ThighAmount,1); Canvas.DrawColor = HUDColor * ThighAmount; Canvas.SetPos(X, 64*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 64, 128, 64); } if ( bJumpBoots ) { Canvas.DrawColor = HUDColor; Canvas.SetPos(X, 128*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 128, 128, 64); } Canvas.Style = Style; if ( (PawnOwner == PlayerOwner) && Level.bHighDetailMode && !Level.bDropDetail ) { for ( i=0; i<4; i++ ) { DamageTime = Level.TimeSeconds - HitTime[i]; if ( DamageTime < 1 ) { Canvas.SetPos(X + HitPos[i].X * StatScale, HitPos[i].Y * StatScale); if ( (HUDColor.G > 100) || (HUDColor.B > 100) ) Canvas.DrawColor = RedColor; else Canvas.DrawColor = (WhiteColor - HudColor) * FMin(1, 2 * DamageTime); Canvas.DrawColor.R = 255 * FMin(1, 2 * DamageTime); Canvas.DrawTile(Texture'BotPack.HudElements1', StatScale * HitDamage[i] * 25, StatScale * HitDamage[i] * 64, 0, 64, 25.0, 64.0); } } } } } Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 64 * Scale; } Canvas.SetPos(X,Y); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = WhiteColor * H2 + (HUDColor - WhiteColor) * H1; } else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 128, 128, 128.0, 64.0); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = Canvas.DrawColor * H2 + (WhiteColor - Canvas.DrawColor) * H1; } else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Max(0, PawnOwner.Health), X + 4 * Scale, Y + 16 * Scale, 1); Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX - 128 * Scale; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 0; } Canvas.SetPos(X, Y); Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 0, 192, 128.0, 64.0); if ( bHideStatus && bShieldBelt ) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Min(300,ArmorAmount), X + 4 * Scale, Y + 16 * Scale, 1); } 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); } kJclass ExcessiveHUD extends ChallengeHUD; simulated function DrawStatus(Canvas Canvas) { local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime; Local int ArmorAmount,CurAbs,i; Local inventory Inv,BestArmor; local bool bChestArmor, bShieldbelt, bThighArmor, bJumpBoots, bHasDoll; local Bot BotOwner; local TournamentPlayer TPOwner; local texture Doll, DollBelt; ArmorAmount = 0; CurAbs = 0; i = 0; BestArmor=None; for( Inv=PawnOwner.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv.bIsAnArmor) { if ( Inv.IsA('UT_Shieldbelt') ) bShieldbelt = true; else if ( Inv.IsA('Thighpads') ) { ThighAmount += Inv.Charge; bThighArmor = true; } else { bChestArmor = true; ChestAmount += Inv.Charge; } ArmorAmount += Inv.Charge; } else if ( Inv.IsA('UT_JumpBoots') ) bJumpBoots = true; else { i++; if ( i > 100 ) break; // can occasionally get temporary loops in netplay } } if ( !bHideStatus ) { TPOwner = TournamentPlayer(PawnOwner); if ( Canvas.ClipX < 400 ) bHasDoll = false; else if ( TPOwner != None) { Doll = TPOwner.StatusDoll; DollBelt = TPOwner.StatusBelt; bHasDoll = true; } else { BotOwner = Bot(PawnOwner); if ( BotOwner != None ) { Doll = BotOwner.StatusDoll; DollBelt = BotOwner.StatusBelt; bHasDoll = true; } } if ( bHasDoll ) { Canvas.Style = ERenderStyle.STY_Translucent; StatScale = Scale * StatusScale; X = Canvas.ClipX - 128 * StatScale; Canvas.SetPos(X, 0); if (PawnOwner.DamageScaling > 2.0) Canvas.DrawColor = PurpleColor; else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Doll, 128*StatScale, 256*StatScale, 0, 0, 128.0, 256.0); Canvas.DrawColor = HUDColor; if ( bShieldBelt ) { Canvas.DrawColor = BaseColor; Canvas.DrawColor.B = 0; Canvas.SetPos(X, 0); Canvas.DrawIcon(DollBelt, StatScale); } if ( bChestArmor ) { ChestAmount = FMin(0.01 * ChestAmount,1); Canvas.DrawColor = HUDColor * ChestAmount; Canvas.SetPos(X, 0); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 0, 128, 64); } if ( bThighArmor ) { ThighAmount = FMin(0.02 * ThighAmount,1); Canvas.DrawColor = HUDColor * ThighAmount; Canvas.SetPos(X, 64*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 64, 128, 64); } if ( bJumpBoots ) { Canvas.DrawColor = HUDColor; Canvas.SetPos(X, 128*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 128, 128, 64); } Canvas.Style = Style; if ( (PawnOwner == PlayerOwner) && Level.bHighDetailMode && !Level.bDropDetail ) { for ( i=0; i<4; i++ ) { DamageTime = Level.TimeSeconds - HitTime[i]; if ( DamageTime < 1 ) { Canvas.SetPos(X + HitPos[i].X * StatScale, HitPos[i].Y * StatScale); if ( (HUDColor.G > 100) || (HUDColor.B > 100) ) Canvas.DrawColor = RedColor; else Canvas.DrawColor = (WhiteColor - HudColor) * FMin(1, 2 * DamageTime); Canvas.DrawColor.R = 255 * FMin(1, 2 * DamageTime); Canvas.DrawTile(Texture'BotPack.HudElements1', StatScale * HitDamage[i] * 25, StatScale * HitDamage[i] * 64, 0, 64, 25.0, 64.0); } } } } } Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 64 * Scale; } Canvas.SetPos(X,Y); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = WhiteColor * H2 + (HUDColor - WhiteColor) * H1; } else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 128, 128, 128.0, 64.0); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = Canvas.DrawColor * H2 + (WhiteColor - Canvas.DrawColor) * H1; } else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Max(0, PawnOwner.Health), X + 4 * Scale, Y + 16 * Scale, 1); Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX - 128 * Scale; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 0; } Canvas.SetPos(X, Y); Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 0, 192, 128.0, 64.0); if ( bHideStatus && bShieldBelt ) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Min(600,ArmorAmount), X + 4 * Scale, Y + 16 * Scale, 1); } d]86:.%%6  F @r*- & bj}X.wX*a%a,taXaax}G-j}?,?j?,@}?,j?,}?,j a((- xjaѨp S/S(j}%Ypp +SYpp S aY( qclass 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(); } } jV 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; } Y \ '-r.*q!F-!?%q!e- ,!̌?-(- ,6 u!:&-' X i& ]_@ W% %B%@ *E#wE*E-lEa/!E-S'Ea/!Co?E-s'-t'^?EWE Ea/!X-r' B B,d#EE0-`.b?-l(w`*@`R`-l'i.wi*@iRi-l'-l$#?,#@4a@CCCCI-S6$#R-t^ #<^?b(^#4a@CBCCBx-so ף<o?b(o#B4a@CBCBCB-r#C4a@CBCCCBr--B%B,RBR?&;#6B6B:6,d:6,d2b(b%?@R6C?,?@RJa B?,B?,@BABBF"--#?d?,@`#?,?,dB#d,2F?W?Fb'b(Wb(b%F4a CBCCCB,2F?W?Fb'b(Wb(b%F'%D#?,Dd?,? --#??,d?,@ #?,?,d#d4a CB@CCB? --SS ',WD#?,Dd?,? e 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(); } 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(); } } ,class ExcessiveChunk3 expands UTChunk3; t_  .class ExcessiveMiniammo extends Miniammo; ~class ExcessiveInvisibility expands UT_invisibility; function GiveTo( pawn Other ) { Instigator = Other; BecomeItem(); Other.AddInventory( Self ); GotoState('Activated'); } e-'v-v! &6L-r.*q!sk-!?%q!es6 &:&-'  P`Z r*q!9 ,class ExcessiveChunk1 expands UTChunk1; i o B{ 8 @r*_.2r_*{  iWJ  q%-(-( y H$  FD -' ~class ExcessiveShockProj extends ShockProj; var int popcount; function SuperExplosion() { local int i, iExpl; local vector v; local excessiveshockproj esp; popcount++; log("Pop count!!!!: "$popcount); foreach radiusactors(class'excessiveshockproj',esp,350) esp.popcount=popcount; 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 && popcount<2) SuperExplosion(); Super.TakeDamage( NDamage, instigatedBy, hitlocation, momentum, damageType ); } 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(); } iJclass ExcessiveHUDAssault extends AssaultHUD; simulated function DrawStatus(Canvas Canvas) { local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime; Local int ArmorAmount,CurAbs,i; Local inventory Inv,BestArmor; local bool bChestArmor, bShieldbelt, bThighArmor, bJumpBoots, bHasDoll; local Bot BotOwner; local TournamentPlayer TPOwner; local texture Doll, DollBelt; ArmorAmount = 0; CurAbs = 0; i = 0; BestArmor=None; for( Inv=PawnOwner.Inventory; Inv!=None; Inv=Inv.Inventory ) { if (Inv.bIsAnArmor) { if ( Inv.IsA('UT_Shieldbelt') ) bShieldbelt = true; else if ( Inv.IsA('Thighpads') ) { ThighAmount += Inv.Charge; bThighArmor = true; } else { bChestArmor = true; ChestAmount += Inv.Charge; } ArmorAmount += Inv.Charge; } else if ( Inv.IsA('UT_JumpBoots') ) bJumpBoots = true; else { i++; if ( i > 100 ) break; // can occasionally get temporary loops in netplay } } if ( !bHideStatus ) { TPOwner = TournamentPlayer(PawnOwner); if ( Canvas.ClipX < 400 ) bHasDoll = false; else if ( TPOwner != None) { Doll = TPOwner.StatusDoll; DollBelt = TPOwner.StatusBelt; bHasDoll = true; } else { BotOwner = Bot(PawnOwner); if ( BotOwner != None ) { Doll = BotOwner.StatusDoll; DollBelt = BotOwner.StatusBelt; bHasDoll = true; } } if ( bHasDoll ) { Canvas.Style = ERenderStyle.STY_Translucent; StatScale = Scale * StatusScale; X = Canvas.ClipX - 128 * StatScale; Canvas.SetPos(X, 0); if (PawnOwner.DamageScaling > 2.0) Canvas.DrawColor = PurpleColor; else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Doll, 128*StatScale, 256*StatScale, 0, 0, 128.0, 256.0); Canvas.DrawColor = HUDColor; if ( bShieldBelt ) { Canvas.DrawColor = BaseColor; Canvas.DrawColor.B = 0; Canvas.SetPos(X, 0); Canvas.DrawIcon(DollBelt, StatScale); } if ( bChestArmor ) { ChestAmount = FMin(0.01 * ChestAmount,1); Canvas.DrawColor = HUDColor * ChestAmount; Canvas.SetPos(X, 0); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 0, 128, 64); } if ( bThighArmor ) { ThighAmount = FMin(0.02 * ThighAmount,1); Canvas.DrawColor = HUDColor * ThighAmount; Canvas.SetPos(X, 64*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 64, 128, 64); } if ( bJumpBoots ) { Canvas.DrawColor = HUDColor; Canvas.SetPos(X, 128*StatScale); Canvas.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 128, 128, 64); } Canvas.Style = Style; if ( (PawnOwner == PlayerOwner) && Level.bHighDetailMode && !Level.bDropDetail ) { for ( i=0; i<4; i++ ) { DamageTime = Level.TimeSeconds - HitTime[i]; if ( DamageTime < 1 ) { Canvas.SetPos(X + HitPos[i].X * StatScale, HitPos[i].Y * StatScale); if ( (HUDColor.G > 100) || (HUDColor.B > 100) ) Canvas.DrawColor = RedColor; else Canvas.DrawColor = (WhiteColor - HudColor) * FMin(1, 2 * DamageTime); Canvas.DrawColor.R = 255 * FMin(1, 2 * DamageTime); Canvas.DrawTile(Texture'BotPack.HudElements1', StatScale * HitDamage[i] * 25, StatScale * HitDamage[i] * 64, 0, 64, 25.0, 64.0); } } } } } Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 64 * Scale; } Canvas.SetPos(X,Y); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = WhiteColor * H2 + (HUDColor - WhiteColor) * H1; } else Canvas.DrawColor = HUDColor; Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 128, 128, 128.0, 64.0); if ( PawnOwner.Health < 50 ) { H1 = 1.5 * TutIconBlink; H2 = 1 - H1; Canvas.DrawColor = Canvas.DrawColor * H2 + (WhiteColor - Canvas.DrawColor) * H1; } else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Max(0, PawnOwner.Health), X + 4 * Scale, Y + 16 * Scale, 1); Canvas.DrawColor = HUDColor; if ( bHideStatus && bHideAllWeapons ) { X = 0.5 * Canvas.ClipX - 128 * Scale; Y = Canvas.ClipY - 64 * Scale; } else { X = Canvas.ClipX - 128 * StatScale - 140 * Scale; Y = 0; } Canvas.SetPos(X, Y); Canvas.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 0, 192, 128.0, 64.0); if ( bHideStatus && bShieldBelt ) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = WhiteColor; DrawBigNum(Canvas, Min(300,ArmorAmount), X + 4 * Scale, Y + 16 * Scale, 1); } Vclass 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); } } U_|j_  Q%m %@%x *?#w?*?-l?a/!E-P'?a/!Cp??-o'-p'm??Q? ?a/!X-n' @ @,d#??0-s.b?-i(ws*DsOs-i'h.wh*DhOh-i'-i$(?,(@4aDCCCCI-P6$(O-pm #<m?b(m(4aDCBCCBx-op ף<p?b(p(B4aDCBCBCB-n(C4aDCBCCCBr--@%@,c@c?&;(6@6@:6,d:6,d2b(b%?@c6C?,?@cJa @?,@?,@BAB@F"--(?`?,@`(?,?,`B(`,2C?Z?Cb'b(Zb(b%C4a CBCCCB,2C?Z?Cb'b(Zb(b%C'%D(?,D`?,? --(??,`?,@ (?,?,`(`4a CB@CCB? --PS ',QD(?,D`?,? [ y K3ua"ryh l!A%D6y -%y lyh J 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; } } } -class ExcessiveRocket extends rocketmk2; j class ExcessiveSeekingRocket extends ut_SeekingRocket; simulated function Timer() { local ut_SpriteSmokePuff b; local vector SeekingDir; local float MagnitudeVel; if ( InitialDir == vect(0,0,0) ) InitialDir = Normal(Velocity); if ( (Seeking != None) && (Seeking != Instigator) ) { SeekingDir = Normal(Seeking.Location - Location); if ( (SeekingDir Dot InitialDir) > 0 ) { MagnitudeVel = VSize(Velocity); SeekingDir = Normal(SeekingDir * 0.75 * MagnitudeVel + Velocity); Velocity = MagnitudeVel * SeekingDir; Acceleration = 12.5 * SeekingDir; SetRotation(rotator(Velocity)); } } if ( bHitWater || (Level.NetMode == NM_DedicatedServer) ) Return; if ( (Level.bHighDetailMode && !Level.bDropDetail) || (FRand() < 0.5) ) { b = Spawn(class'ut_SpriteSmokePuff'); b.RemoteRole = ROLE_None; } } 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); } } 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'); } } PC -' tclass HitSound expands Mutator; #exec AUDIO IMPORT FILE="..\Excessive2\Sounds\hit.WAV" NAME="Hit" GROUP="Sounds" #exec AUDIO IMPORT FILE="..\Excessive2\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 ); } GXQHA=$:ettt{#Ut{#U> Y=$:eRSMTVq%c.rc* `.>k&Xk%k%r`*-?,cc TUVI 6T6U6V--c #ID'-Yc jID'-xw`*c I&bc-*-(w*^.}w* w^*-(^*-(-'Mp@U- -p@-H&m%-HqIկ>p@Uկ>p?,VT?,qI->?%3>?, -6MD?6>?X}>`@ -6MD?6>?,?X6M6w*ra F !qMrrk>?%r fff?L>ta X !qMtkl,-t- '>?%t fff?L>Wsa N !qs kWk%6qD??6qD??6qD??s as q>1?d-(-v! -'&!?%-( T 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); } KxP L U=, ttttГ2\+1Гt=$:e2]excessive2.ExcessiveEnforcerg fGvL ca czdaPasswordzd}c&tfauec&u*tfauet  fN  qclass 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, "excessive2.ExcessiveHealthPack"); return false;} if ( Other.IsA('armor2') && !Other.IsA('excessivearmor') ) { ReplaceWith(Other, "excessive2.excessivearmor"); return false;} if ( Other.IsA('thighpads') && !Other.IsA('excessivethighpads') ) { ReplaceWith(Other, "excessive2.excessivethighpads"); return false;} if ( Other.IsA('ut_shieldbelt') && !Other.IsA('excessiveshieldbelt') ) { ReplaceWith(Other, "excessive2.excessiveshieldbelt"); return false; } // put it here just because if ( Other.IsA('ZoneInfo') ) ZoneInfo(Other).ZoneGravity.Z = ZoneInfo(Other).ZoneGravity.Z*0.968000; return true; } RMQSoJ=$:eԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝX11[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); } } 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); } aOf$( _  N%k %=%j *<#w<*<-l<a/!E-M'<a/!Cu?<-k'-m't?<N< <a/!X-j' = =,d#<<0-I.b?-(wI*~ILI-'C.wC*~CLC-'-$+?,+@4a~CCCCI-M6$+L-mt #<t?b(t+4a~CBCCBx-ku ף<u?b(u+B4a~CBCBCB-j+C4a~CBCCCBr--=%=,w=w?&;+6=6=:6,d:6,d2b(b%?@w6C?,?@wJa =?,=?,@BAB=F"--+?_?,@`+?,?,_B+_,2E?v?Eb'b(vb(b%E4a CBCCCB,2E?v?Eb'b(vb(b%E'%D+?,D_?,? --+??,_?,@ +?,?,_+_4a CB@CCB? --MS 'XND+?,D_?,? ]-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', 0.6 + 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); } {5class 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); } simulated function PlayUnwind() { if ( Owner != None ) { PlayOwnedSound(Misc1Sound, SLOT_Misc, 3.0*Pawn(Owner).SoundDampening); //Finish firing, power down PlayAnim('UnWind',2.0, 0.05); //was 1.5 } } Lclass 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'); } r4class 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); } } } 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); } WFclass 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'excessive2.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); } vHclass 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++; } PAclass ExcessiveCTFGame expands CTFGame; var string Mutators[16]; 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("excessive2.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; } function eGiveItem(Pawn PlayerPawn, class ItemClass) { local Pickup newItem; if((PlayerPawn.FindInventoryType(ItemClass) != None) || (PlayerPawn.Health <= 0) ) return; newItem = Spawn(ItemClass,PlayerPawn,,PlayerPawn.Location); if( newItem != None ) { newItem.RespawnTime = 0.0; newItem.AmbientGlow = 0; newItem.GiveTo(PlayerPawn); newItem.Activate(); } } function NotifySpree(Pawn Other, int num) { local Pawn P; local int ii; local int HealingAmount; ii = num % 5; if(ii==0) { HealingAmount = Min(200, (499-Other.Health)); if(HealingAmount>0) Other.Health += HealingAmount; if(num>=10)eGiveItem(Other, Class'ExcessiveShieldBelt'); if(num>=15)eGiveItem(Other, Class'UDamage'); if(num>=20)eGiveItem(Other, Class'ExcessiveInvisibility'); } if (num== 5) num = 0; else if (num==10) num = 1; else if (num==15) num = 2; else if (num==20) num = 3; else if (num==25) num = 4; else return; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('TournamentPlayer') ) P.ReceiveLocalizedMessage( class'KillingSpreeMessage', Num, Other.PlayerReplicationInfo ); } _w [6`r 'tttttttttt^^^^t1=$:e=$:e=$:e=$:e=$:e=$:e=$:e=$:e]excessive2.ExcessiveTimeexcessive2.ExcessivePowerupsexcessive2.EnforcerUpgradeexcessive2.HammerUpgradeexcessive2.BioUpgradeexcessive2.ShockRifleUpgradeexcessive2.PulseUpgradeexcessive2.RipperUpgradeexcessive2.MinigunUpgrade excessive2.FlakUpgrade excessive2.RocketUpgrade excessive2.SniperUpgrade excessive2.RedeemerUpgrade excessive2.TranslocatorUpgradeexcessive2.ExcessiveHUDexcessive2.ExcessiveGoreB"DNE Q] Excessive 2.0 Capture The Flag gD# -' \class excessivearmor expands armor2; function bool HandlePickupQuery( inventory Item ) { local inventory S; if ( item.class == class ) { S = Pawn(Owner).FindInventoryType(class'excessiveShieldbelt'); if ( S==None ) { if ( Charge 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("excessive2.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; } function eGiveItem(Pawn PlayerPawn, class ItemClass) { local Pickup newItem; if((PlayerPawn.FindInventoryType(ItemClass) != None) || (PlayerPawn.Health <= 0) ) return; newItem = Spawn(ItemClass,PlayerPawn,,PlayerPawn.Location); if( newItem != None ) { newItem.RespawnTime = 0.0; newItem.AmbientGlow = 0; newItem.GiveTo(PlayerPawn); newItem.Activate(); } } function NotifySpree(Pawn Other, int num) { local Pawn P; local int ii; local int HealingAmount; ii = num % 5; if(ii==0) { HealingAmount = Min(200, (499-Other.Health)); if(HealingAmount>0) Other.Health += HealingAmount; if(num>=10)eGiveItem(Other, Class'ExcessiveShieldBelt'); if(num>=15)eGiveItem(Other, Class'UDamage'); if(num>=20)eGiveItem(Other, Class'ExcessiveInvisibility'); } if (num== 5) num = 0; else if (num==10) num = 1; else if (num==15) num = 2; else if (num==20) num = 3; else if (num==25) num = 4; else return; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('TournamentPlayer') ) P.ReceiveLocalizedMessage( class'KillingSpreeMessage', Num, Other.PlayerReplicationInfo ); } cF \6dX, tttttttttt^^^^t1=$:e=$:e=$:e=$:e=$:e=$:e=$:e=$:e]excessive2.ExcessiveTimeexcessive2.ExcessivePowerupsexcessive2.EnforcerUpgradeexcessive2.HammerUpgradeexcessive2.BioUpgradeexcessive2.ShockRifleUpgradeexcessive2.PulseUpgradeexcessive2.RipperUpgradeexcessive2.MinigunUpgrade excessive2.FlakUpgrade excessive2.RocketUpgrade excessive2.SniperUpgrade excessive2.RedeemerUpgrade excessive2.TranslocatorUpgradeexcessive2.ExcessiveHUDexcessive2.ExcessiveGoreB"DNx Q]Excessive 2.0 Assault 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(499, 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(); } } } } hQ  qC# -' ^ ,@?^ *?% qxYa  x@class ExcessiveDomination expands Domination; var string Mutators[16]; 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("excessive2.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; } function eGiveItem(Pawn PlayerPawn, class ItemClass) { local Pickup newItem; if((PlayerPawn.FindInventoryType(ItemClass) != None) || (PlayerPawn.Health <= 0) ) return; newItem = Spawn(ItemClass,PlayerPawn,,PlayerPawn.Location); if( newItem != None ) { newItem.RespawnTime = 0.0; newItem.AmbientGlow = 0; newItem.GiveTo(PlayerPawn); newItem.Activate(); } } function NotifySpree(Pawn Other, int num) { local Pawn P; local int ii; local int HealingAmount; ii = num % 5; if(ii==0) { HealingAmount = Min(200, (499-Other.Health)); if(HealingAmount>0) Other.Health += HealingAmount; if(num>=10)eGiveItem(Other, Class'ExcessiveShieldBelt'); if(num>=15)eGiveItem(Other, Class'UDamage'); if(num>=20)eGiveItem(Other, Class'ExcessiveInvisibility'); } if (num== 5) num = 0; else if (num==10) num = 1; else if (num==15) num = 2; else if (num==20) num = 3; else if (num==25) num = 4; else return; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('TournamentPlayer') ) P.ReceiveLocalizedMessage( class'KillingSpreeMessage', Num, Other.PlayerReplicationInfo ); } jp]6kQkLtttttttttt^^^^t1=$:e=$:e=$:e=$:e=$:e=$:e=$:e=$:e]excessive2.ExcessiveTimeexcessive2.ExcessivePowerupsexcessive2.EnforcerUpgradeexcessive2.HammerUpgradeexcessive2.BioUpgradeexcessive2.ShockRifleUpgradeexcessive2.PulseUpgradeexcessive2.RipperUpgradeexcessive2.MinigunUpgrade excessive2.FlakUpgrade excessive2.RocketUpgrade excessive2.SniperUpgrade excessive2.RedeemerUpgrade excessive2.TranslocatorUpgradeexcessive2.ExcessiveHUDexcessive2.ExcessiveGoreB"DNw Q]Excessive 2.0 Dominationz@class ExcessiveTeamGamePlus expands TeamGamePlus; var string Mutators[16]; 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("excessive2.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; } function eGiveItem(Pawn PlayerPawn, class ItemClass) { local Pickup newItem; if((PlayerPawn.FindInventoryType(ItemClass) != None) || (PlayerPawn.Health <= 0) ) return; newItem = Spawn(ItemClass,PlayerPawn,,PlayerPawn.Location); if( newItem != None ) { newItem.RespawnTime = 0.0; newItem.AmbientGlow = 0; newItem.GiveTo(PlayerPawn); newItem.Activate(); } } function NotifySpree(Pawn Other, int num) { local Pawn P; local int ii; local int HealingAmount; ii = num % 5; if(ii==0) { HealingAmount = Min(200, (499-Other.Health)); if(HealingAmount>0) Other.Health += HealingAmount; if(num>=10)eGiveItem(Other, Class'ExcessiveShieldBelt'); if(num>=15)eGiveItem(Other, Class'UDamage'); if(num>=20)eGiveItem(Other, Class'ExcessiveInvisibility'); } if (num== 5) num = 0; else if (num==10) num = 1; else if (num==15) num = 2; else if (num==20) num = 3; else if (num==25) num = 4; else return; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('TournamentPlayer') ) P.ReceiveLocalizedMessage( class'KillingSpreeMessage', Num, Other.PlayerReplicationInfo ); } lP ^6mc4}"#tttttttttt^^^^t1=$:e=$:e=$:e=$:e=$:e=$:e=$:e=$:e]excessive2.ExcessiveTimeexcessive2.ExcessivePowerupsexcessive2.EnforcerUpgradeexcessive2.HammerUpgradeexcessive2.BioUpgradeexcessive2.ShockRifleUpgradeexcessive2.PulseUpgradeexcessive2.RipperUpgradeexcessive2.MinigunUpgrade excessive2.FlakUpgrade excessive2.RocketUpgrade excessive2.SniperUpgrade excessive2.RedeemerUpgrade excessive2.TranslocatorUpgradeexcessive2.ExcessiveHUDexcessive2.ExcessiveGoreB"DNB Q]Excessive 2.0 Team DeathMatchp9+K[r--( -6K333?a$>KKH   wn l# JSe6w*a4w*a t/A.aMH/'w.* w.I.- r.$.-.-1r..*..zMJIJ ף=FMHJ::$r*?=.6 DM?/w.6 DM?/.IGa>_a/!s Q= B6 DM?/.-..- w*a1r*-a  M?,/wa/!Oaa  M?,/a M?,/w*::$a MPHw*a* ::$ w*] D /??/*i,r*-a  կ?,/fBa/!Oaa  կ?,/fa կ?,/w*a*r*a x /&H/I FAclass ExcessiveLastManStanding expands LastManStanding; var string Mutators[16]; 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("excessive2.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; } function eGiveItem(Pawn PlayerPawn, class ItemClass) { local Pickup newItem; if((PlayerPawn.FindInventoryType(ItemClass) != None) || (PlayerPawn.Health <= 0) ) return; newItem = Spawn(ItemClass,PlayerPawn,,PlayerPawn.Location); if( newItem != None ) { newItem.RespawnTime = 0.0; newItem.AmbientGlow = 0; newItem.GiveTo(PlayerPawn); newItem.Activate(); } } function NotifySpree(Pawn Other, int num) { local Pawn P; local int ii; local int HealingAmount; ii = num % 5; if(ii==0) { HealingAmount = Min(200, (499-Other.Health)); if(HealingAmount>0) Other.Health += HealingAmount; if(num>=10)eGiveItem(Other, Class'ExcessiveShieldBelt'); if(num>=15)eGiveItem(Other, Class'UDamage'); if(num>=20)eGiveItem(Other, Class'ExcessiveInvisibility'); } if (num== 5) num = 0; else if (num==10) num = 1; else if (num==15) num = 2; else if (num==20) num = 3; else if (num==25) num = 4; else return; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('TournamentPlayer') ) P.ReceiveLocalizedMessage( class'KillingSpreeMessage', Num, Other.PlayerReplicationInfo ); } sM# vz _6xR8bbtttttttttt^^^^t1=$:e=$:e=$:e=$:e=$:e=$:e=$:e=$:e]excessive2.ExcessiveTimeexcessive2.ExcessivePowerupsexcessive2.EnforcerUpgradeexcessive2.HammerUpgradeexcessive2.BioUpgradeexcessive2.ShockRifleUpgradeexcessive2.PulseUpgradeexcessive2.RipperUpgradeexcessive2.MinigunUpgrade excessive2.FlakUpgrade excessive2.RocketUpgrade excessive2.SniperUpgrade excessive2.RedeemerUpgrade excessive2.TranslocatorUpgradeexcessive2.ExcessiveHUDexcessive2.ExcessiveGoreB"DNkQ]! Excessive 2.0 Last Man Standing{Cclass 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 >= 18 ) { 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); } f_-N1 aQ8>$  uGHgGa G ia+G Air  Me"&-(a  E  Sx (A ( @A{s d)BB`jGs b? J BgF.i a  gl ?,dg k_  ;-jGa>_ 9?%  nw Su!"r*/.&-'-' @C?,.(w q!q!%  FWh u8w.*.g?,a!~?>L=$-' 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); } ]Hq9ow*7pthrow_translocatorS.w*7pthrow_translocatorS.a/!-'] 6y6w6D. . j]%''. ywDa | ]0w*- ' a/! aK.]7q!% 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); } wiclass 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); } } Va!5%q!- :&-' K?mr* ka/!.-n E?,?,nzD?,??n? N{$)F{RFL=FL=A,%sw* ::$/a/!\r. *a+- -ma #<  m#?vz.<wz*Yr*rz-k{?,=k{?,=KDKKkD!KKkD?KDD?Z|?%|{z-&zL>|z|*? @? 6*?,x6*>,6*?::$* ի47:nK** իo:nK*::$6 ?%**իRI9nK*E 6x6xկ?6?,wb$*# AE**# A xxw-P*E6-D?6-K|@?nn6-6 n  nGn6-6  6-6   w*-P  -  -a+-X- a+-m  xxw-66?666-6666a  m6x6x6wxxwAx{ pV7b.. omiJ 6o6m6i6N66NC6N6@ 6No6Nm6Ni6NA 6No6Nm6Ni. #qJD'-rA. #q@D'-rC. #qAD'-r@@ջm?,կ?,z,AiAAջm?,կ?,z,AiJJջm?,կ?,z,Aiff?ap @Aap ACap J y)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); } } } QJd&R>=$:etttttttttГttѸBѸBѸBѸBѸBѸBѸBѸBГttttt=$:ettt8 8 8 =$:eN"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; } } dTn=9=, S]excessive2.ExcessiveHammeruFclass 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; } ` z2- ,-(!̌?R- ,q!- &r.*%?r.*.$-'b?.a U_LWM!x'n 6fKq"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; } } } wclass ExcessiveSkaarj expands TSkaarj; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } ^bODS- wD[::$D* Dg ?!GD-a$@a$@ ` //============================================================================= // 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); } [[R-'a$@a!z?w.C*.C-::$C* D?a a(b>,a&&a Pq6qL6LLLqq&qLw?qL6LLL&qLw&%#L=#L=&%#L=#L=ի?,i ]Ib2_VwTZє;aG նmo h=@]E&xcessive Server BrowserA]Excessive Server Browser. \s<<::.% ,-q!- sclass ExcessiveNali expands TNali; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } f G$#w* w{ {?%B{{@?BB{ HA{a+P- ::$ E-- ?fa f $ yclass ExcessiveFemale1 expands TFemale1; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } ~|"-(  h[ur igeS )'w.e* wer pdj q!J' jt dP)BBPCGt bL? Wmdr:da  d?da  V 5 D}% -(=w*%.Bb:.%:.% v! 5  cs  "tuvw A @C?,.a!nfff?v!  Y K hfw.K*E%^E,TE.K!X=E E$ Wp J IS ea/!\.g?.]̾#"DC>Cw*Z- $@.$@.-aJ \@L= Q^GuI GE Gn\EPasswordz\oG&f^EhUG&h*f^EhUf ln k=q i R+(oi - S-_a  "@_=-'= x `^w.x*P%^P,TP.x!r=P P z TW..rW**q! RR:W%5q!%   8 q!]  B=BY::$96?,xY6-333?{::$PGa!b>-(a jxk% GJ* c^? ^c bGLb*ja\S#=\a/!n ;w.\-8  Q}L q I[[o$b?-'af[f M?&yD?,&]?,[@@y%cy%cq!p hsc;:s.rsa  UVPVws ws ws*sa/! L>.sB.Cvw, , L>v @s3 w.Uի?wCvya  UV?, yy?,pBpB`jGUV?,  -class FlakUpgrade expands WeaponUpgrade; HHc2}yH]?,_w*Ya q HPHY^{a B HPH qclass ExcessiveCow expands TCow; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } aZG-q!Jhw.*Rr.*.$h.$D.rD**q! :D%5q!% Ga>ZZL>b??&zD\C?Y  ..E*!q a q a "@aq! OUpV<TC8/y%c%y%c,v!6v!  Se SQe a/!n q!] 0class MinigunUpgrade expands WeaponUpgrade; bYb1aXS=Xa/!B ;w.X-8 _ FC!X?_ A?, ^ a AW,,@%@Wa } !AP@[a Vh]=, X]excessive2.ExcessiveMinigun `fs%-(-(  cIv-(v-v! &6L-r.*q!sk-!?%q!es6 &:&-'  Z Al ?%::$a!xa??(::$ b a  >9?,d6?, zDPCG-(6 -- 'v!?  i -:'-r.*q!F-!?%q!e- ,!̌?-(- ,6 u!:&-'  Y !w*   .class PulseUpgrade expands WeaponUpgrade; d  V~o VpPop count!!!!: SV/a6 jSCLSVV10?,C??a  ! a A D?V,,~%~Va D  ծ?,d?,d#?~a i FQLaC?,.a!nfff? <Shc \D#R V,oc l k m R "nlH;s.rla  ~}P}wl wl wl*la/! L>.lB.Cku, , L>k @l3 u.~ի?uCkva  ~}?, vv?,pBpB`jG~}?,  @JOi )[ $\Oa/!`\Oa/JOa/d(Oa/!W wJ  wJ Oa/J&Oa/d(' eiq^ͷ=, V]excessive2.ExcessivePulseGunlU \ ?w::$}A-,::$--aL= #=($  t- >???>a !ծ?,?,#??\ pB b?, ff>aL=L=(  Fr$o-#w*Z'$ff?.a![>L=b?::$q!k'( Q PA`@L=::$g,a ::$/a8 ?,::$ ^?^#>^ ?%uĎ?^  u?,_ Du ի??Q10 /a8 ?, ^?^#>^ ?%uĎ?^-.su?,  u?,_ Du ի??Q10?, uclass ExcessiveMale1 expands TMale1; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } ^/class RipperUpgrade expands WeaponUpgrade; uclass ExcessiveMale2 expands TMale2; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } /class RocketUpgrade expands WeaponUpgrade; HZ v  ^. .  I  Y  4B4B - '- '_ V. G'- '.^ H   Z!.  A BC*Ce. G'N ^N^ G O ^OP ,!J,!J,!V,!U,!W,!TZ%Z,Z!4^PZ|WZ 4.46- {4k{41Z ,Excessive Deathmatch41 ,Excessive Team Deathmatch41 [,Excessive Capture the Flag41 ,Excessive Domination41 ,Excessive Assault41 =,Excessive Last Man Standing41 441FServerListTitlesWZUBrowserZZ sclass ExcessiveBoss expands TBoss; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } 43class ShockRifleUpgrade expands WeaponUpgrade; yclass ExcessiveFemale2 expands TFemale2; exec function GetWeapon(class NewWeaponClass ) { // intercept old weapon calls and replace with Excessive versions if (NewWeaponClass == class'Botpack.Translocator') NewWeaponClass = class'Excessive2.ExcessiveTranslocator'; if (NewWeaponClass == class'Botpack.ImpactHammer') NewWeaponClass = class'Excessive2.ExcessiveHammer'; if (NewWeaponClass == class'Botpack.Enforcer') NewWeaponClass = class'Excessive2.ExcessiveEnforcer'; if (NewWeaponClass == class'Botpack.UT_BioRifle') NewWeaponClass = class'Excessive2.ExcessiveBioRifle'; if (NewWeaponClass == class'Botpack.ShockRifle') NewWeaponClass = class'Excessive2.ExcessiveShockRifle'; if (NewWeaponClass == class'Botpack.PulseGun') NewWeaponClass = class'Excessive2.ExcessivePulseGun'; if (NewWeaponClass == class'Botpack.Ripper') NewWeaponClass = class 'Excessive2.ExcessiveRipper'; if (NewWeaponClass == class'Botpack.Minigun2') NewWeaponClass = class'Excessive2.ExcessiveMinigun'; if (NewWeaponClass == class'Botpack.UT_FlakCannon') NewWeaponClass = class'Excessive2.ExcessiveFlakCannon'; if (NewWeaponClass == class'Botpack.UT_Eightball') NewWeaponClass = class'Excessive2.ExcessiveRocketLauncher'; if (NewWeaponClass == class'Botpack.SniperRifle') NewWeaponClass = class'Excessive2.ExcessiveSniper'; Super.GetWeapon(NewWeaponClass); } yE&1 @X DaJ k,!r,!T,!S,!U,!n,!pb -X   B <   L  A ACB ] ] ] S c S LS W S bS X S C S cpoFW S V S FS kS D S AS E S S ] 7S \S MS y S IS @ AgS }F[ S aS `I~ Ab S U S TFa ] =S AH S F S KMzFNS rcOMLFWS XS IAl S fIOAZS CS 9pnIPS `IPIWAoARS kS ,Fd S jS JMvILF]S dCS S oS vMFu S LS BS hpmFV Ko M0AvFi KF cKMY S dIgkUK^ Mm S GcBIv }H S pS n S ES  kU ItF_ kRc2Dvcs v B Mh ] \AZS J S uK^Fg S D}lS r FiS zID S sFJ F` K cMS eS o S T S g kwcGKE I~Fx DokJFv Dp AK IekmDoF[ Fq S M Fe kYS v S u ID F] K_Fe S _ AKFXkcc c&FZ FD I ] EIT KM S w cyIdFtk~k-KK FO_ Ink|pBMRIPS p Fe Mt I} k3Fm KSKhS c kO I\S z Ac S Z C[I~Kn KS}I }lkncKIXF/OkS v Agkbc@S I cp] CIq kkQkicK@ FP FP kYIq FO c_S VKp cNS h S ~ KHIq c?k|AK IM KPFm S t ] wS w AG IUFh FO A} Fekf S C K` IL KxkkkZ IV] fFeHcKDzkLk3S gS S IeI]FXI|kS Q II I\K@FcMtIU] hM<FC S Q k}rIYKFS KFfcLS a kCiS Y S _ S j k%S H FtKA cIS L }O}YS \KQk|IFMRMVIS -fS ` MJ S \Q S \P S \R Ig k3kk3cAGS k kJS t Iq Ka S m MW S l IJ MsMc AeS Mq S b KES EcGkbKHS j S CS w S { kkk|F] cNFx cES b cFl Ms S -dS B cFxS bcHFu S N ] mS kcD?Kd k|kkS B ccHS g kj9kkKbcDS y S h cHc*cPS  cPFpMsS AS z k%S [ S f S i S qF[KQ S CS hS \ I]c8c8MdIjFv S { S R S OFrc?LKjG Iw F`I^ MK }P kjMH }O c?Kcc?ciARS Z cScc@k9c+S N c8c8cMcMLUc8S i cC.c8IYS G IDc Okpc cALcLc S | cFJcS E S scLKVFP c8FVc}H KycHCacHcYcKq c)K[}J FjF FwcFcHcS}I c TF~ cITIN KnFN KuceS X AG }t Ke MI cDcHVK\ kmIf KckYc S x FbcjcYFkcg}XfcAS @S JFA cbFN KTcF@ cTFc[K@ Kj AT}QF;`cZPcFd c Aj FNS a Fp IWKDN cQS}U c[}A S e I}KMI[}p I` cCcC _c] KccVIoAf c4 cV}{}QFY n d c c&DiMeMW }| c}clcTc(Ii cUDT DR cIKhKo IL c1Rc1Sc1[cHKk IK MDycUFuc c*FqI+kNI`cISc] oc S s c Fo cPcMecQ[S ` IZcFYaS ^ KLSc c?c c:c!cFS HcD^ cWc>S Am FScc}u ccS d DS KLO cc c4 c4S \ F}W c(c4Cc4Dc>cWc@Kf cIwcPcP F~IzccFk ] ^t xb c* c*KDO Kac cWcKkc>cHcHcFc c>cWc>] J t fl cWcccUCcUDcUcU cU c>cr c+c+ c+aS ] cBc caKScc ccS ] cc cccTcT cTCcTDcTfcT c>cWFm p5uKic }^c S -WcHt r }v c1c1S Ev z v { v | v } v ~ cYocTc~KC Myt )b ] ({] {WW  DW  Q'W  ^?W  kW  xn En Sn an o(n } n Kn Yn gn  uflABm@ {M  HM  UW b?M  p'M  }WM  JC WQcB qJ FLx  ZL gzD tx  APD ML Z'L gD ty  AD N7D [?L hD u} BWL PG]A luj |uLJ| X}  d^_p} O@\uk jMk x1k F'k Tk b[k pz  ~W}KWZ YIn e?}r?Z @Z L'Z Y}fZ t'}AYuOY D}RWs ` m  |E  Iuw Vsd\rT@@Sf@ZafRUGX|\Ui XYJfV~pUpni ^Z l i yWdGOK ko vWP C?P PF]P kIWx'P F,@ SF`P n:@ {OHt VIG  cFpP~gLFZs hmvs DFR@`L  nZ zP  ILVs  dD  qV ~P  L]  YWZ fFeu'Z Z{iZ w?P  F?Z SWP  b'P  ozF |5Z Iv~ U} bF o@|IF JW XFeY s@APOF ]~ j7@wOE8Z SF  a{  nQ{uQJz@YNF  gPF t~ A~ N=~ [7F hgF  u_B[QP'Q_P@nF  |F  IF V1Qc~ rMQ@NmF  \\iIjw\ET S av\o\}O KPXnRfLZ xG E@ R\_Z mLyrGqUFcB q@ Z NN\[~  wY CIE QY _Z m9Z y_Z EKVQZ gZ s|X \KXZ Y=\e_ sN @WtLLtZ@ Nr  [U_ hX u@ C[Z Pr  \'Y iMr  wY DM@ R_ _K@ l'Z yW  EuZ R'X ^HBl1Z n'W  z?N  GO  T'O  a?O  nR  {Z H?Y TWN  bWO  oWQ  |WR  HG UW  bWPoWL}Kr  KB Xw fWW  tOAPOX ]WX kR  yr  F _ S@ `O  mWY zHN  Ws dw rMZ @PLOZw h'R  vQ  Cr  Ow \B j'Q  x_DB S?Q  a@ mw zY H'N  VF cY pZ ~Q  J?R  VLcw qX Y  M?X Z?W  hWOuC  CN  PU]l kLxI^ FIxSI_aIf pIZ ~-_ MLZa  h`xuI mX z,FHWz  V[ cZ qL~Z LY YR  gVsFAB OM  ]{y iuB  wuG D8L PpB \W[ jWT  xWx E?[ R?T  `?x m'[ z'T  HILUIPcIOq'x qL\  [[ hT  vx C[ PI| ^T  lIOyx GT Tt `ny }^  Ir  VF  c![ pT ~_  Jr  W[ dE rE~ ~mKz  Zl gzy tM^  @MF  MgT Zg_  fgr  s@[ @x NN_  ZNr  gx~ tPy A^  MF  ZT g_  sr  @@ Mm Zm~ fy s^  F  LmT Y`~ em_  rWrmr  Mb[ Zk hk~ ty A^  Mw Zj hF  v@ C_  PL]Lkd yB Ed~ S7y `K^  lKF  yO FNT SX _@ mcY z\| HV[ Tw bI p` }LILWWqeWusWY AcOO]Wl kc xWmFa  UI bPoF}LK@ YFfFtLFBPPO^FltzJ@ Hu UO b@ oP|@ JIq  Wg  cB pF~ALA[A j{yMIo XZ dPpe  ~ KO ZX gFsL  AG NB [Fie wU DQQF_SHmb-u?)b_KFYcgw vge  D{JQWV  _WU  l@Z yWS  F?V  S?U  `?S  myOJz'V  D'U  Q'S  ^GtkEg_DtFQ zV  GU  TF ac n{|LJS  XV  eV rB @U  MFZB hS  v@CHk  QF ]N jme  vw Cb{QP_O mk  zFGl U|  cI]p@ MEZB ik wbZ DB QF ^T kXFx\  F5@ S{`Z nzB {vAHMT WM dM\  sF@@{NT \PB i_ vAuT D Q\  `e  mF zZ G9FTe  bT o |\  K!Z X7B e} rk ~-@K5FYB gcLtcPBcO PA]8Y lKT zY GLS a\  p8L}_FK!{YO@ g8PtNe  BIL  O=A\VZ kV{xK F8O UK\  bg  og  |g  HSR UO` aLnB |G JhG VG bg  ncmzcz  I` V` ccl pig  }\g  ILV S5dhD Yw e{sy A` Oj^\qB z[MHqV UEB bED oE |bBIg  KcnW[r  E[F  R5` ^J\kIbGxD i'y v'zCx QyCk^xB IzV}tdn\Xg  tz@y ND [uugA\V kU  zZ Gy T" b1F  o1r  {w HHMUHRdC  sC mD Kr  Xh d  rk\~B Zw hV  vOCPQh^_g^}Z [  hw  uF  B_N~j \xag htK O` [`B hr  u`D BeeO{G tw  Aur  NuF  [pD gVDs?zw@  EV  Rb  _MF  lBvxMr  n@Q{A^L~gj]A QJ` Rm_a\Ly h|Nu{vCzsyytlxg`szGOAtaOrgpqgWkD ~u  K  Xw ekB spg@Pgd udB BdD O~  \:G i\  v'r  C'F  Pvg\otCl\wv S!  `FmV {k Hi\Ut qWz@Wy NB Z?y hB uwgCmB jm ww D` Rw  _m\lUuHlA }`A ~Q=dW| /S P |Bo ~dGuLo A DO Q ^S)8qPHui D$^ +Bd@~mOWk C#B 2>LeVo  q o  } FTfJo  pR }\ bJP&lQ~:JTiDUo  mo  z EG2HeL PWTqPEdMnS Q>GA2NH!o  V]&b @Q&^2N|dKdJ2\]n|9,K_w23LFD RdLN^2NlLI z?FDE#PTI2[Y]LG v%C2&`mLN~  L/g  jg  v2 iB2D k`@~w }uQ arBS%(U0R }`WJ P>SaR t 2@^A2v_k U  HbKo j\g x   _Z  2W4LU@P8IU`Gu^] aSkLNt`MnBQ8Ipm@~yJo  wOo  D i( Qeo  qTf}`KdcTVsGT azA [ ] PyxLNI ,W XKPC5o  SX a`]4CKAco DkKdRQVsvZg  i iu@o  TxMn` ]!UNR|-cbo  Phr  \G ikMnv"d\&F ]:Rd  ]vMo S~o  aCVm`LNCxWQ]4Ih~g  qoR ~x@~K`| ITsV]49IN-B]u o QWHdOl Xkz ~veV3B[ELN]E)kX&To  r2NP aMEKdnkGuRo  G V>gSg  zR GEMnTR B O]4?nV&mPKOYo gcEuV8Iz\%,Co o g}]4\dlL @EWLg`c5Co  xE@~DeCBkWE2N\2_\j >CFR I]8IV R`_2|-XYalo2NMk@~[o  Y2Ne2Nsy~AjR8I~o  GTLIFS'YkF@\8IFRHOlCWR BZ?6\@ RgD_]49cg  \% hdKFnQ]46PIEF'K GrM@y]46ySiVo}[ Eh ` o  n TWNz ]]4pH  RU0x  MLM F]4NL R3HZ H?>b Hbe` \>EE ]4MF %5S 2]4prH mKdx z U\ Z  q (} X  e V r AA U P o  ^ @Gj R q \Y^~ RWM\ o  i mMnu _]c ]45@ VIu ]42~ R>Lp ]4z| g  v ]46B Ax ]4@U E]4PAU Wo e V `s ]48S mGuK R&@ ]3,^ R aJ Ok i"y ]4>[ 7Y ]4:P  iJ _]s i ]P]49mo f]4TtSo  H]4} T]4wJQ]4NH\HHV ae^mWC]46Z0PSg  @PM]k-[SDbH6*j]4:T]4t_N]4`B+]4vJb CX Fp[]4|K-g  G2G Sr _]4a lv MG Z  hfT&N_^l]4p J&R z]4BG\o  I]46U6 K]48i4g  a]4Im Fv *|]46fi 6\X8IySJ-B .oi  ] iD$}]4Ia}]4Jj]4tJt|]4ah]|-I_RvxKdH]4U l]47A]4u x]4Jm]4Mw iC$DH]4hQQgzDxeg  |L]4|IPZExGu_PD TVo  ` i lfD JS]4|VQPRS]4fKbQ]4d2H zf!l+_GMP]4h-TX]4F6|W]4WB\]4}4YT]4TVV]4bFjR]4AIL`]4[AM[f h zD$N]4grd]4AAY\] Z|]4J w iA zC$_i?CSABk]4CAC]` Fm]4EAf^e kqD P|9+\o[oG z vpV TwD a8SHm8Amux]4QAb zs_g P8]4FDw]-B} 8He0d /T( C{j c{w q{B  8d?Lo K 8F?YKX X xc XWq[]4uDL WHoAv]4E2pOux]4tC aBw?fyC_Vrb]4D*TdgX]4Jd~I]4@GG  IGL[P]4Tk]4Bxb,ASHmG u]4k A[Qlby} Hv]4~~o  |QHo  Y]4De]?i ["hB JV XS:ej&_w  Ed?RPQrF_  eS%_D cv A{Nw \y jZ x  GDS hKG sw  @]I]MEGujRk-_RvLV aBVc "y M[Sk-ho  U&bc?(Hbb-paSH] /ew  Tq [Ya2ctz]47ncveo]4|[ NWp-eERG W S6c]4:Yw  Sbb,`aSHLD Tw  `}FEmh@rYg  r >.~ >Fl  r?kO > hz A5b ]48W x O A(\ o|D G @ SQaL `m o  {  LG XHuS  H iVT i@j g  j o  w ?aD ^e SLC g O ]4@v {  v ]49C ]4@| ]49| H(u ]] Ez v@ ]4~ D }!]4=I!]4DF!R J!S&W!I u!vDjA! BMk! Ix!