*E7@#SVgqD#LJ5(7NoneEavyAssaultPlusAssaultBonusPackSetTextMapsCoreSystem GetValueCreateControlSetFont ParseOption AliasNamesEngineClientMessage LabelList SetValueCriticalEventTriggerPostBeginPlayUWindowBotpackRedeemerDeath TakeDamageTick ChangeScore DeActivated UBrowserAssaultTheBaseTournamentPlayerStylesSetDelayedNotify SetRangeIdleSetNumericOnlyTeamCannonPlusMinigunCannonPlus RemoveFortFindInventoryType SetMaxLengthSetTeamBegin UTBrowserEndCamDispatcherAddItemMapsLoadConfigBroadcastMessage PreBeginPlayAssaultPlayWinMessageStartDeactivateTCP_ChangeTeamGenericSpawnerPlayDeactivate TeamCannon FortStandard PlayerPawn CostEnabled TCP_Default DamagedStateTCP_DeActivated Dispatch RocketDeath TimeMessage CostDisabledTCP_WarExplosion TCP_DestroyAssaultPlusTriggerActivateGameMutatorAssaultPlusScoreboardInventoryTakeDamageAssaultServerListTCP_ShockWaveMapsResetConfigMapsSaveConfigServerListTitleListFactoriesServerListClassName DestroyedAssaultGSpyFactFortStandardPlusAssaultPlusTeleporterGetSelectedIndexTouch StyleChanged ModifyMapsbigdoorimpact ReplaceWithBot GameName SetEndCamsOtherTriggerTurnsOff ScoreKill ChangeTeamCreated InitGamebHidden DrawType SpecialCostHandlePickupQuery BeginPlay bDirectional IsRelevantSpawnNotificationDiedbCollideWorldMutatedDefaultWeapondroppedPawn SpectatorTimer ServerTravelbNetTemporary GameEnded SectionNameSpawnedGiveToMutateMover Slidefloor Suicided DrawScoreMutatorTakeDamage AddMutator ModifyPlayer GameTypeEndGame RestartGamebCompatibleServersOnlyEavyAltScoringCheckReplacementEavyAdvertiseServerPlayerSuicideLimitDamageBalanceTeams DecapitatedEavySpamProtectPlayerIdleTimeClientGameEndedTeamChangeTimeAttackerSpawnTimeTeamDamageProtectAssaultCheatProtectRocketLaunchProtect CompleteTextAssaultServerListWindow PingingTextConsiderForSubsetsAssaultMapListBonuspackMapListSendTeamMessageAssaultPlusRandomizerAssaultMenuItemKillInstigatorAssaultGSpyLinkOtherTriggerTurnsOnQueryServerTextRemove IsOnTeam MenuCaption MenuHelp ScriptedPawnVersionRegisterDamageMutator ResetGame HealthStringAssaultTheBaseServerListWindow ActorClassAssaultSpawnNotifyOtherAssaultFramedWindowAssaultClientWindowAssaultKeyBindingsFoundSecretStateUTMenuWaitForSendBufferedData ClientClass SetEditableNotify BeforePaintMutatorBroadcastMessageHandleEndGameRegisterMessageMutator bNoMonstersGetPlayerOwner WindowTitleGetOrderString StartMatchExecuteUMenuDrawNameAndPing DeadStringImpactLaunchProtectStartQuery PreventDeathIpDrvScoringmyHUD Instigator nextPawnRegionReasonGamePRIbAdminEnemy PawnListLItem bGameEnded StartTimeScore NextMutatorbSuperRelevantOwnerPlayerLocationXLEncroachDamage PacketLossbBeep PlayerName MutateStringNetMode TimeSecondsMDamageTeamNum Rotation LocationName instigatedByLink TriggerTypedistReTriggerDelay LightHueRemainingTimeRemainingMinutebActive bHeldItem BaseMutatorInOpt MomentumNum bBlockActors bCheckedSender PlayerZoneYL bReadyToPlayPingClipX SpecialGoalYB ZoneNamebTriggerOnceOnly aClassNameVictim OwnerHUD ReceiverEventInstigator ImpactHammer PlayerOwnerMoverEncroachTypeoDamageThresholdbCollideActorsCollisionHeightCollisionRadius bSpecialCost HitLocation bCanThrowXSkinSeekerRepeatTriggerTimeEYiUWindowEditControlUWindowHSliderControlUWindowPulldownMenuItemUWindowDialogClientWindow BytePropertyUWindowComboControlUWindowRootWindowUWindowCheckboxUWindowDialogControlUWindowButtonUWindowWindowUWindowPulldownMenu TriggerTimeSetSize CreateWindow ScriptTextCharge bDisabledAlignWinLeft EditBoxWidth WinHeight WinWidthWinTopRoot SliderWidth actualDamageKillertMsgPUBrowserGSpyFact ViewTargetMasterServerTimeout ScoringType DeltaTime ServerName PlayerIDGameEndedComments TeamNamebBlockPlayersUBrowserServerListMasterServerAddressS ReturnValue bInitial OwnerFactoryStaticSaveConfig bBySupersetControlOffset CenterPos CenterWidth HostNameGetEntryLevel Location HurtRadiusMutator AmmoAmountMaxAmmoTeams NextState OldScore RespawnTime TeamInfo DrawScalebWinner TimeLimit bDontRestartFriendlyFireScaleXOffsetYOffset TeamIndex LevelInfoGeneralNDamageSkins bTriggerOnly ChargeSizeExpl03JFlag11JFlag12bStopCountDown GameInfo ZoneInfo Teleporter Triggers SpecialEventFAUMenuModMenuItem ControlWidth ControlLeft ControlRight Initialized MenuItemNavigationPointDeathMatchPlusPlayerReplicationInfo TeamGamePlusGameReplicationInfo locationidTournamentWeaponCounter SpectatorCamDC ChallengeHUD SpawnNotifyAmmo InventoryCanvasMaxAllowedTeamsMasterServerTCPPort TeamTriggerTeamScoreBoardFontLevelbSelfDisplayed GoldColorTournamentAmmoAssaultRandomizer AssaultHUDActorPlayerGameEndedMessageNetConnection DefenseTime bFlashingbSayDestroyed GrayColor InString LossString TimeStringObjectivesMessage TieMessageTeamChangeMessage CountDown HumanStringMinigunCannonDestroyedMessage ChargeDist FortNameTournamentGameReplicationInfo PingStringBotReplicationInfo WarExplosionUT_BlackSmoke ShockWaveAssaultScoreboardTournamentScoreBoard OrdersString bAutoTaunt bFinalFortDefensePriorityLastHelpMessage NearestPath EndCamTag DamageEventDamageEventThresholdDamagePointerBRI bAltScoringbRequireReadybFulfilledSpecial bNetReadyEndTime TeamPrefix BestTeam AttackerFort Destroyer numForts SavedTime bDefenseSet bAssaultWon Priority CanvasFontXL2YL2 OwnerInfo OwnerGame bAdminPlayer bImpactJump ToggledCost bForceRadius DefenderNearestPathNodeTag FallBackFort TotalDamageMyTeamdiff bCompressed DamageTypeUTExtraKeyBindingsCountUTBrowserServerListWindowUTBrowserServerListOptions WhiteColorbInitiallyActive ShortName SmallFontSetPosSoundKilledHealthTextureEffectsUBrowserServerListFactory InitialStateMessageErrorTagEventClassUBrowserGSpyLinkPackage bIsPlayer TextBufferObjectEnumAssaultMutator AssaultGame bExplodeETeamCannonPlus FunctionStateVectorStruct UnrealShareUnrealITCP bStartSpotLimit StrProperty GameMutatorStructProperty SavedScore ReasonString KillerScore OtherScore ScoreChangeEavyEasterEggImpactJumpProtect ScaleGlow ScoreBoardTypeMapListTeamCannonDisabledFortStandardDisplayedAssaultDefenseSet bProjTargetDefenderSpawnTimeStyleTeam DrawColorMoverEncroachDamage DispatcherTeamDamageScalePickupMessageTime TeamColorEavySpawnProtectbAdvertiseServerbAssaultCheatbImpactLaunchbRocketLaunch SuicidesWeaponSAClassProperty NewScore NamePropertyObjectPropertyFloatProperty BoolPropertyKillerStartSpotOtherStartSpot KillScore GameStyleSize NextEndCamEndCams EndCamDelay SpawnThisAssaultGameStyle IntPropertyUWindowFramedWindowAsl']=$:ettt{#Ut{#U t E=b E=bt E=b E=bt0Ӆt{#UtttX' =$:etX'tX'ԝXԝXԝXԝX Q'9Q'9ttxxt tttt{#U Q'9tQ'9t t{#Ut{#U ttt{#Ut{#Ut{#Ut{#Ut{#Ut{#Uxxt{#Uttt tttt{#Ut{#U t{#U t{#U t0ӈ > Y{#U > Y{#U > Y > Y > Y > Y> Yt{#U> Y > Y> Y> Y> Y > Y 'n 6 'n 6 'n 6 > Y > Y > Y 'n 6 'n 6 'n 6 > Yttt> Yt> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y> Y> Yt0Ӆtt000ӆԝXԝXE=b'LԝXԝXԝXkykykykyԝXԝXkyԝXԝXkykykykyԝXԝXky t{#UL#!L#!L#!L#!L#!L#!L#!L#!L#!L#!&̻tt{#Ut{#Ut{#U t{#U t{#U t{#U 'n 6 'n 6 'n 6 'n 6ԝXԝXԝXyrүyrүԝXԝXԝXyrүyrүԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXԝXWԝXE=bԝXyrүyrүԝXԝX=$:e=$:e=$:e=$:e  @NMLK"H"<J"E"D"CAGa"|@u=[@c@@X32Co2N0ӦГ'] ttt']ttttttttxxtttttt{#Ut{#U']']t&]&]']']t']']']']tt']> Y']']t{#U'] ']t{#U'] t{#U'] ']']']']']tttttt']tt{#U']> Yt 0 @@$&N%R7c)@(9'rjy@ {N4@:<a@8"];L6> @M5?V@x@_@NB@ @@G@I@TdtikOC-67Q'9E=b=$:e=$:e=$:e'] E=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=bE=b '] iSBDZ@~WEQZXx],@C@`@ob"jDz/#W@yF~@\{@m@Rr@^O1@[2Wd"H@AF.UUj#J@|Y^^Kw@gfK@O@i*nC@Vv WlN@S@Xpn@a@@w}g*pgY:t$١D gvh@y @PFL @InP6@ r)J]AssaultBonusPackK]"!AssaultBonusPack.AssaultGSpyFactL]$#AssaultBonusPack.AssaultServerList[]Querying Master ServerQ]Pinging Assault ServersO]Done`sHQBlSxbT@NQHDHjjT`~_4|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڌ']']|.Xڌ']']|.Xڌ']']|.Xڌ']|[$|[$']|[$|.Xڑ|[$|[$']|[$|.Xڌ']|[$|[$']|[$|.Xڑ|[$|[$']|[$|.Xڌ']|[$|[$|[$|[$']|[$']|[$|[$|[$|[$']|[$']']t']']t']']t']']t']']|.Xڌ']']|.Xڌ']']|.Xڌ']']|.Xڌ']']|.Xڌ']_4_4_4_4_4_4|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|[$']|[$|[$']|[$|[$|[$|[$']|[$|[$']|[$|[$|[$|[$|[$']|[$|[$|[$|[$|[$']|[$|[$|[$ttttttt']ttttttt']ttttttt']ttttttt']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|.Xڇ|.Xڇ|.Xڇ|.Xڌ']|[$|[$|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڌ']_4_4_4|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڑ|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$tttttttttttt|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڇ|.Xڵ_4_4']|.Xڌ']|.Xڌ']|.Xڌ']|.Xڌ']] Classic  HardcoreTurboCustomZo92;G@ATGY-P@@N@F_P@]jg bE mԝXԝX> Y> Y> Y> YOX> YԝX> Y fm`D2EcFk!{#U{#U> Y{#Uxxxx{#Ux{#Uxxxxx> Y{#U{#Uxxxxxx{#Uxxx{#Ux{#U> Y{#Uxx{#U{#Ux{#U{#U{#Utxxx{#U{#UFz{#U{#U1xx;(;({#Ut{#Utxxxx ]*Dead*d] Health:#U*v@kq92;G@Ai`K#B"GZi2rBRMo o pTy]AssaultBonusPack3pCk@}U@ESKo//AssaultBonusPack: "AssaultMenuItem" Stefan Daniel Schwarz class AssaultMenuItem expands UMenuModMenuItem; function Execute() { MenuItem.Owner.Root.CreateWindow(class'AssaultFramedWindow', 0, 0, 380, 329); } FG MA\?V<w*-cxw$*$-v$$,?% w* w$-$-3::$?&w*-vccv?%+vr* r$ Tw$*$-v$v$vTv?%+$v XM4w2- - M%oM,MjMM9 V{u|-F9-?&T?&S%S rS-*-S -S S-S[ BI,R!7V~V.s%us, k|sH}sH}sH}s3{ EEE{-LK IJP{-JK ILP){-IK RLPa{-GK ACP{-BK TDP{-xK TCD {-{K FSDA{-rK ADSy{-~K AST{1J DST{4J PIT{aJ TCTU{`J DBT{CJ MED{_J PSL{,J TDS1{yJ'( KMtaIb?rM-L S!}Mx}-LS |b//AssaultBonusPack: "AssaultFramedWindow" Stefan Daniel Schwarz class AssaultFramedWindow expands UWindowFramedWindow; function Created() { Super.Created(); WinLeft = Int((Root.WinWidth - WinWidth) / 2); WinTop = Int((Root.WinHeight - WinHeight) / 2); } Duzl|VAS-Coldsteel.FortStandard8ea !  {re*.-(eq!Xa(<l|VAS-Coldsteel.PathNode137 a !  iw *   q![ $a?, !U<<|VAS-Coldsteel.PlayerStart65 a !  <w *   q![ $a?, !U eJM(&wJ*J $ U//============================================================================= // GenericSpawner. //============================================================================= class GenericSpawner expands Effects; var() class SpawnThis; function Trigger( actor Other, pawn EventInstigator ) { Instigator = EventInstigator; Spawn(SpawnThis,, '', Location+Vector(Rotation)*20); } qmW![xe-Fma/!6Ha Qmmm m wH*my OP {SZSv! _HxkB23 -a*.kw**_~*S*_*pp*_S*,*_}S**?,*?,*?,r.k wr*r-(kX ^f0,_]ww*fa/!.f.0:fw QW3@Y̡f7G `pSeaFI!C~iOq,% K!x rR*!a/!!-!-!,2%!,'n!l,!%),!,.!*>,!(wR*R-!a/!`!)h%@!k! '!RKl M//============================================================================= // EndCamDispatcher. // Switch to up to 8 different cameras in AS end scenes. //============================================================================= class EndCamDispatcher expands Triggers; var SpectatorCam NextEndCam; var() name EndCams[8]; // EndCams to switch to var() float EndCamDelay[8]; // Relative delays before switching EndCams var int i; var pawn P; var PlayerPawn Player; //============================================================================= // EndCamDispatcher logic. // // When EndCamDispatcher is triggered... // function Trigger( actor Other, pawn EventInstigator ) { Instigator = EventInstigator; gotostate('Dispatch'); } // // EndCamDispatcher events. // state Dispatch { Begin: disable('Trigger'); for( i=0; iDestroyed!O %,rp@p@.9w*------------%, }%, a---a----a(((-'-(-(!!lp% $p& $ SH%!EH%CH,HHjH  }a~PT.-O-dzT-OXWa(aIp3?Z ::$-~?&D?T?,<ap: IUXI?,WaѨp:S(ap: gl'Xg?,WU?&aѨp:S(ap: %IU,XI?,WU?&?,$app:R%(ZtzT:yXW? N-~!::J.%.Z w*Vw*VV2{VVVXWp aV(A z:{AzA.%APS.APaAAaAglXWpl aA(Z j.M):d:$!'!  \U*@bGPt> Yt c\V'a/!/W:K%..V @wZ] +zSwSwu!'G-XD?,<,d??,<?X\%G\+ =w\+@-*\+@-?X+ =\+ &\+@-?X?+ \s|%&w%%&w&wins the round!-wins the match!ww*w2KwK*Ka/!7-0.K'.KIKq!qKKF' zllu!opppp\list\\gametype\z\gamename\\final\nip\A, (\\QgQa/!DO.QO cOaOOOOQaOQ  ]G^c _>G!F&G,dG,->>G,iG`@GUZYG PH///AssaultBonusPack: "AssaultPlusScoreboard" Stefan Daniel Schwarz class AssaultPlusScoreboard extends AssaultScoreBoard; var localized string DeadString, HealthString; function DrawNameAndPing(Canvas Canvas, PlayerReplicationInfo PRI, float XOffset, float YOffset, bool bCompressed) { local float XL, YL, XL2, YL2, YB; local BotReplicationInfo BRI; local String S, O, L; local Font CanvasFont; local bool bAdminPlayer; local PlayerPawn PlayerOwner; local int Time; PlayerOwner = PlayerPawn(Owner); bAdminPlayer = PRI.bAdmin; // Draw Name if (PRI.PlayerName == PlayerOwner.PlayerReplicationInfo.PlayerName) Canvas.DrawColor = GoldColor; if ( bAdminPlayer ) Canvas.DrawColor = WhiteColor; Canvas.SetPos(XOffset, YOffset); Canvas.DrawText(PRI.PlayerName, False); Canvas.StrLen(PRI.PlayerName, XL, YB); if ( Canvas.ClipX > 512 ) { CanvasFont = Canvas.Font; Canvas.Font = Font'SmallFont'; Canvas.DrawColor = WhiteColor; if (Level.NetMode != NM_Standalone) { if ( !bCompressed || (Canvas.ClipX > 640) ) { // Draw Time Time = Max(1, (Level.TimeSeconds + PlayerOwner.PlayerReplicationInfo.StartTime - PRI.StartTime)/60); Canvas.StrLen(TimeString$": ", XL, YL); Canvas.SetPos(XOffset - XL - 6, YOffset); Canvas.DrawText(TimeString$":"@Time, false); } // Draw Ping Canvas.StrLen(PingString$": ", XL2, YL2); Canvas.SetPos(XOffset - XL2 - 6, YOffset + (YL+1)); Canvas.DrawText(PingString$":"@PRI.Ping, false); // Draw Packetloss Canvas.StrLen(LossString$": %", XL, YL); Canvas.SetPos(XOffset - XL - 6, YOffset + (YL+1)*2); Canvas.DrawText(LossString$":"@PRI.PacketLoss$"%", false); } Canvas.Font = CanvasFont; } // Draw Score if (PRI.PlayerName == PlayerOwner.PlayerReplicationInfo.PlayerName) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = TeamColor[PRI.Team]; DrawScore(Canvas, PRI.Score, XOffset, YOffset); if (Canvas.ClipX < 512) return; // Draw location, Order if ( !bCompressed && (PRI.Team == OwnerInfo.Team) ) { if ( Pawn(PRI.Owner).Health <= 0 ) Canvas.DrawColor = AssaultHUD(OwnerHUD).GrayColor; CanvasFont = Canvas.Font; Canvas.Font = Font'SmallFont'; if ( PRI.PlayerLocation != None ) L = PRI.PlayerLocation.LocationName; else if ( PRI.PlayerZone != None ) L = PRI.PlayerZone.ZoneName; else L = ""; if ( L != "" ) { L = InString@L; Canvas.SetPos(XOffset, YOffset + YB); Canvas.DrawText(L, False); } O = OwnerGame.GetOrderString(PRI); if (O != "") { if ( O == OwnerGame.HumanString ) { if ( Pawn(PRI.Owner).Health > 0 ) O = HealthString@Pawn(PRI.Owner).Health; else O = HealthString@DeadString; } else O = OrdersString@O; Canvas.StrLen(O, XL2, YL2); Canvas.SetPos(XOffset, YOffset + YB + YL2); Canvas.DrawText(O, False); } Canvas.Font = CanvasFont; } } }d':d:$aP:d:$9:B%B$AB$':Bh:d:$q! :d:$a  @a  zDC!PGa:d:$a  @a  zDC!PGaq! |ntxA - r*-a-bD66  66 -b'-c -C?^--b1o%-(^??@?@o-b f%f&af,d?f?, ?%a/!.>f, % , %v-c  ?W-c( }OW2pAє;aGնmo }^]&AssaultBonusPack_]EavyAssaultPlus[Y$S{`-F ,,<,<l%  p  00,   pp  0S  p  S  p  :D?,<?,<4%  p  00g,   pp  0S  p  S  pp  <Y> -E EY-AEa/!X+Ea/!.E-EU*!h$pAV-'E A0Pw0*9w0E0%0-2:01Y 0 Y0 A00z$YY]a/!?&?&]-%] Sw-*-?,d S &-?,d? y$YE n~:IK-qa  @a  zDC!PGa*1a4aa a?a a?a aPAq (Ri\\i-F wi*i-/-3:i:/N%YN,OwN@*i N@ N@O/ N@ N@d&N|h./ % wh*h-cdi?di/g-a/-w/*2w/j/-/- [Jw? @x-'q!8 yv~8@qbf{rq-@:q.qa/!X%D PoEI -bP#R- wF.o%P#Z:F:.6t!VF -| rF.! -^ wF.\.. % 6w\*\?&P\t!= -]z%P#&WwF. -xo%.o.{Pto? y,dWWt!V -^%t!= -]P#-c -C.o.{Pto%P# {R-(q!? @Gl-|-J-^-I-]-Gc-N-|-^-]lClassic-N -|-^-]lHardcore-N -| -^ -]lTurbolCustomV~V.S[l-'!w*z, (Classic), z, (Hardcore), z,(Turbo),z,(Custom),M-|ppp(l)j IER fEO?%; !/a0 FFI10Ea/!lr.E.E*{E  -a(?%a( K//AssaultBonusPack: "AssaultKeyBindings" Stefan Daniel Schwarz class AssaultKeyBindings expands UTExtraKeyBindings; Bz*L- ::$?z wE*y?%e !/a0 DDI10{E  -a( ELde  -x -x'=V~V./a0 g-{a/!5!D-B V~V.&|=AS-HiSpeed| Mover5a(D+|=AS-Mazon(| Mover4| Mover5| Mover6.$D|=AS-Overlord| Mover6| Mover7.$| TeamTrigger3)a?,?,D |=AS-Rook | Mover13.$D|=AS-Asthenosphere| Mover1| Mover10| Mover21| Mover26.$DY|=AS-Bridge| FortStandard22)a?,?,VV| Mover16| Mover17| Mover18| Mover19a(D|=AS-ColderSteel| FortStandard10)a?,?,DD|=AS-Coldsteel5| FortStandard8| PathNode137| PlayerStart65TD~| FortStandard9$a?,DD| Trigger23| Trigger24| Trigger25| Trigger26| Trigger27| Trigger28!Z!w.-(y-ra/!6.-'_%a/!v.%._-La/!5a10 IJDuoq.@ w* .r*qwq*rqqqqNapV->Destroyed! ,-|-ma/!-F'-F-n-N-B-~-'AssaultBonusPack @ http://assault.eavy.de/bva b f[c56[%.[,[j[  h+h_Ehvr+*kwwk*`ka/!+.kkk1r+*{a  ruc? -b'u ACSwq!< wZG R<@v!U%U,Us!aUgrUs!/a0 CUsqq10DwD*A.DACDDUu! (q_IsX+YV~V.O, }%}, wO, z}H|}H}YYO}} O, OHppppppppppppppppppppppppppppppppppY?EEE=T-L?IJP=T-J?ILP=T-I?RLP=T-G?ACP=T-B?TDP=T-x?TCD=T-{?FSD=T-r?ADS=T-~?AST=S1?DST=S4?PIT=Sa?TCT=S`?DBT=SC?MED=S_?PSL=S,?TDS=Syb'( sX 9-das !9?, dGT:IK-oa  @a  zDC!PGa*1a4aa a?a a?a aPAq (^L?D?,?D?, W.V):j:$!'!  i//AssaultBonusPack: "AssaultSpawnNotify" Stefan Daniel Schwarz class AssaultSpawnNotify expands SpawnNotify; simulated event Actor SpawnNotification(Actor A) { local PlayerPawn PlayerOwner; if ( !A.IsA('AssaultPlusScoreboard') ) { PlayerOwner = PlayerPawn(A.Owner); PlayerOwner.ScoringType = Class'AssaultPlusScoreboard'; PlayerOwner.Scoring = Spawn(PlayerOwner.ScoringType, PlayerOwner); PlayerOwner.Scoring.OwnerHUD = PlayerOwner.myHUD; A.Destroy(); return PlayerOwner.Scoring; } return A; } Oy//AssaultBonusPack: "AssaultPlusTeleporter" Stefan Daniel Schwarz class AssaultPlusTeleporter extends Teleporter; var() byte Team; simulated function Touch(Actor Other) { if ( Level.Game.IsA('Assault') && Assault(Level.Game).IsOnTeam(Pawn(Other), Team) ) Super.Touch(Other); } _KP@ @`ꙶPEx8  h//AssaultBonusPack: "AssaultTheBaseServerListWindow" Stefan Daniel Schwarz class AssaultTheBaseServerListWindow expands AssaultServerListWindow; @ae6bG class AssaultServerList expands UTBrowserServerList; var() config bool bCompatibleServersOnly; function ConsiderForSubsets() { // if ( InStr(Caps(HostName), "EAVY") < 0 ) if ( bCompatibleServersOnly && (Left(HostName, 9) != "(Classic)") && (Left(HostName, 10) != "(Hardcore)") && (Left(HostName, 7) != "(Turbo)") && (Left(HostName, 8) != "(Custom)") ) Remove(); } cJFdhg>2u)@Y//AssaultBonusPack: "AssaultPlusTrigger" Stefan Daniel Schwarz class AssaultPlusTrigger extends Trigger; var() byte Priority; function Touch( actor Other ) { local FortStandard A; if( IsRelevant( Other ) ) { if ( ReTriggerDelay > 0 ) { if ( Level.TimeSeconds - TriggerTime < ReTriggerDelay ) return; TriggerTime = Level.TimeSeconds; } // Broadcast the Trigger message to all matching actors. if( Event != '' ) foreach AllActors( class 'FortStandard', A, Event ) A.DefensePriority = Priority; if ( Other.IsA('Pawn') && (Pawn(Other).SpecialGoal == self) ) Pawn(Other).SpecialGoal = None; if( Message != "" ) // Send a string message to the toucher. Other.Instigator.ClientMessage( Message ); if( bTriggerOnceOnly ) // Ignore future touches. SetCollision(False); else if ( RepeatTriggerTime > 0 ) SetTimer(RepeatTriggerTime, false); } } function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, Vector momentum, name damageType) { local FortStandard A; if ( bInitiallyActive && (TriggerType == TT_Shoot) && (Damage >= DamageThreshold) && (instigatedBy != None) ) { if ( ReTriggerDelay > 0 ) { if ( Level.TimeSeconds - TriggerTime < ReTriggerDelay ) return; TriggerTime = Level.TimeSeconds; } // Broadcast the Trigger message to all matching actors. if( Event != '' ) foreach AllActors( class 'FortStandard', A, Event ) A.DefensePriority = Priority; if( Message != "" ) // Send a string message to the toucher. instigatedBy.Instigator.ClientMessage( Message ); if( bTriggerOnceOnly ) // Ignore future touches. SetCollision(False); } } eEBa@2fWE=bttE=bԝXttԝXt b>//AssaultBonusPack: "AssaultTheBase" Stefan Daniel Schwarz class AssaultTheBase extends Assault config; var EavyAssaultPlus AssaultMutator; var config float SavedScore[2]; var string ReasonString; var TeamInfo BestTeam; event InitGame(string Options, out string Error) { local Mutator M; SavedTime = 0; Super.InitGame(Options, Error); While ( AssaultMutator == None ) { for ( M=BaseMutator; M!=None; M=M.NextMutator ) if ( M.IsA('EavyAssaultPlus') ) AssaultMutator = EavyAssaultPlus(M); if ( AssaultMutator == None ) BaseMutator.AddMutator(Spawn(class'EavyAssaultPlus')); } } event Tick(float DeltaTime) { if ( ReasonString != "" ) SetEndCams(ReasonString); Disable('Tick'); } event PostBeginPlay() { local int i; Super.PostBeginPlay(); for ( i=0; i Level.TimeSeconds) ) return; for ( i=0; i 0) && (Killer != None) && (Killer != Other) && Killer.bIsPlayer && Other.bIsPlayer && (Killer.PlayerReplicationInfo.Team == Other.PlayerReplicationInfo.Team) ) Killer.PlayerReplicationInfo.Score -= 1; if ( (Killer != None) && Killer.bIsPlayer ) { ScoreChange = Killer.PlayerReplicationInfo.Score - KillerScore; Killer.PlayerReplicationInfo.Score = KillerScore; if ( ScoreChange != 0 ) AssaultMutator.ChangeScore(Killer, ScoreChange); } if ( (Killer == None) || (Killer == Other) ) return; if ( (Other != None) && Other.bIsPlayer ) { ScoreChange = Other.PlayerReplicationInfo.Score - OtherScore; Other.PlayerReplicationInfo.Score = OtherScore; if ( ScoreChange != 0 ) AssaultMutator.ChangeScore(Other, ScoreChange); } } function bool SetEndCams(string Reason) { local int i, Score; local Pawn P; if ( ReasonString == "" ) { Super.SetEndCams(Reason); ReasonString = Reason; Enable('Tick'); return True; } if ( bAssaultWon ) { Score = ((RemainingTime / 60) * 100) + (RemainingTime % 60); Attacker.Score += Score; for ( i=0; i Teams[1].Score ) BestTeam = Teams[0]; else if ( Teams[0].Score < Teams[1].Score ) BestTeam = Teams[1]; GameEndedMessage = "wins the round!"; if ( bDefenseSet ) GameEndedMessage = "wins the match!"; if ( BestTeam != None ) GameReplicationInfo.GameEndedComments = TeamPrefix@BestTeam.TeamName@GameEndedMessage; else GameReplicationInfo.GameEndedComments = TieMessage; for ( P=Level.PawnList; P!=None; P=P.NextPawn ) { if ( P.IsA('PlayerPawn') ) { if ( bDefenseSet ) PlayWinMessage(PlayerPawn(P), True); PlayerPawn(P).ClientGameEnded(); } P.GotoState('GameEnded'); } return True; } static function ResetGame() { local int i; for ( i=0; i Ytttt{#Utt{#Uttt{#Ut{#Ut{#Utt{#Ut{#U']tt{#Ut{#U']> Yxx> Y{#U=$:e=$:e=$:e=$:e wSY]Assault the Base@-//AssaultBonusPack: "FortStandardPlus" Stefan Daniel Schwarz class FortStandardPlus extends FortStandard; var EavyAssaultPlus AssaultMutator; event Destroyed() { Super(StationaryPawn).Destroyed(); if ( AssaultMutator != None ) AssaultMutator.RemoveFort(Self, Instigator); } event Spawned() { local Assault AssaultGame; local FortStandard Fort; local Mutator M; local int i; for ( M=Level.Game.BaseMutator; M!=None; M=M.NextMutator ) if ( M.IsA('EavyAssaultPlus') ) AssaultMutator = EavyAssaultPlus(M); if ( AssaultMutator != None ) AssaultGame = AssaultMutator.AssaultGame; if ( AssaultGame == None ) { Destroy(); Log(Self$"->Destroyed", 'FortStandardPlus'); return; } for ( i=0; i class TeamCannonPlus extends TeamCannon; var() bool bExplode; var() byte Team; var() enum ETeamCannonPlus { TCP_Default, TCP_ChangeTeam, TCP_DeActivated, TCP_ShockWave, TCP_WarExplosion, TCP_Destroy, } TCP; event PreBeginPlay() { if ( TCP == TCP_DeActivated ) InitialState = 'DeActivated'; else InitialState = 'Idle'; } function SetTeam(int TeamNum) { if ( Level.Game.IsA('Assault') ) { if ( Team == 0 ) MyTeam = Assault(Level.Game).Defender.TeamIndex; else MyTeam = Assault(Level.Game).Attacker.TeamIndex; } else Super.SetTeam(TeamNum); } function Trigger(Actor Other, Pawn EventInstigator) { if ( TCP == TCP_Destroy ) Destroy(); else if ( TCP == TCP_ChangeTeam ) { if ( Team == 0 ) Team = 1; else Team = 0; SetTeam(Team); } else if ( TCP == TCP_DeActivated ) GotoState('Idle'); else if ( TCP == TCP_ShockWave ) { PlaySound(Sound'Expl03',,6); Spawn(class'ShockWave',,,Location); HurtRadius(1000, 300, 'RedeemerDeath', 100000, Location); Destroy(); } else if ( TCP == TCP_WarExplosion ) { PlaySound(Sound'Expl03',,6); Spawn(class'WarExplosion',,,Location); HurtRadius(1000, 350, 'RedeemerDeath', 100000, Location); Destroy(); } else GotoState('DeActivated'); } state DamagedState { ignores TakeDamage, SeePlayer, EnemyNotVisible; Begin: if ( bExplode ) { PlaySound(Sound'Expl03',,6); Spawn(class'WarExplosion',,,Location); HurtRadius(1000, 350, 'RedeemerDeath', 100000, Location); Destroy(); } else { Enemy = None; StartDeactivate(); Sleep(0.0); PlayDeactivate(); FinishAnim(); Spawn(class'UT_BlackSmoke'); Sleep(1.0); Spawn(class'UT_BlackSmoke'); Sleep(1.0); Spawn(class'UT_BlackSmoke'); Sleep(13.0); Health = Default.Health; GotoState(NextState); } } jr"B 6 k>6W(!   l//AssaultBonusPack: "MinigunCannonPlus" Stefan Daniel Schwarz class MinigunCannonPlus extends MinigunCannon; var() bool bExplode; var() byte Team; var() enum ETeamCannonPlus { TCP_Default, TCP_ChangeTeam, TCP_DeActivated, TCP_ShockWave, TCP_WarExplosion, TCP_Destroy, } TCP; event PreBeginPlay() { if ( TCP == TCP_DeActivated ) InitialState = 'DeActivated'; else InitialState = 'Idle'; } function SetTeam(int TeamNum) { if ( Level.Game.IsA('Assault') ) { if ( Team == 0 ) MyTeam = Assault(Level.Game).Defender.TeamIndex; else MyTeam = Assault(Level.Game).Attacker.TeamIndex; } else Super.SetTeam(TeamNum); } function Trigger(Actor Other, Pawn EventInstigator) { if ( TCP == TCP_Destroy ) Destroy(); else if ( TCP == TCP_ChangeTeam ) { if ( Team == 0 ) Team = 1; else Team = 0; SetTeam(Team); } else if ( TCP == TCP_DeActivated ) GotoState('Idle'); else if ( TCP == TCP_ShockWave ) { PlaySound(Sound'Expl03',,6); Spawn(class'ShockWave',,,Location); HurtRadius(1000, 300, 'RedeemerDeath', 100000, Location); Destroy(); } else if ( TCP == TCP_WarExplosion ) { PlaySound(Sound'Expl03',,6); Spawn(class'WarExplosion',,,Location); HurtRadius(1000, 350, 'RedeemerDeath', 100000, Location); Destroy(); } else GotoState('DeActivated'); } state DamagedState { ignores TakeDamage, SeePlayer, EnemyNotVisible; Begin: if ( bExplode ) { PlaySound(Sound'Expl03',,6); Spawn(class'WarExplosion',,,Location); HurtRadius(1000, 350, 'RedeemerDeath', 100000, Location); Destroy(); } else { Enemy = None; StartDeactivate(); Sleep(0.0); PlayDeactivate(); FinishAnim(); Spawn(class'UT_BlackSmoke'); Sleep(1.0); Spawn(class'UT_BlackSmoke'); Sleep(1.0); Spawn(class'UT_BlackSmoke'); Sleep(13.0); Health = Default.Health; GotoState(NextState); } } lY#B 6 mB1v+_j   \//AssaultBonusPack: "AssaultServerListWindow" Stefan Daniel Schwarz class AssaultServerListWindow expands UTBrowserServerListWindow; LQ4=-FA%A,wA@*>WA@AssaultBonusPack.FortStandardPlusa/!?&Av! N//AssaultBonusPack: "AssaultGSpyLink" Stefan Daniel Schwarz class AssaultGSpyLink extends UBrowserGSpyLink; var string GameType; state FoundSecretState { Begin: Enable('Tick'); SendBufferedData("\\list\\\\gametype\\"$GameType$"\\gamename\\"$GameName$"\\final\\"); WaitFor("ip\\", 30, NextIP); } ClH`)iV~V.^, P%_P, U|PH}ii^PP ~^, ^Hb'( tnCd n.fr * r*-apV->Destroyed!  a%w.*w..*f a, ,  1;: U 4;: : @ 1, W 1&$@ 4, W 4&- -CP-o@cW%-c'$a=' eh)X---&-h%---&-h&---&-h,h,Lh#Q#h] -J- -I- -G- -B&-   M@w*w * ,%-0? ,w.*w..*a sms? Km`_D @2D?,?,:D?,?2LD?,,TD?L,#?L?#?T#B???2???2???2&??&?2@??@?:?????:5??5?:8??8?:?L?B?T?L?B?T?L?B?T?L?B?T%??%?2%A)??)?:)A'??'?2'A(??(?:(A9??9?2;??;?:6??6?2"??"?:7?L?7?T A@vAR0~R- nRRB`Ra/!n?% `?% n?% `?%:RB|9n?%:R`|n?%:Rn ^ //AssaultBonusPack: "AssaultGSpyFact" Stefan Daniel Schwarz class AssaultGSpyFact extends UBrowserGSpyFact; var() config string GameType; function Query(optional bool bBySuperset, optional bool bInitial) { Super(UBrowserServerListFactory).Query(bBySuperset, bInitial); Link = GetPlayerOwner().GetEntryLevel().Spawn(class'AssaultGSpyLink'); AssaultGSpyLink(Link).GameType = GameType; Link.MasterServerAddress = MasterServerAddress; Link.MasterServerTCPPort = MasterServerTCPPort; Link.Region = Region; Link.MasterServerTimeout = MasterServerTimeout; Link.GameName = GameName; Link.OwnerFactory = Self; Link.Start(); } yLN zܢ^v"> Yt$١˲١˲١˲١˲١˲١˲١}] AssaultY-utx//AssaultBonusPack: "AssaultMapList" Stefan Daniel Schwarz class AssaultMapList extends MapList; {S| MAS-Frigate.unrAS-Guardia.unrAS-HiSpeed.unr AS-Mazon.unrAS-OceanFloor.unrAS-Overlord.unr  AS-Rook.unrAS-Asthenosphere.unrAS-Ballistic.unr AS-Bridge.unr AS-ColderSteel.unr AS-Coldsteel2.unr AS-LavaFort][.unr AS-Manticore.unrAS-Orbital.unrAS-RocketCommand.unraf'a/!/W:B%..f u^wD @3D?,?,D?,,MD?>,D?&e. ?M??>?,#. ?M??>?#Assault Game Style:# %#q(# +%]# +&]#+,],(. ?3???Impact Jump Protect %$- -J,. ?3???Impact Launch Protect %$- -I,. ?3???Rocket Launch Protect %$- -G,&. ?3???&Assault Cheat Protect& %&$&- -B,(@. ??@& 1% @? 1(?%"Attacker Spawn Time [0 s]: %,. ?M??>?@& 4% @? 4?%"Defender Spawn Time [0 s]: %,. ?M??>?pB, ? a?% Player Idle Time [None]: %,. ?M??>?@&? ` ?% Team Change Time [None]: %,%. ?3???%Damage Balance Teams% %%!'%&,%$%'%S C). ??7EavyEasterEgg7 %7$7- -L |//AssaultBonusPack: "BonuspackMapList" Stefan Daniel Schwarz class BonuspackMapList extends MapList; T@q ]AS-Asthenosphere.unrAS-Ballistic.unrAS-Bridge.unrAS-ColderSteel.unrAS-Coldsteel2.unrAS-LavaFort][.unrAS-Manticore.unrAS-Orbital.unrAS-RocketCommand.unrj//AssaultBonusPack: "EavyAssaultPlus" Stefan Daniel Schwarz class EavyAssaultPlus expands Mutator; var() config bool EavyEasterEgg; var() config bool ImpactJumpProtect; var() config bool ImpactLaunchProtect; var() config bool RocketLaunchProtect; var() config bool AssaultCheatProtect; var() config bool TeamDamageProtect; var() config bool TeamCannonDisabled; var() config bool FortStandardDisplayed; var() config bool AssaultDefenseSet; var() config int AttackerSpawnTime; var() config int DefenderSpawnTime; var() config int PlayerIdleTime; var() config int TeamChangeTime; var() config int DamageBalanceTeams; var() config int MoverEncroachDamage; var() config int PlayerSuicideLimit; var() config int TeamDamageScale; var() config bool EavyAdvertiseServer; var() config bool EavyAltScoring; var() config bool EavySpamProtect; var() config bool EavySpawnProtect; var() config string Maps[32]; var Assault AssaultGame; var bool bAdvertiseServer; var bool bAltScoring; var bool bAssaultCheat; var bool bImpactJump; var bool bImpactLaunch; var bool bRocketLaunch; var bool Initialized; var float TimeSeconds; var int numForts; var int Suicides[50]; var int Version; var Pawn Destroyer[16]; var string Destroyed[16]; event Tick(float DeltaTime) { local int i; if ( bAltScoring ) for ( i=0; iDestroyed", 'EavyAssaultPlus'); return; } // AssaultGame.bNoMonsters = False; MapsLoadConfig(); bAdvertiseServer = EavyAdvertiseServer; if ( AssaultGame.IsA('AssaultTheBase') ) bAltScoring = True; else bAltScoring = EavyAltScoring; bAssaultCheat = AssaultCheatProtect; if ( AssaultDefenseSet ) AssaultGame.bDefenseSet = True; // if ( TeamChangeTime > 0 ) // AssaultGame.TeamChangeMessage = "Type 'Mutate EavyAssaultPlus' to change teams."; // else // AssaultGame.TeamChangeMessage = "Use Options->Player Setup to change teams."; AssaultGame.TeamChangeMessage = "AssaultBonusPack @ http://assault.eavy.de/"; AssaultGame.RegisterDamageMutator(Self); AssaultGame.RegisterMessageMutator(Self); Spawn(class'AssaultSpawnNotify'); } event BeginPlay() { local Actor A; local string S, SA; if ( Initialized ) return; Initialized = True; S = Left(Self, InStr(Self, ".")); ForEach AllActors(class'Actor', A) { if ( TeamCannonDisabled && A.IsA('TeamCannon') ) A.InitialState = 'DeActivated'; if ( AssaultCheatProtect ) { SA = Mid(A, InStr(A, ".") + 1); if ( S ~= "AS-HiSpeed" ) { if ( SA ~= "Mover5" ) A.SetCollision(False); } else if ( S ~= "AS-Mazon" ) { if ( (SA ~= "Mover4") || (SA ~= "Mover5") || (SA ~= "Mover6") ) Mover(A).MoverEncroachType = ME_CrushWhenEncroach; } else if ( S ~= "AS-Overlord" ) { if ( (SA ~= "Mover6") || (SA ~= "Mover7") ) Mover(A).MoverEncroachType = ME_CrushWhenEncroach; else if ( SA ~= "TeamTrigger3" ) A.SetCollisionSize(A.CollisionRadius * 2/3, A.CollisionHeight); } else if ( S ~= "AS-Rook" ) { if ( SA ~= "Mover13" ) Mover(A).MoverEncroachType = ME_CrushWhenEncroach; } else if ( S ~= "AS-Asthenosphere" ) { if ( (SA ~= "Mover1") || (SA ~= "Mover10") || (SA ~= "Mover21") || (SA ~= "Mover26") ) Mover(A).MoverEncroachType = ME_CrushWhenEncroach; } else if ( S ~= "AS-Bridge" ) { if ( SA ~= "FortStandard22" ) A.SetCollisionSize(A.CollisionRadius * 2/3, A.CollisionHeight); else if ( (SA ~= "Mover16") || (SA ~= "Mover17") || (SA ~= "Mover18") || (SA ~= "Mover19") ) A.SetCollision(False); } else if ( S ~= "AS-ColderSteel" ) { if ( SA ~= "FortStandard10" ) A.SetCollisionSize(A.CollisionRadius * 2/3, A.CollisionHeight); } else if ( S ~= "AS-Coldsteel" ) { if ( (SA ~= "FortStandard8") || (SA ~= "PathNode137") || (SA ~= "PlayerStart65") ) ModifyMaps(A); else if ( SA ~= "FortStandard9" ) A.SetCollisionSize(A.CollisionRadius * 3, A.CollisionHeight); else if ( (SA ~= "Trigger23") || (SA ~= "Trigger24") || (SA ~= "Trigger25") || (SA ~= "Trigger26") || (SA ~= "Trigger27") || (SA ~= "Trigger28") ) { A.InitialState = 'OtherTriggerTurnsOn'; A.Tag = 'Slidefloor'; Trigger(A).bInitiallyActive = False; } } } if ( FortStandardDisplayed && A.IsA('FortStandard') ) FortStandard(A).bSelfDisplayed = True; if ( (MoverEncroachDamage > 0) && A.IsA('Mover') && (Mover(A).EncroachDamage == 0) ) Mover(A).EncroachDamage = MoverEncroachDamage; if ( EavyEasterEgg && A.IsA('TeamCannon') ) A.Destroy(); } } event PostBeginPlay() { local string GameStyle, ServerName; bImpactJump = ImpactJumpProtect; bImpactLaunch = ImpactLaunchProtect; bRocketLaunch = RocketLaunchProtect; if ( bAssaultCheat && bImpactJump && bImpactLaunch && bRocketLaunch ) GameStyle = "Classic"; else if ( bAssaultCheat && !bImpactJump && bImpactLaunch && bRocketLaunch ) GameStyle = "Hardcore"; else if ( bAssaultCheat && !bImpactJump && !bImpactLaunch && !bRocketLaunch ) GameStyle = "Turbo"; else GameStyle = "Custom"; AssaultGame.ObjectivesMessage = Left(Class, InStr(Class, "."))@Version@GameStyle; BroadcastMessage(AssaultGame.ObjectivesMessage, True, 'CriticalEvent'); if ( AssaultGame.GameReplicationInfo != None ) { ServerName = AssaultGame.GameReplicationInfo.ServerName; if ( Left(ServerName, 9) == "(Classic)" ) ServerName = Mid(ServerName, 9); else if ( Left(ServerName, 10) == "(Hardcore)" ) ServerName = Mid(ServerName, 10); else if ( Left(ServerName, 7) == "(Turbo)" ) ServerName = Mid(ServerName, 7); else if ( Left(ServerName, 8) == "(Custom)" ) ServerName = Mid(ServerName, 8); if ( bAdvertiseServer ) AssaultGame.GameReplicationInfo.ServerName = "("$GameStyle$")"$ServerName; else AssaultGame.GameReplicationInfo.ServerName = ServerName; AssaultGame.GameReplicationInfo.ShortName = ServerName; } } function ChangeScore(Pawn Other, float ScoreChange) { local float NewScore, OldScore; if ( !Other.bIsPlayer ) return; OldScore = Other.PlayerReplicationInfo.Score; Other.PlayerReplicationInfo.Score += ScoreChange; NewScore = Other.PlayerReplicationInfo.Score; if ( !AssaultGame.IsA('AssaultTheBase') || ((OldScore <= 0) && (NewScore <= 0)) ) return; if ( (OldScore >= 0) && (NewScore >= 0) ) AssaultGame.Teams[Other.PlayerReplicationInfo.Team].Score += ScoreChange; else { if ( OldScore < 0 ) AssaultGame.Teams[Other.PlayerReplicationInfo.Team].Score += NewScore; if ( OldScore > 0 ) AssaultGame.Teams[Other.PlayerReplicationInfo.Team].Score -= OldScore; } } function bool CheckReplacement(Actor Other, out byte bSuperRelevant) { local int i; local TournamentAmmo Ammo; local TournamentWeapon Weapon; if ( EavySpamProtect ) { Ammo = TournamentAmmo(Other); if ( Ammo != None ) { i = InStr(Ammo.PickupMessage, Ammo.AmmoAmount); if ( i != -1 ) Ammo.default.PickupMessage = Left(Ammo.PickupMessage, i)$Ammo.AmmoAmount / 2$Mid(Ammo.PickupMessage, i + Len(Ammo.AmmoAmount)); Ammo.AmmoAmount /= 2; Ammo.MaxAmmo /= 2; Ammo.RespawnTime /= 2; } Weapon = TournamentWeapon(Other); if ( Weapon != None ) Weapon.bCanThrow = False; } return Super.CheckReplacement(Other, bSuperRelevant); } function bool HandleEndGame() { local int i; if ( bAltScoring ) { if ( AssaultGame.bAssaultWon ) AssaultGame.Attacker.Score -= 1; else AssaultGame.Defender.Score -= 1; for ( i=0; i 0) && (Sender.PlayerReplicationInfo.Team < AssaultGame.MaxAllowedTeams) && (Level.TimeSeconds > TimeSeconds) ) { if ( Sender.PlayerReplicationInfo.Team == AssaultGame.Attacker.TeamIndex ) Sender.ChangeTeam(AssaultGame.Defender.TeamIndex); else Sender.ChangeTeam(AssaultGame.Attacker.TeamIndex); TimeSeconds = Level.TimeSeconds + TeamChangeTime; } } else if ( MutateString ~= "EavyAssaultVersion" ) Sender.ClientMessage(AssaultGame.ObjectivesMessage, 'CriticalEvent', True); else if ( MutateString ~= "EavyObjectivesMessage" ) { if ( bAltScoring ) for ( i=0; i 0)) ) { AssaultGame.GameReplicationInfo.bStopCountDown = True; AssaultGame.GameReplicationInfo.RemainingTime = 0; AssaultGame.GameReplicationInfo.RemainingMinute = 0; AssaultGame.TimeLimit = 0; AssaultGame.RemainingTime = 0; AssaultGame.SavedTime = 0; AssaultGame.EndGame("EavyAssaultPlus"); } } else if ( MutateString ~= "AdminRestartGame" ) { if ( !AssaultGame.bGameEnded && (Sender.bAdmin || (Level.Netmode == NM_Standalone)) ) Level.ServerTravel("?Restart", False); } else if ( MutateString ~= "AdminStartMatch" ) { if ( !AssaultGame.bGameEnded && (Sender.bAdmin || (Level.Netmode == NM_Standalone)) ) if ( AssaultGame.bRequireReady && (AssaultGame.CountDown > 0) ) { AssaultGame.bNetReady = False; AssaultGame.bRequireReady = False; AssaultGame.StartMatch(); } } else if ( MutateString ~= "AdminStopCountdown" ) { if ( !AssaultGame.bGameEnded && (Sender.bAdmin || (Level.Netmode == NM_Standalone)) ) { AssaultGame.GameReplicationInfo.bStopCountDown = True; AssaultGame.GameReplicationInfo.RemainingTime = 0; AssaultGame.GameReplicationInfo.RemainingMinute = 0; AssaultGame.TimeLimit = 0; AssaultGame.RemainingTime = 0; AssaultGame.SavedTime = 0; } } else if ( MutateString ~= "AdminToggleReady" ) { if ( !AssaultGame.bGameEnded && (Sender.bAdmin || (Level.Netmode == NM_Standalone)) ) for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( P.IsA('PlayerPawn') && !P.IsA('Spectator') ) PlayerPawn(P).bReadyToPlay = True; } else if ( MutateString ~= "ClassicAssaultStyle" ) { if ( Sender.bAdmin || (Level.Netmode == NM_Standalone) ) { ImpactJumpProtect = True; ImpactLaunchProtect = True; RocketLaunchProtect = True; AssaultCheatProtect = True; PostBeginPlay(); SaveConfig(); } } else if ( MutateString ~= "HardcoreAssaultStyle" ) { if ( Sender.bAdmin || (Level.Netmode == NM_Standalone) ) { ImpactJumpProtect = False; ImpactLaunchProtect = True; RocketLaunchProtect = True; AssaultCheatProtect = True; PostBeginPlay(); SaveConfig(); } } else if ( MutateString ~= "TurboAssaultStyle" ) { if ( Sender.bAdmin || (Level.Netmode == NM_Standalone) ) { ImpactJumpProtect = False; ImpactLaunchProtect = False; RocketLaunchProtect = False; AssaultCheatProtect = True; PostBeginPlay(); SaveConfig(); } } else if ( MutateString ~= "CustomAssaultStyle" ) { if ( Sender.bAdmin || (Level.Netmode == NM_Standalone) ) { PostBeginPlay(); SaveConfig(); } } else if ( MutateString ~= "LoadMapsConfig" ) { if ( Sender.bAdmin || (Level.Netmode == NM_Standalone) ) { if ( MapsLoadConfig() ) Sender.ClientMessage("Config Loaded", 'CriticalEvent', True); else Sender.ClientMessage("Config NOT Loaded", 'CriticalEvent', True); SaveConfig(); } } else if ( MutateString ~= "ResetMapsConfig" ) { if ( Sender.bAdmin || (Level.Netmode == NM_Standalone) ) { if ( MapsResetConfig() ) Sender.ClientMessage("Config Reset", 'CriticalEvent', True); else Sender.ClientMessage("Config NOT Reset", 'CriticalEvent', True); } } else if ( MutateString ~= "SaveMapsConfig" ) { if ( Sender.bAdmin || (Level.Netmode == NM_Standalone) ) { if ( MapsSaveConfig() ) Sender.ClientMessage("Config Saved", 'CriticalEvent', True); else Sender.ClientMessage("Config NOT Saved", 'CriticalEvent', True); } } else Super.Mutate(MutateString, Sender); } function bool MutatorBroadcastMessage(Actor Sender, Pawn Receiver, out coerce string Msg, optional bool bBeep, out optional name Type) { if ( (Sender == AssaultGame) && bBeep && (Type == 'CriticalEvent') ) AssaultGame.TeamChangeMessage = Msg; return Super.MutatorBroadcastMessage(Sender, Receiver, Msg, bBeep, Type); } function MutatorTakeDamage(out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local AssaultBonusPack I; local float diff; if ( (InstigatedBy != None) && Victim.bIsPlayer && InstigatedBy.bIsPlayer ) { if ( (DamageBalanceTeams > 0) && (Victim.PlayerReplicationInfo.Team != InstigatedBy.PlayerReplicationInfo.Team) && ((AssaultGame.Attacker.Size >= AssaultGame.Defender.Size + DamageBalanceTeams) || (AssaultGame.Defender.Size >= AssaultGame.Attacker.Size + DamageBalanceTeams)) ) { diff = float(AssaultGame.Attacker.Size) / float(AssaultGame.Defender.Size); if ( ((diff > 1) && (Victim.PlayerReplicationInfo.Team == AssaultGame.Attacker.TeamIndex)) || ((diff < 1) && (InstigatedBy.PlayerReplicationInfo.Team == AssaultGame.Defender.TeamIndex)) ) ActualDamage *= diff; } I = AssaultBonusPack(Victim.FindInventoryType(class'AssaultBonusPack')); if ( I != None ) I.InventoryTakeDamage(ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType); } Super.MutatorTakeDamage(ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType); } function bool PreventDeath(Pawn Killed, Pawn Killer, name damageType, vector HitLocation) { if ( (PlayerSuicideLimit > 0) && (damageType == 'Suicided') && (Killer == None) && Killed.IsA('TournamentPlayer') && Killed.bIsPlayer && !Killed.PlayerReplicationInfo.bAdmin ) { if ( (Killed.PlayerReplicationInfo.PlayerID >= ArrayCount(Suicides)) || (Suicides[Killed.PlayerReplicationInfo.PlayerID] >= PlayerSuicideLimit) ) return True; else { Suicides[Killed.PlayerReplicationInfo.PlayerID]++; if ( (PlayerSuicideLimit - Suicides[Killed.PlayerReplicationInfo.PlayerID] > 0) && (PlayerSuicideLimit - Suicides[Killed.PlayerReplicationInfo.PlayerID] < 5) ) TournamentPlayer(Killed).TimeMessage(PlayerSuicideLimit - Suicides[Killed.PlayerReplicationInfo.PlayerID]); return False; } } else if ( (Killer != None) && Killer.bIsPlayer && Killed.IsA('ScriptedPawn') ) { Killed.Died(AssaultGame.Fort[0], 'dropped', Killed.Location); return True; } return Super.PreventDeath(Killed, Killer, damageType, HitLocation); } function RemoveFort(FortStandardPlus F, Pawn Instigator) { local int i; local Pawn P; if ( bAltScoring ) { if ( numForts < ArrayCount(AssaultGame.Fort) ) { i = (AssaultGame.TimeLimit * 60 - AssaultGame.RemainingTime) / 60; if ( i == 0 ) Destroyed[numForts] = Destroyed[numForts]$"00"; else if ( i < 10 ) Destroyed[numForts] = Destroyed[numForts]$"0"$i; else Destroyed[numForts] = Destroyed[numForts]$i; Destroyed[numForts] = Destroyed[numForts]$":"; i = (AssaultGame.TimeLimit * 60 - AssaultGame.RemainingTime) % 60; if ( i == 0 ) Destroyed[numForts] = Destroyed[numForts]$"00"; else if ( i < 10 ) Destroyed[numForts] = Destroyed[numForts]$"0"$i; else Destroyed[numForts] = Destroyed[numForts]$i; Destroyed[numForts] = Destroyed[numForts]@"<"$F.FortName$">"; Destroyer[numForts] = Instigator; numForts++; } if ( F.bSayDestroyed && (Instigator.IsA('Bot') || (Instigator.IsA('TournamentPlayer') && TournamentPlayer(Instigator).bAutoTaunt)) ) Instigator.SendTeamMessage(None, 'OTHER', 16, 15); else AssaultGame.bFulfilledSpecial = True; ChangeScore(Instigator, 10); for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( (P != Instigator) && (P.Health > 0) && P.bIsPlayer && (P.PlayerReplicationInfo.Team == AssaultGame.Attacker.TeamIndex) && (VSize(F.Location - P.Location) < F.ChargeDist) ) ChangeScore(P, 10); AssaultGame.RemoveFort(F, F); if ( !AssaultGame.IsA('AssaultTheBase') ) { AssaultGame.Attacker.Score += 1; AssaultGame.Defender.Score -= 1; if ( AssaultGame.bGameEnded ) for ( i=0; i class AssaultPlusRandomizer extends AssaultRandomizer; Auto State CostDisabled { function Trigger( actor Other, pawn EventInstigator ) { bSpecialCost = true; GotoState('CostEnabled'); } } state CostEnabled { event int SpecialCost(Pawn Seeker) { if ( !Seeker.bIsPlayer || (Seeker.PlayerReplicationInfo.Team == Assault(Level.Game).Defender.TeamIndex) || !Seeker.IsA('Bot') ) return 0; return ToggledCost; } function Trigger( actor Other, pawn EventInstigator ) { bSpecialCost = false; GotoState('CostDisabled'); } } DN//AssaultBonusPack: "AssaultBonusPack" Stefan Daniel Schwarz class AssaultBonusPack expands Inventory; var EavyAssaultPlus AssaultMutator; var bool bStartSpot; var bool Initialized; var int Count; var int Counter; var int Dist; var int Limit; var Pawn PlayerOwner; event Destroyed() { if ( PlayerOwner != None ) { PlayerOwner.Style = PlayerOwner.Default.Style; PlayerOwner.ScaleGlow = PlayerOwner.Default.ScaleGlow; if ( (AssaultMutator != None) && (AssaultMutator.PlayerSuicideLimit > 0) && PlayerOwner.bIsPlayer && (PlayerOwner.PlayerReplicationInfo.Score <= -2 * AssaultMutator.PlayerSuicideLimit) && (PlayerPawn(PlayerOwner) != None) && (NetConnection(PlayerPawn(PlayerOwner).Player) != None) ) PlayerOwner.Destroy(); } Super.Destroyed(); } function ActivateGameMutator(EavyAssaultPlus GameMutator) { AssaultMutator = GameMutator; PlayerOwner = Pawn(Owner); if ( (AssaultMutator == None) || (PlayerOwner == None) || !PlayerOwner.bIsPlayer ) { Destroy(); Log(Self$"->Destroyed", 'AssaultBonusPack'); return; } if ( (AssaultMutator.PlayerIdleTime > 0) && (PlayerPawn(PlayerOwner) != None) && (NetConnection(PlayerPawn(PlayerOwner).Player) != None) ) Limit = AssaultMutator.PlayerIdleTime * 10 + 11; if ( ((AssaultMutator.AttackerSpawnTime > -1) && (PlayerOwner.PlayerReplicationInfo.Team == AssaultMutator.AssaultGame.Attacker.TeamIndex)) || ((AssaultMutator.DefenderSpawnTime > -1) && (PlayerOwner.PlayerReplicationInfo.Team == AssaultMutator.AssaultGame.Defender.TeamIndex)) ) { if ( PlayerOwner.PlayerReplicationInfo.Team == AssaultMutator.AssaultGame.Attacker.TeamIndex ) { Counter = AssaultMutator.AttackerSpawnTime * 10; Dist = (AssaultMutator.AttackerSpawnTime + 1) * 400; } else { Counter = AssaultMutator.DefenderSpawnTime * 10; Dist = (AssaultMutator.DefenderSpawnTime + 1) * 400; } bActive = !AssaultMutator.EavySpawnProtect; if ( bActive ) Count = Counter; if ( Dist > 0 ) bStartSpot = True; PlayerOwner.Style = STY_Translucent; PlayerOwner.ScaleGlow = 0; } SetTimer(0.1, True); } function bool HandlePickupQuery(Inventory Item) { if ( !Initialized ) return True; return Super.HandlePickupQuery(Item); } function InventoryTakeDamage(out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType) { local ImpactHammer I; if ( !Initialized ) Momentum = vect(0,0,0); if ( bActive && (Victim != InstigatedBy) ) { ActualDamage = 0; Momentum = vect(0,0,0); } if ( Victim.PlayerReplicationInfo.Team == InstigatedBy.PlayerReplicationInfo.Team ) { if ( (DamageType == 'impact') && ((AssaultMutator.bImpactJump && (Victim == InstigatedBy)) || (AssaultMutator.bImpactLaunch && (Victim != InstigatedBy))) ) { I = ImpactHammer(InstigatedBy.FindInventoryType(class'ImpactHammer')); if ( (I != None) && (I.ChargeSize > 1) ) Momentum /= I.ChargeSize; } if ( (DamageType == 'RocketDeath') && AssaultMutator.bRocketLaunch ) { if ( Charge > 0 ) Momentum = vect(0,0,0); else Charge = 1; } if ( (Victim != InstigatedBy) && AssaultMutator.TeamDamageProtect ) { if ( ActualDamage > 0 ) { InstigatedBy.TakeDamage(ActualDamage, InstigatedBy, HitLocation, Momentum, DamageType); ActualDamage *= AssaultMutator.TeamDamageScale / 100; } else if ( !((DamageType == 'impact') && !AssaultMutator.bImpactLaunch) && !((DamageType == 'RocketDeath') && !AssaultMutator.bRocketLaunch) ) Momentum = vect(0,0,0); } } else if ( bStartSpot && AssaultMutator.EavySpawnProtect ) { InstigatedBy.TakeDamage(ActualDamage, InstigatedBy, HitLocation, Momentum, DamageType); ActualDamage = 0; Momentum = vect(0,0,0); } } function Timer() { if ( AssaultMutator.AssaultGame.bGameEnded || (PlayerOwner == None) || !PlayerOwner.bIsPlayer ) Destroy(); if ( !Initialized && ((Location.X != PlayerOwner.Location.X) || (Location.Y != PlayerOwner.Location.Y)) ) { Initialized = True; if ( bStartSpot && AssaultMutator.EavySpawnProtect ) PlayerOwner.ScaleGlow = 0.5; } if ( bActive && Initialized ) { if ( Count <= 0 ) { bActive = False; PlayerOwner.Style = PlayerOwner.Default.Style; PlayerOwner.ScaleGlow = PlayerOwner.Default.ScaleGlow; } else PlayerOwner.ScaleGlow = (1 / Counter) * (Counter - Count--); } if ( !Initialized && (Limit > 0) ) { if ( Limit-- == 1 ) PlayerOwner.Destroy(); else if ( (Limit <= 100) && (Limit % 10 == 0) && PlayerOwner.IsA('TournamentPlayer') ) TournamentPlayer(PlayerOwner).TimeMessage(Limit / 10); } if ( (Charge > 0) && (Charge++ > 10) ) Charge = 0; if ( bStartSpot && (VSize(Location - PlayerOwner.Location) > Dist) ) { bStartSpot = False; PlayerOwner.Style = PlayerOwner.Default.Style; PlayerOwner.ScaleGlow = PlayerOwner.Default.ScaleGlow; } } ^//AssaultBonusPack: "AssaultClientWindow" Stefan Daniel Schwarz class AssaultClientWindow expands UWindowDialogClientWindow; var UWindowCheckBox AssaultBonusPack; var UWindowComboControl AssaultGameStyle; var UWindowCheckBox ImpactJumpProtect; var UWindowCheckBox ImpactLaunchProtect; var UWindowCheckBox RocketLaunchProtect; var UWindowCheckBox AssaultCheatProtect; var UWindowCheckBox TeamDamageProtect; var UWindowCheckBox TeamCannonDisabled; var UWindowCheckBox FortStandardDisplayed; var UWindowCheckBox AssaultDefenseSet; var UWindowHSliderControl AttackerSpawnTime; var UWindowHSliderControl DefenderSpawnTime; var UWindowHSliderControl PlayerIdleTime; var UWindowHSliderControl TeamChangeTime; var UWindowEditControl DamageBalanceTeams; var UWindowEditControl MoverEncroachDamage; var UWindowEditControl PlayerSuicideLimit; var UWindowEditControl TeamDamageScale; var UWindowCheckBox EavyAdvertiseServer; var UWindowCheckBox EavyAltScoring; var UWindowCheckBox EavySpamProtect; var UWindowCheckBox EavySpawnProtect; var UWindowCheckBox EavyEasterEgg; var string Styles[4]; function EavyAssaultPlus() { local int Style; if ( ImpactJumpProtect.bChecked && ImpactLaunchProtect.bChecked && RocketLaunchProtect.bChecked && AssaultCheatProtect.bChecked ) Style = 0; else if ( !ImpactJumpProtect.bChecked && ImpactLaunchProtect.bChecked && RocketLaunchProtect.bChecked && AssaultCheatProtect.bChecked ) Style = 1; else if ( !ImpactJumpProtect.bChecked && !ImpactLaunchProtect.bChecked && !RocketLaunchProtect.bChecked && AssaultCheatProtect.bChecked ) Style = 2; else Style = 3; if ( Style != AssaultGameStyle.GetSelectedIndex() ) AssaultGameStyle.SetValue(Styles[Style]); class'EavyAssaultPlus'.default.ImpactJumpProtect = ImpactJumpProtect.bChecked; class'EavyAssaultPlus'.default.ImpactLaunchProtect = ImpactLaunchProtect.bChecked; class'EavyAssaultPlus'.default.RocketLaunchProtect = RocketLaunchProtect.bChecked; class'EavyAssaultPlus'.default.AssaultCheatProtect = AssaultCheatProtect.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); } function BeforePaint(Canvas C, float X, float Y) { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos; Super.BeforePaint(C, X, Y); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; AssaultGameStyle.SetSize(CenterWidth, 1); AssaultGameStyle.WinLeft = CenterPos; AssaultGameStyle.EditBoxWidth = 110; ImpactJumpProtect.SetSize(ControlWidth, 1); ImpactJumpProtect.WinLeft = ControlLeft; ImpactLaunchProtect.SetSize(ControlWidth, 1); ImpactLaunchProtect.WinLeft = ControlLeft; RocketLaunchProtect.SetSize(ControlWidth, 1); RocketLaunchProtect.WinLeft = ControlLeft; AssaultCheatProtect.SetSize(ControlWidth, 1); AssaultCheatProtect.WinLeft = ControlLeft; TeamDamageProtect.SetSize(ControlWidth, 1); TeamDamageProtect.WinLeft = ControlRight; TeamCannonDisabled.SetSize(ControlWidth, 1); TeamCannonDisabled.WinLeft = ControlRight; FortStandardDisplayed.SetSize(ControlWidth, 1); FortStandardDisplayed.WinLeft = ControlRight; AssaultDefenseSet.SetSize(ControlWidth, 1); AssaultDefenseSet.WinLeft = ControlRight; AttackerSpawnTime.SetSize(CenterWidth, 1); AttackerSpawnTime.SliderWidth = 90; AttackerSpawnTime.WinLeft = CenterPos; DefenderSpawnTime.SetSize(CenterWidth, 1); DefenderSpawnTime.SliderWidth = 90; DefenderSpawnTime.WinLeft = CenterPos; PlayerIdleTime.SetSize(CenterWidth, 1); PlayerIdleTime.SliderWidth = 90; PlayerIdleTime.WinLeft = CenterPos; TeamChangeTime.SetSize(CenterWidth, 1); TeamChangeTime.SliderWidth = 90; TeamChangeTime.WinLeft = CenterPos; DamageBalanceTeams.SetSize(ControlWidth, 1); DamageBalanceTeams.WinLeft = ControlLeft; DamageBalanceTeams.EditBoxWidth = 25; MoverEncroachDamage.SetSize(ControlWidth, 1); MoverEncroachDamage.WinLeft = ControlRight; MoverEncroachDamage.EditBoxWidth = 25; PlayerSuicideLimit.SetSize(ControlWidth, 1); PlayerSuicideLimit.WinLeft = ControlLeft; PlayerSuicideLimit.EditBoxWidth = 25; TeamDamageScale.SetSize(ControlWidth, 1); TeamDamageScale.WinLeft = ControlRight; TeamDamageScale.EditBoxWidth = 25; EavyAdvertiseServer.SetSize(ControlWidth, 1); EavyAdvertiseServer.WinLeft = ControlLeft; EavyAltScoring.SetSize(ControlWidth, 1); EavyAltScoring.WinLeft = ControlRight; EavySpamProtect.SetSize(ControlWidth, 1); EavySpamProtect.WinLeft = ControlLeft; EavySpawnProtect.SetSize(ControlWidth, 1); EavySpawnProtect.WinLeft = ControlRight; EavyEasterEgg.SetSize(CenterWidth, 1); EavyEasterEgg.WinLeft = CenterPos; } function Created() { local int ControlWidth, ControlLeft, ControlRight; local int CenterWidth, CenterPos; local int ControlOffset; Super.Created(); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; CenterWidth = (WinWidth/4)*3; CenterPos = (WinWidth - CenterWidth)/2; ControlOffset = WinHeight + 1; AssaultBonusPack = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1)); ControlOffset = 15; AssaultGameStyle = UWindowComboControl(CreateControl(class'UWindowComboControl', CenterPos, ControlOffset, CenterWidth, 1)); AssaultGameStyle.SetText("Assault Game Style:"); AssaultGameStyle.SetFont(F_Normal); AssaultGameStyle.SetEditable(False); AssaultGameStyle.AddItem(Styles[0]); AssaultGameStyle.AddItem(Styles[1]); AssaultGameStyle.AddItem(Styles[2]); ControlOffset = 40; ImpactJumpProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); ImpactJumpProtect.SetText("Impact Jump Protect"); ImpactJumpProtect.SetFont(F_Normal); ImpactJumpProtect.Align = TA_Right; ImpactJumpProtect.bChecked = class'EavyAssaultPlus'.default.ImpactJumpProtect; ControlOffset += 20; ImpactLaunchProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); ImpactLaunchProtect.SetText("Impact Launch Protect"); ImpactLaunchProtect.SetFont(F_Normal); ImpactLaunchProtect.Align = TA_Right; ImpactLaunchProtect.bChecked = class'EavyAssaultPlus'.default.ImpactLaunchProtect; ControlOffset += 20; RocketLaunchProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); RocketLaunchProtect.SetText("Rocket Launch Protect"); RocketLaunchProtect.SetFont(F_Normal); RocketLaunchProtect.Align = TA_Right; RocketLaunchProtect.bChecked = class'EavyAssaultPlus'.default.RocketLaunchProtect; ControlOffset += 20; AssaultCheatProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); AssaultCheatProtect.SetText("Assault Cheat Protect"); AssaultCheatProtect.SetFont(F_Normal); AssaultCheatProtect.Align = TA_Right; AssaultCheatProtect.bChecked = class'EavyAssaultPlus'.default.AssaultCheatProtect; ControlOffset = 40; TeamDamageProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlRight, ControlOffset, ControlWidth, 1)); TeamDamageProtect.SetText("Team Damage Protect"); TeamDamageProtect.SetFont(F_Normal); TeamDamageProtect.Align = TA_Right; TeamDamageProtect.bChecked = class'EavyAssaultPlus'.default.TeamDamageProtect; ControlOffset += 20; TeamCannonDisabled = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlRight, ControlOffset, ControlWidth, 1)); TeamCannonDisabled.SetText("Team Cannon Disabled"); TeamCannonDisabled.SetFont(F_Normal); TeamCannonDisabled.Align = TA_Right; TeamCannonDisabled.bChecked = class'EavyAssaultPlus'.default.TeamCannonDisabled; ControlOffset += 20; FortStandardDisplayed = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlRight, ControlOffset, ControlWidth, 1)); FortStandardDisplayed.SetText("Fort Standard Displayed"); FortStandardDisplayed.SetFont(F_Normal); FortStandardDisplayed.Align = TA_Right; FortStandardDisplayed.bChecked = class'EavyAssaultPlus'.default.FortStandardDisplayed; ControlOffset += 20; AssaultDefenseSet = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlRight, ControlOffset, ControlWidth, 1)); AssaultDefenseSet.SetText("Assault Defense Set"); AssaultDefenseSet.SetFont(F_Normal); AssaultDefenseSet.Align = TA_Right; AssaultDefenseSet.bChecked = class'EavyAssaultPlus'.default.AssaultDefenseSet; ControlOffset += 25; AttackerSpawnTime = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); AttackerSpawnTime.SetRange(0, 6, 1); if ( class'EavyAssaultPlus'.default.AttackerSpawnTime < 0 ) AttackerSpawnTime.SetValue(6); else AttackerSpawnTime.SetValue(class'EavyAssaultPlus'.default.AttackerSpawnTime); if ( AttackerSpawnTime.GetValue() == 0 ) AttackerSpawnTime.SetText("Attacker Spawn Time [0 s]:"); AttackerSpawnTime.SetFont(F_Normal); ControlOffset += 20; DefenderSpawnTime = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); DefenderSpawnTime.SetRange(0, 6, 1); if ( class'EavyAssaultPlus'.default.DefenderSpawnTime < 0 ) DefenderSpawnTime.SetValue(6); else DefenderSpawnTime.SetValue(class'EavyAssaultPlus'.default.DefenderSpawnTime); if ( DefenderSpawnTime.GetValue() == 0 ) DefenderSpawnTime.SetText("Defender Spawn Time [0 s]:"); DefenderSpawnTime.SetFont(F_Normal); ControlOffset += 20; PlayerIdleTime = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); PlayerIdleTime.SetRange(0, 60, 10); PlayerIdleTime.SetValue(class'EavyAssaultPlus'.default.PlayerIdleTime); if ( PlayerIdleTime.GetValue() == 0 ) PlayerIdleTime.SetText("Player Idle Time [None]:"); PlayerIdleTime.SetFont(F_Normal); ControlOffset += 20; TeamChangeTime = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); TeamChangeTime.SetRange(0, 6, 1); TeamChangeTime.SetValue(class'EavyAssaultPlus'.default.TeamChangeTime); if ( TeamChangeTime.GetValue() == 0 ) TeamChangeTime.SetText("Team Change Time [None]:"); TeamChangeTime.SetFont(F_Normal); ControlOffset += 25; DamageBalanceTeams = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, ControlOffset, ControlWidth, 1)); DamageBalanceTeams.SetText("Damage Balance Teams"); DamageBalanceTeams.SetFont(F_Normal); DamageBalanceTeams.SetNumericOnly(True); DamageBalanceTeams.SetMaxLength(3); DamageBalanceTeams.Align = TA_Right; DamageBalanceTeams.SetDelayedNotify(True); DamageBalanceTeams.SetValue(string(class'EavyAssaultPlus'.default.DamageBalanceTeams)); MoverEncroachDamage = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); MoverEncroachDamage.SetText("Mover Encroach Damage"); MoverEncroachDamage.SetFont(F_Normal); MoverEncroachDamage.SetNumericOnly(True); MoverEncroachDamage.SetMaxLength(3); MoverEncroachDamage.Align = TA_Right; MoverEncroachDamage.SetDelayedNotify(True); MoverEncroachDamage.SetValue(string(class'EavyAssaultPlus'.default.MoverEncroachDamage)); ControlOffset += 25; PlayerSuicideLimit = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, ControlOffset, ControlWidth, 1)); PlayerSuicideLimit.SetText("Player Suicide Limit"); PlayerSuicideLimit.SetFont(F_Normal); PlayerSuicideLimit.SetNumericOnly(True); PlayerSuicideLimit.SetMaxLength(3); PlayerSuicideLimit.Align = TA_Right; PlayerSuicideLimit.SetDelayedNotify(True); PlayerSuicideLimit.SetValue(string(class'EavyAssaultPlus'.default.PlayerSuicideLimit)); TeamDamageScale = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); TeamDamageScale.SetText("Team Damage Scale"); TeamDamageScale.SetFont(F_Normal); TeamDamageScale.SetNumericOnly(True); TeamDamageScale.SetMaxLength(3); TeamDamageScale.Align = TA_Right; TeamDamageScale.SetDelayedNotify(True); TeamDamageScale.SetValue(string(class'EavyAssaultPlus'.default.TeamDamageScale)); ControlOffset += 25; EavyAdvertiseServer = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); EavyAdvertiseServer.SetText("Advertise Server"); EavyAdvertiseServer.SetFont(F_Normal); EavyAdvertiseServer.Align = TA_Right; EavyAdvertiseServer.bChecked = class'EavyAssaultPlus'.default.EavyAdvertiseServer; EavyAltScoring = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlRight, ControlOffset, ControlWidth, 1)); EavyAltScoring.SetText("Alt Scoring"); EavyAltScoring.SetFont(F_Normal); EavyAltScoring.Align = TA_Right; EavyAltScoring.bChecked = class'EavyAssaultPlus'.default.EavyAltScoring; ControlOffset += 20; EavySpamProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); EavySpamProtect.SetText("Spam Protect"); EavySpamProtect.SetFont(F_Normal); EavySpamProtect.Align = TA_Right; EavySpamProtect.bChecked = class'EavyAssaultPlus'.default.EavySpamProtect; EavySpawnProtect = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlRight, ControlOffset, ControlWidth, 1)); EavySpawnProtect.SetText("Spawn Protect"); EavySpawnProtect.SetFont(F_Normal); EavySpawnProtect.Align = TA_Right; EavySpawnProtect.bChecked = class'EavyAssaultPlus'.default.EavySpawnProtect; if ( (AttackerSpawnTime.GetValue() == 6) && (DefenderSpawnTime.GetValue() == 6) ) EavySpawnProtect.bDisabled = True; ControlOffset = WinHeight + 1; EavyEasterEgg = UWindowCheckbox(CreateControl(class'UWindowCheckbox', CenterPos, ControlOffset, CenterWidth, 1)); EavyEasterEgg.SetText("EavyEasterEgg"); EavyEasterEgg.SetFont(F_Normal); EavyEasterEgg.Align = TA_Right; EavyEasterEgg.bChecked = class'EavyAssaultPlus'.default.EavyEasterEgg; EavyAssaultPlus(); } function Notify(UWindowDialogControl C, byte E) { switch(E) { case DE_Change: switch(C) { case AssaultGameStyle: StyleChanged(); break; case ImpactJumpProtect: case ImpactLaunchProtect: case RocketLaunchProtect: case AssaultCheatProtect: EavyAssaultPlus(); break; case TeamDamageProtect: class'EavyAssaultPlus'.default.TeamDamageProtect = TeamDamageProtect.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case TeamCannonDisabled: class'EavyAssaultPlus'.default.TeamCannonDisabled = TeamCannonDisabled.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case FortStandardDisplayed: class'EavyAssaultPlus'.default.FortStandardDisplayed = FortStandardDisplayed.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case AssaultDefenseSet: class'EavyAssaultPlus'.default.AssaultDefenseSet = AssaultDefenseSet.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case AttackerSpawnTime: if ( AttackerSpawnTime.GetValue() == 6 ) { AttackerSpawnTime.SetText("Attacker Spawn Time [None]:"); class'EavyAssaultPlus'.default.AttackerSpawnTime = -1; if ( DefenderSpawnTime.GetValue() == 6 ) EavySpawnProtect.bDisabled = True; } else { AttackerSpawnTime.SetText("Attacker Spawn Time ["$int(AttackerSpawnTime.GetValue())$" s]:"); class'EavyAssaultPlus'.default.AttackerSpawnTime = AttackerSpawnTime.GetValue(); EavySpawnProtect.bDisabled = False; } class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case DefenderSpawnTime: if ( DefenderSpawnTime.GetValue() == 6 ) { DefenderSpawnTime.SetText("Defender Spawn Time [None]:"); class'EavyAssaultPlus'.default.DefenderSpawnTime = -1; if ( AttackerSpawnTime.GetValue() == 6 ) EavySpawnProtect.bDisabled = True; } else { DefenderSpawnTime.SetText("Defender Spawn Time ["$int(DefenderSpawnTime.GetValue())$" s]:"); class'EavyAssaultPlus'.default.DefenderSpawnTime = DefenderSpawnTime.GetValue(); EavySpawnProtect.bDisabled = False; } class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case PlayerIdleTime: if ( PlayerIdleTime.GetValue() == 0 ) PlayerIdleTime.SetText("Player Idle Time [None]:"); else PlayerIdleTime.SetText("Player Idle Time ["$int(PlayerIdleTime.GetValue())$" s]:"); class'EavyAssaultPlus'.default.PlayerIdleTime = PlayerIdleTime.GetValue(); class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case TeamChangeTime: if ( TeamChangeTime.GetValue() == 0 ) TeamChangeTime.SetText("Team Change Time [None]:"); else TeamChangeTime.SetText("Team Change Time ["$int(TeamChangeTime.GetValue())$" s]:"); class'EavyAssaultPlus'.default.TeamChangeTime = TeamChangeTime.GetValue(); class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case DamageBalanceTeams: class'EavyAssaultPlus'.default.DamageBalanceTeams = int(DamageBalanceTeams.GetValue()); class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case MoverEncroachDamage: class'EavyAssaultPlus'.default.MoverEncroachDamage = int(MoverEncroachDamage.GetValue()); class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case PlayerSuicideLimit: class'EavyAssaultPlus'.default.PlayerSuicideLimit = int(PlayerSuicideLimit.GetValue()); class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case TeamDamageScale: class'EavyAssaultPlus'.default.TeamDamageScale = int(TeamDamageScale.GetValue()); class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case EavyAdvertiseServer: class'EavyAssaultPlus'.default.EavyAdvertiseServer = EavyAdvertiseServer.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case EavyAltScoring: class'EavyAssaultPlus'.default.EavyAltScoring = EavyAltScoring.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case EavySpamProtect: class'EavyAssaultPlus'.default.EavySpamProtect = EavySpamProtect.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case EavySpawnProtect: class'EavyAssaultPlus'.default.EavySpawnProtect = EavySpawnProtect.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; case EavyEasterEgg: class'EavyAssaultPlus'.default.EavyEasterEgg = EavyEasterEgg.bChecked; class'EavyAssaultPlus'.static.StaticSaveConfig(); break; } } } function StyleChanged() { switch(AssaultGameStyle.GetSelectedIndex()) { case 0: ImpactJumpProtect.bChecked = True; ImpactLaunchProtect.bChecked = True; RocketLaunchProtect.bChecked = True; break; case 1: ImpactJumpProtect.bChecked = False; ImpactLaunchProtect.bChecked = True; RocketLaunchProtect.bChecked = True; break; case 2: ImpactJumpProtect.bChecked = False; ImpactLaunchProtect.bChecked = False; RocketLaunchProtect.bChecked = False; break; default: return; } AssaultCheatProtect.bChecked = True; EavyAssaultPlus(); } ~ir=7k $i $#S , 4 < M& @ -x@-  ? -{?-  5 -r5-  18 -~8-  >?,#Attacker Spawn Time [None]: 1?,"-',8ppAttacker Spawn Time [SD s]: 1D"-(  K?,#Defender Spawn Time [None]: 4?,"-'98ppDefender Spawn Time [SD s]: 4D"-(  ?% Player Idle Time [None]:5ppPlayer Idle Time [SD s]: aD  N?% Team Change Time [None]:5ppTeam Change Time [SD s]: `D  % CJ%  /) _J)  h' ,J'  ( yJ(  9 -m9-  ; -n;-  L6 -a6-  " -C"-  7 -L7-   DkFz{imr]AssaultBonusPack]Player Change TeamShow Assault VersionShow Objectives MessageShow Server InfoAdmin End GameAdmin Restart GameAdmin Start MatchAdmin Stop CountdownAdmin Toggle Ready Classic Assault Style Hardcore Assault Style Turbo Assault Style Custom Assault Style Load Maps ConfigReset Maps ConfigSave Maps Config ]Mutate EavyAssaultPlus Mutate EavyAssaultVersion Mutate EavyObjectivesMessage Mutate EavyServerInfo Mutate AdminEndGame Mutate AdminRestartGame Mutate AdminStartMatch Mutate AdminStopCountdown Mutate AdminToggleReady  Mutate ClassicAssaultStyle  Mutate HardcoreAssaultStyle  Mutate TurboAssaultStyle  Mutate CustomAssaultStyle  Mutate LoadMapsConfig Mutate ResetMapsConfig Mutate SaveMapsConfiget':j:$aP:j:$9:K%K$AK$':Kh:j:$q! :j:$a  @a  zDC!PGa:j:$a  @a  zDC!PGaq! ESJ#Q K%-'-'-' &-(-'-' ,-(-(-(  &-' s^R {y-^{, (Classic){, (Hardcore){,(Turbo){,(Custom)\ \JR\Za/!/..].J:\J ]tB-t-pxa t.tz]A BzV NK,[3_tt{#U t |< rCC o ooomlmQm^m/mxm6mhmmm7o|mVm_mXmamxmrmWmumEhxjumOmjohKCMmimmAmq[UmzmwmDijxdmimyjpm_xFmv[i{zu^mniTmvm\m5iThhPmHmChz[_hKjMmNimhRudmlh@mmgglhgiKA]jRm[i`mOhWiLiKgkmEmI[TCdhUxamiu|ulCVhJ beuoo`xNghmymcmChpjnjhm@ughGm`icAZ[GhOhHijmNuPAiicAKm~pmkiko)[px'ipuTuYo}mvilhcmhA{hEjRA\jLjOjWi{mLemA^m|mey8Adm]johomkjijyASmZmmmBjDiCxzx|ulhqBxuumjMgSj@Mjh J`A}[khXjiUxuxBhwmjx^xsx\mYuZeymfxMiSmlmvx}^m{hQuSiPxCxtxmZxm3XAYomxh|y:y?xxZuUu_iSgtxcmTAbgQiqgRjVAZo}o bhrgsuvm[x.xmsA[jOjchKhNAfCMj^xxxRhRmaxcx_iWxWmjm~idx\mPiuC]hPjEmgxcrxnxMx~uxhGWxeikuIuxxRmghwi[mbinxdxmAmejziUmXj{xsA}x|x.xBjZ efA_ egjouQA~uz[hAK~xRmJAAxA>eyljnuGhFxagxlbx0hJC\[[uFjtxjyAYA]iIjJAm`iNAYAmxBuGuIx/xlhEAAxMCXi|j`jxLhum5_uLq Z~H f@rF @Go M E Z vgGd uB AtNM \\ h Lt~q Buq NK ZS gG t1V { ^ GA{ Sr _N l oyV G@ SJ `J mH z s GcT] bt oh|E JMWD eY rW CLht[D iA v<fC3hQ1u _K lur x~r DS PP ]G jIwQ EC Rus _A l~s yGB E~J QO ^L k H xM EE R V _1G lx yN F S@ _J l&u yuJ F~I S3V _*F l<ryO{GxhBV PuI \"V h P u ] B \ O1n\ u k V x&V Ea R` _W lJ xH Et R _k~l hz@ H ATsT b3r nm~{Oa IAn VhbxT p<q |u ILa VP cV p<W |a IH Vh~ bL oY | fIO WM dVV qQ ~b J} WoV dkUp] ~"uKBhY<A g+b tV A Y MQt ZmUgI uV B_ NVs [qV h*ourChE Q F^ x l U yi E&T RVq _ GkMV z<VF Tqs `V mxf yG F VSF a3m n BzRH H V3lcqq qhD }hJ I XC eA rY  } L;RYcg"q uY\B q ^G k&J xt E` R} ^<Nj^ xt E V R [ _PCk"R nxH {"pHEo WEfdBo r+W nKfFYh gW t\ AvN W \ L id v rB NPM ^ju4k+D`%c nmwzVH+rV+Nda r`U~z} Ld@ YuU fuP r g{LDV GWD ] j}c w"r CO\ P@]kwkT yNFu@TrB bmv oD |kv HiJUs_G mPQzOj HRD UCb@ pEb }C JfW0f4ze2_Tr|h\kJhvuulk,W Wt`nTNNa \f4miC VzfbW Huh"T|\|TyX QQM9`z Yf4`eWsEh3xC kC xBxEX }h0`I3jiTa SC`"f4X_QsE whN|VC J~XWk.8o*~g.D e.hrm'}@hZU}lFR&C XC eg^qQcOqC rf4S/ktRnlFWgr$\ Yk:@u\VuhKrY?+g6'R7hy7D G8,T:bu@Ebu;C W:(c>hK>D YGffRomPC \f4VhfL~TfJd\XENtErBEW PN].|khcGg3knh_L|c2Hoz z")GRhpY~"<Q[Idl;PWhKm:@Y^TYD mm.8zf4tr*Cf`f4DtPxbf4sw@eSjdf4\}FaYff4dzBN^hf4m>ll YQf4K-Ekf4nP"a~mf4w_#cVf4gys`f4YSHBlCqna_ME@sVE B [ whnwzf4i eNIN|f4CWSmZk'}G^d*Df4GhTeof4vTf4\ J f4ONf f4ju rj_kKImtTSuHC }dRKJ`RZUzBsoTW bV[n0|MI