[Setup] Product=EavyHunterTournament Version=100 Archive=EavyHunterTournament.umod SrcPath=. MasterPath=.. Requires=UnrealTournament400Requirement Group=SetupGroup Group=EavyHunterTournamentGroup Group=umodIncludeFilesGroup [UnrealTournament400Requirement] Product=UnrealTournament Version=400 [SetupGroup] Copy=(Src=System\Manifest.ini,Master=System\Manifest.ini,Size=587,Flags=3) Copy=(Src=System\Manifest.int,Master=System\Manifest.int,Size=561,Flags=3) [EavyHunterTournamentGroup] File=(Src=System\EavyHunterTournament.int,Size=413) File=(Src=System\EavyHunterTournament.u,Size=41291) [umodIncludeFilesGroup] File=(Src=Help\EavyHunterTournament.txt,Size=4990) File=(Src=Help\EavyLogo.bmp,Size=8402) [Setup] LocalProduct=EavyHunterTournament ReadMe=Help\EavyHunterTournament.txt SetupWindowTitle=Hunter AutoplayWindowTitle=EavyHunterTournament Options ProductURL=http://unreal.eavy.de/ VersionURL=http://unreal.eavy.de/EavyHunterTournament/ Developer=Stefan Daniel Schwarz DeveloperURL=mailto:eavy@eavy.net Logo=Help\EavyLogo.bmp [UnrealTournament400Requirement] LocalProduct=UnrealTournament ProductURL=http://www.unrealtournament.com/ VersionURL=http://unreal.epicgames.com/ Developer=Epic Games, Inc. DeveloperURL=http://www.epicgames.com/ ; EavyHunterTournament: "Hunter" Stefan Daniel Schwarz [Public] Object=(Name=EavyHunterTournament.HunterMenuItem,Class=Class,MetaClass=UMenu.UMenuModMenuItem) Object=(Name=EavyHunterTournament.EavyHunterTournament,Class=Class,MetaClass=Botpack.TournamentGameInfo) Preferences=(Caption="EavyHunterTournament",Parent="Game Types",Class=EavyHunterTournament.EavyHunterTournament,Immediate=True) *E@m rRTߛNone GetValue GiveWeaponEavyHunterTournament SetValueSetFontSetTextCreateControlCore SetMaxLengthSetNumericOnlySystemEavyHunterMessage HideWindowGiveToUWindowBotpackEngineFindInventoryType TagYerIt InventorySetDelayedNotifyCreated ActivateReceiveLocalizedMessage ShowWindow ut_jumpbootsTimer PlayerPawnAmmoFriendlyFireScale HunterHealth HunterDamageHunterInvisibility HunterArmor TeamGameBotsPostBeginPlay PostLoginGiveAllInventoryHunterMenuItemBotHunterConfigWindowHunterScoreBoardHunterConfigClient SetEnemy MenuHelpExecuteTournamentPlayer GetStringSwitchToBestWeapon SpectatorClientPlaySound MenuCaption GameName HunterSound ClientClass VictoryGoal BeaconName FragsString WindowTitleNotify BeforePaint ReduceDamageAddDefaultInventory MessageSound ScoreKillEnemyAcquiredDrawNameAndPing CommanderYellAtClientReceive IsRelevantAssessBotAttitudeStartUpMessageGameThreatAdd OneOnOneDrawVictoryConditionsMessageString HunterString PlayerStringbBeepDrawCategoryHeadersUMenuArenaSpawnGibbedCarcassPawnHealth DamageTypeUDamageUT_invisibility ScaleGlow WhiteColorAggressiveness bGameEnded bCanThrowPlayer bIsPlayerActorLightCyanColor Domination CountDown PingStringTournamentScoreBoard CyanColorbHiddenLevelBestCurYOffset AmmoTypeLastSeeingPos LastSeenPos bHeldItemInvYOffset instigatedByXOffset AmmoAmountMaxAmmo GoldColorarmor2ChargeDamageCriticalEventLowPlus aClassNameweapinjuredXLYLMutatorStyleCanvasFontInventorySpot BaseMutator PawnListNetMode TimeSecondsOptionalObject RelatedPRI_1OwnerSpree nextPawnGamebAdminPRIbArenaMutatorScore LastSeenTimeEnemy PlayerNameM RespawnTimeKillerP RelatedPRI_2 Female1VoiceF1tag CanvasFontXL2(All)PingSetPos Location LocalMessageFXCEYi ScriptTextB ReturnValueStaticSaveConfig bCheckedRootClassPackageSwitch TextBufferObject DrawColorOther Function markedItem StrPropertyStructProperty WarningSound NamePropertyControlOffsetObjectPropertyFloatPropertySound myMarker NextMutatorUMenuModMenuItemUWindowDialogClientWindowUWindowFramedWindowUWindowRootWindowWinTopSetSize CreateWindow ControlWidth ControlLeft ControlRightUWindowWindowUWindowDialogControlUWindowCheckboxUWindowEditControlUWindowPulldownMenuItemUWindowPulldownMenuWinLeft WinWidth WinHeightAlign MenuItem BoolProperty IntProperty ViewportDeathMatchPlusPlayerReplicationInfoWeapon LocalPlayer GameInfo LevelInfoHunterCountdownbRequireReady NewPlayeraBotFirstIt ItCountdownItLastIt BytePropertyClipX CampingRateMaxHunterDamageMaxHunterInvisibility}q6q3ʁj@j@9 }9 }t9 }9 }9 }j@ttѸBtѸBj@j@j@j@9 }9 }9 }9 }9 }.;9 }.;9 }I+\I+\I+\RI+\9 }I+\9 }I+\lll=j@==j@җO=j@=j@җOR9 }9 }9 }9 }9 }9 }9 }9 }9 }9 }9 }R9 }9 }9 }9 }9 }.;9 }.;9 }9 }9 }9 }9 }j@j@j@j@j@9 }j@j@j@j@j@j@9 }j@j@j@j@j@j@R9 }9 }9 }9 }9 }9 }9 }I+\I+\I+\9 } &#"d""d " "d!"I]+*Only It scores. Become It by killing It!9]Hunter5]EavyHunterTournamentA(% *2b6@0@ 3g#"@];4@ >m!HI_@@5@1@,FY=.<j{y 2@GZU.; N]It!M]is nowO] You are now6@PS)W@ Di@@ &8LJxQNhT@ sA)2S14Mo o  7X;]EavyHunterTournamentG R@ p~+IX'n~3|.Xڋ33|.Xڋ33t3|.Xڄt3tt3t3|.Xڄt3tt3t33t3tttt3tt3ttt3tt33t3ttt3tt33t33t3ttt3tt33t3|.Xڈ|.Xڈ|.Xڈ|.Xڄtt|.Xڈ|.Xڈ|.Xڈ|.Xڄtttttttttt|.Xڈ|.Xڈ|.Xڈ|.Xڋ3|.Xڈ|.Xڈ|.Xڈ|.Xڋ3tttttt3t|.Xڈ|.Xڈ|.Xڋ3|.Xڈ|.Xڈ|.Xڈ|.Xڈ|.Xڋ3|.Xڈ|.Xڄtttttt3tttttt3tttttt3tttttt|.Xڄtt3ttttt|.Xڄtt3 Vc6 '-w*w%-%T-'#%r*%%,%,%,%* |`KRw*'( tULCcUaE zAFDw*Tr3r r* r3?&*Dr w3?&Dw r3DDw w*% ZGtRD-$'Rw'*;'a/!S->'''->a/!w.*a/!a/!.*(DDa/!w.*a/!.*( 'k/%}# }/{w/*w./*)/{)a/!2)a/!D-6' E Q m*   a!; / ?,?,!?,* a a!; / ?,?,!?,* ak::$ a!; / ?,?,!?,* a ^CH72wC wD/-4$2$$ [7ZPK7FI-$w7*7-( 9MlOJu 1)wO rQ A/ $A- % r*B-6%)-6(w*wA%-->r%*1%%V%w*$?,y0%01%  w*aa w*1-' %  Ww*aa w*-' %  w*aa w*&, -' w*a/!/r  @   @  *a/!(pr..@. ,A h//EavyHunterTournament: "Hunter" Stefan Daniel Schwarz class HunterMenuItem expands UMenuModMenuItem; function Execute() { MenuItem.Owner.Root.CreateWindow(class'HunterConfigWindow', 10, 10, 150, 100); } nB'2o*ͷ;aGնmo R 4]&EavyHunterTournament-]HunterV//EavyHunterTournament: "Hunter" Stefan Daniel Schwarz class HunterConfigClient expands UWindowDialogClientWindow; var UWindowCheckBox GiveAllInventory; var UWindowCheckBox TeamGameBots; var UWindowEditControl FriendlyFireScale; var UWindowCheckBox MaxHunterDamage; var UWindowCheckBox MaxHunterInvisibility; var UWindowEditControl HunterArmor; var UWindowEditControl HunterCountdown; var UWindowEditControl HunterDamage; var UWindowEditControl HunterHealth; var UWindowEditControl HunterInvisibility; function Created() { local int ControlOffset; local int ControlWidth, ControlLeft, ControlRight; Super.Created(); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; ControlOffset = 10; GiveAllInventory = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); GiveAllInventory.SetText("GiveAllInventory"); GiveAllInventory.SetFont(F_Normal); GiveAllInventory.Align = TA_Right; GiveAllInventory.bChecked = class'EavyHunterTournament'.default.GiveAllInventory; ControlOffset += 25; TeamGameBots = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); TeamGameBots.SetText("TeamGameBots"); TeamGameBots.SetFont(F_Normal); TeamGameBots.Align = TA_Right; TeamGameBots.bChecked = class'EavyHunterTournament'.default.TeamGameBots; ControlOffset += 25; FriendlyFireScale = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, ControlOffset, ControlWidth, 1)); FriendlyFireScale.SetText("FriendlyFireScale"); FriendlyFireScale.SetFont(F_Normal); FriendlyFireScale.SetNumericOnly(True); FriendlyFireScale.SetMaxLength(3); FriendlyFireScale.Align = TA_Right; FriendlyFireScale.SetValue(string(class'EavyHunterTournament'.Default.FriendlyFireScale)); FriendlyFireScale.SetDelayedNotify(True); ControlOffset += 25; MaxHunterDamage = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); MaxHunterDamage.SetText("MaxHunterDamage"); MaxHunterDamage.SetFont(F_Normal); MaxHunterDamage.Align = TA_Right; if ( class'EavyHunterTournament'.Default.HunterDamage > 999 ) MaxHunterDamage.bChecked = True; else MaxHunterDamage.bChecked = False; ControlOffset += 25; MaxHunterInvisibility = UWindowCheckbox(CreateControl(class'UWindowCheckbox', ControlLeft, ControlOffset, ControlWidth, 1)); MaxHunterInvisibility.SetText("MaxHunterInvisibility"); MaxHunterInvisibility.SetFont(F_Normal); MaxHunterInvisibility.Align = TA_Right; if ( class'EavyHunterTournament'.Default.HunterInvisibility > 999 ) MaxHunterInvisibility.bChecked = True; else MaxHunterInvisibility.bChecked = False; ControlOffset = 10; HunterHealth = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); HunterHealth.SetText("HunterHealth"); HunterHealth.SetFont(F_Normal); HunterHealth.SetNumericOnly(True); HunterHealth.SetMaxLength(3); HunterHealth.Align = TA_Right; HunterHealth.SetValue(string(class'EavyHunterTournament'.Default.HunterHealth)); ControlOffset += 25; HunterArmor = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); HunterArmor.SetText("HunterArmor"); HunterArmor.SetFont(F_Normal); HunterArmor.SetNumericOnly(True); HunterArmor.SetMaxLength(3); HunterArmor.Align = TA_Right; HunterArmor.SetValue(string(class'EavyHunterTournament'.Default.HunterArmor)); ControlOffset += 25; HunterCountdown = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); HunterCountdown.SetText("HunterCountdown"); HunterCountdown.SetFont(F_Normal); HunterCountdown.SetNumericOnly(True); HunterCountdown.SetMaxLength(3); HunterCountdown.Align = TA_Right; HunterCountdown.SetValue(string(class'EavyHunterTournament'.Default.HunterCountdown)); HunterCountdown.SetDelayedNotify(True); ControlOffset += 25; HunterDamage = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); HunterDamage.SetText("HunterDamage"); HunterDamage.SetFont(F_Normal); HunterDamage.SetNumericOnly(True); HunterDamage.SetMaxLength(3); HunterDamage.Align = TA_Right; if ( MaxHunterDamage.bChecked ) HunterDamage.HideWindow(); else HunterDamage.SetValue(string(class'EavyHunterTournament'.Default.HunterDamage)); ControlOffset += 25; HunterInvisibility = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); HunterInvisibility.SetText("HunterInvisibility"); HunterInvisibility.SetFont(F_Normal); HunterInvisibility.SetNumericOnly(True); HunterInvisibility.SetMaxLength(3); HunterInvisibility.Align = TA_Right; if ( MaxHunterInvisibility.bChecked ) HunterInvisibility.HideWindow(); else HunterInvisibility.SetValue(string(class'EavyHunterTournament'.Default.HunterInvisibility)); } function BeforePaint(Canvas C, float X, float Y) { local int ControlWidth, ControlLeft, ControlRight; Super.BeforePaint(C, X, Y); ControlWidth = WinWidth/2.5; ControlLeft = (WinWidth/2 - ControlWidth)/2; ControlRight = WinWidth/2 + ControlLeft; GiveAllInventory.SetSize(ControlWidth + 10, 1); GiveAllInventory.WinLeft = ControlLeft - 5; TeamGameBots.SetSize(ControlWidth + 10, 1); TeamGameBots.WinLeft = ControlLeft - 5; FriendlyFireScale.SetSize(ControlWidth + 10, 1); FriendlyFireScale.WinLeft = ControlLeft - 5; MaxHunterDamage.SetSize(ControlWidth + 10, 1); MaxHunterDamage.WinLeft = ControlLeft - 5; MaxHunterInvisibility.SetSize(ControlWidth + 10, 1); MaxHunterInvisibility.WinLeft = ControlLeft - 5; HunterArmor.SetSize(ControlWidth + 10, 1); HunterArmor.WinLeft = ControlRight - 5; HunterCountdown.SetSize(ControlWidth + 10, 1); HunterCountdown.WinLeft = ControlRight - 5; HunterDamage.SetSize(ControlWidth + 10, 1); HunterDamage.WinLeft = ControlRight - 5; HunterHealth.SetSize(ControlWidth + 10, 1); HunterHealth.WinLeft = ControlRight - 5; HunterInvisibility.SetSize(ControlWidth + 10, 1); HunterInvisibility.WinLeft = ControlRight - 5; } function Notify(UWindowDialogControl C, byte E) { switch(E) { case DE_Change: switch(C) { case GiveAllInventory: class'EavyHunterTournament'.default.GiveAllInventory = GiveAllInventory.bChecked; class'EavyHunterTournament'.static.StaticSaveConfig(); break; case TeamGameBots: class'EavyHunterTournament'.default.TeamGameBots = TeamGameBots.bChecked; class'EavyHunterTournament'.static.StaticSaveConfig(); break; case FriendlyFireScale: class'EavyHunterTournament'.default.FriendlyFireScale = int(FriendlyFireScale.GetValue()); class'EavyHunterTournament'.static.StaticSaveConfig(); break; case MaxHunterDamage: if ( MaxHunterDamage.bChecked ) { HunterDamage.SetValue("0"); class'EavyHunterTournament'.default.HunterDamage = 9999999; HunterDamage.HideWindow(); } else { HunterDamage.SetValue("0"); class'EavyHunterTournament'.default.HunterDamage = 0; HunterDamage.ShowWindow(); } class'EavyHunterTournament'.static.StaticSaveConfig(); break; case MaxHunterInvisibility: if ( MaxHunterInvisibility.bChecked ) { HunterInvisibility.SetValue("0"); class'EavyHunterTournament'.default.HunterInvisibility = 9999999; HunterInvisibility.HideWindow(); } else { HunterInvisibility.SetValue("0"); class'EavyHunterTournament'.default.HunterInvisibility = 0; HunterInvisibility.ShowWindow(); } class'EavyHunterTournament'.static.StaticSaveConfig(); break; case HunterArmor: class'EavyHunterTournament'.default.HunterArmor = int(HunterArmor.GetValue()); class'EavyHunterTournament'.static.StaticSaveConfig(); break; case HunterCountdown: if ( int(HunterCountdown.GetValue()) > 0 ) { if ( (int(HunterDamage.GetValue()) > int(HunterCountdown.GetValue())) && (int(HunterDamage.GetValue()) <= 999) ) { class'EavyHunterTournament'.default.HunterDamage = int(HunterCountdown.GetValue()); HunterDamage.SetValue(string(class'EavyHunterTournament'.Default.HunterDamage)); } if ( (int(HunterInvisibility.GetValue()) > int(HunterCountdown.GetValue())) && (int(HunterInvisibility.GetValue()) <= 999) ) { class'EavyHunterTournament'.default.HunterInvisibility = int(HunterCountdown.GetValue()); HunterInvisibility.SetValue(string(class'EavyHunterTournament'.Default.HunterInvisibility)); } } class'EavyHunterTournament'.default.HunterCountdown = int(HunterCountdown.GetValue()); class'EavyHunterTournament'.static.StaticSaveConfig(); break; case HunterDamage: if ( (int(HunterCountdown.GetValue()) > 0) && (int(HunterDamage.GetValue()) > int(HunterCountdown.GetValue())) ) { class'EavyHunterTournament'.default.HunterCountdown = int(HunterDamage.GetValue()); HunterCountdown.SetValue(string(class'EavyHunterTournament'.Default.HunterCountdown)); } class'EavyHunterTournament'.default.HunterDamage = int(HunterDamage.GetValue()); class'EavyHunterTournament'.static.StaticSaveConfig(); break; case HunterHealth: class'EavyHunterTournament'.default.HunterHealth = int(HunterHealth.GetValue()); class'EavyHunterTournament'.static.StaticSaveConfig(); break; case HunterInvisibility: if ( (int(HunterCountdown.GetValue()) > 0) && (int(HunterInvisibility.GetValue()) > int(HunterCountdown.GetValue())) ) { class'EavyHunterTournament'.default.HunterCountdown = int(HunterInvisibility.GetValue()); HunterCountdown.SetValue(string(class'EavyHunterTournament'.Default.HunterCountdown)); } class'EavyHunterTournament'.default.HunterInvisibility = int(HunterInvisibility.GetValue()); class'EavyHunterTournament'.static.StaticSaveConfig(); break; } } } f:$dCA-$/a0 :@?:-:a10   D @D?,? ,#D?,? , . ?? ? ?GiveAllInventory%$- -$ ,. ?? ? ?TeamGameBots%$- -4 , . ?? ? ? FriendlyFireScale %  '  , $ S 5 ' ,. ?? ? ?MaxHunterDamage%$ -'-( ,. ?? ? ?MaxHunterInvisibility%$ -'-( , . ?#? ? ?HunterHealth% ' ,$S 0 ,. ?#? ? ?HunterArmor% ' ,$S 1 ,. ?#? ? ?HunterCountdown% ' ,$S ' ,. ?#? ? ?HunterDamage% ' ,$- S  ,. ?#? ? ?HunterInvisibility% ' ,$n- S  k//EavyHunterTournament: "Hunter" Stefan Daniel Schwarz class HunterConfigWindow expands UWindowFramedWindow; function Created() { Super.Created(); SetSize(274, 156); WinLeft = Int((Root.WinWidth - WinWidth) / 2); WinTop = Int((Root.WinHeight - WinHeight) / 2); } d C#)- oz.   % ?,?9 a( a0000=<Oa/!-w. c  aSD.< 6 ?,?,=?,.9 aSD(::$  aS.< 6 ?,?,=?,.9 aS( H//EavyHunterTournament: "Hunter" Stefan Daniel Schwarz class HunterScoreBoard extends TournamentScoreBoard; var localized string VictoryGoal; function DrawCategoryHeaders(Canvas Canvas) { local float Offset, XL, YL; Offset = Canvas.CurY; Canvas.DrawColor = WhiteColor; Canvas.StrLen(PlayerString, XL, YL); Canvas.SetPos((Canvas.ClipX / 8)*2 - XL/2, Offset); Canvas.DrawText(PlayerString); Canvas.StrLen(FragsString, XL, YL); Canvas.SetPos((Canvas.ClipX / 8)*6 - XL/2, Offset); Canvas.DrawText(FragsString); if (Level.NetMode != NM_StandAlone) { Canvas.StrLen(PingString, XL, YL); Canvas.SetPos((Canvas.ClipX / 8)*7 - XL/2, Offset); Canvas.DrawText(PingString); } } function DrawNameAndPing(Canvas Canvas, PlayerReplicationInfo PRI, float XOffset, float YOffset) { local float XL, YL, XL2; local Font CanvasFont; // Draw Name if ( PRI.bAdmin ) Canvas.DrawColor = WhiteColor; else if (PRI.PlayerName == Pawn(Owner).PlayerReplicationInfo.PlayerName) Canvas.DrawColor = GoldColor; else Canvas.DrawColor = CyanColor; Canvas.SetPos((Canvas.ClipX / 8) * 1.5, YOffset); Canvas.DrawText(PRI.PlayerName, False); Canvas.StrLen( "0000", XL, YL ); // Draw Score if ( !Level.Game.IsA('EavyHunterTournament') || (PRI.Owner != EavyHunterTournament(Level.Game).It) ) Canvas.DrawColor = LightCyanColor; else Canvas.DrawColor = GoldColor; Canvas.StrLen( int(PRI.Score), XL2, YL ); Canvas.SetPos( (Canvas.ClipX / 8) * 6 + XL/2 - XL2, YOffset ); Canvas.DrawText( int(PRI.Score), false ); if (Level.NetMode != NM_Standalone) { // Draw Ping Canvas.DrawColor = LightCyanColor; Canvas.StrLen( PRI.Ping, XL2, YL ); Canvas.SetPos( (Canvas.ClipX / 8) * 7 + XL/2 - XL2, YOffset ); Canvas.DrawText( PRI.Ping, false ); } } function DrawVictoryConditions(Canvas Canvas) { Canvas.DrawText(VictoryGoal); } u\*23v`x.;x.;9 }.;xxxxx.;xRù.;R3xxx.;xxx.;Rxx.;xxx.;xxxxxxxxxxRxxxx 8]+*Only It scores. Become It by killing It!:]ScorerK=KJLD @D?,?,"D?,??, ??,?, ??, ?, ? ?,?, ??,?, ??,?, ??",?, ??",?, ??",?, ??",?, ??", @-FYv-I8YV,r8* ^w8--aT At- 3G ' !a+>P3++H& +w * w & w& w .&w*-4 E   &    BD?+?5?,d1+ n//EavyHunterTournament: "Hunter" Stefan Daniel Schwarz class EavyHunterMessage expands CriticalEventLowPlus; var() localized String HunterString, MessageString, PlayerString; var() Sound HunterSound, MessageSound; static function string GetString( optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject ) { if ( RelatedPRI_1 == None ) return ""; if ( OptionalObject == None ) return RelatedPRI_1.PlayerName@Default.MessageString@Default.HunterString; return Default.PlayerString@Default.HunterString; } 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); if ( RelatedPRI_1 == None ) return; if ( RelatedPRI_1 != P.PlayerReplicationInfo ) P.PlaySound(Default.HunterSound,, 16.0); else P.ClientPlaySound(Default.MessageSound,, true); } e?0-$- % Botpack.ShockRifleBotpack.UT_BioRifleBotpack.RipperBotpack.UT_FlakCannonMa/!Botpack.SniperRifleBotpack.PulseGunBotpack.Minigun2Botpack.UT_Eightball1222333?Botpack.SniperRifleBotpack.PulseGun2>Botpack.Minigun2Botpack.UT_Eightball/Botpack.UT_EightballBotpack.Minigun2Botpack.Minigun2Botpack.UT_Eightball2Ga?Botpack.SniperRifleBotpack.PulseGunBotpack.PulseGunBotpack.SniperRiflew*(.{w(*w(*((a w*-'  n~//EavyHunterTournament: "Hunter" Stefan Daniel Schwarz class EavyHunterTournament extends DeathMatchPlus; var() config bool GiveAllInventory; var() config bool TeamGameBots; var() config int FriendlyFireScale; var() config int HunterArmor; var() config int HunterCountdown; var() config int HunterDamage; var() config int HunterHealth; var() config int HunterInvisibility; var bool FirstIt; var int ItCountdown; var Pawn It; var Pawn LastIt; var PlayerPawn LocalPlayer; function TagYerIt() { local Pawn P, Best; local Inventory inv; if ( bRequireReady && (Countdown > 0) ) return; if ( It == None ) { if ( FirstIt ) { Best = LocalPlayer; FirstIt = false; } else { for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( (P != LastIt) && (P.Health > 0) && !P.bHidden && P.bIsPlayer && ((Best == None) || (P.PlayerReplicationInfo.Score < Best.PlayerReplicationInfo.Score)) ) Best = P; } It = Best; } if ( It != None ) { It.Style = STY_Translucent; It.ScaleGlow = 0.5; ItCountdown = HunterCountdown; if ( HunterHealth > 0 ) It.Health = HunterHealth; if ( HunterArmor > 0 ) { inv = It.FindInventoryType(class'Armor2'); if ( inv != None ) inv.Destroy(); inv = Spawn(class'Armor2'); if ( inv != None ) { inv.Charge = HunterArmor; inv.bHeldItem = true; inv.RespawnTime = 0.0; inv.GiveTo(It); } } if ( HunterInvisibility > 0 ) { inv = It.FindInventoryType(class'UT_Invisibility'); if ( inv != None ) inv.Destroy(); inv = Spawn(class'UT_Invisibility'); if ( inv != None ) { inv.Charge = HunterInvisibility; inv.bHeldItem = true; inv.RespawnTime = 0.0; inv.GiveTo(It); inv.Activate(); } } if ( HunterDamage > 0 ) { inv = It.FindInventoryType(class'UDamage'); if ( inv != None ) inv.Destroy(); inv = Spawn(class'UDamage'); if ( inv != None ) { inv.Charge = (HunterDamage + 1) * 10; inv.bHeldItem = true; inv.RespawnTime = 0.0; inv.GiveTo(It); inv.Activate(); } } for ( P=Level.PawnList; P!=None; P=P.NextPawn ) { if ( P.IsA('TournamentPlayer') ) { if ( P == It ) P.ReceiveLocalizedMessage(class'EavyHunterMessage',, It.PlayerReplicationInfo,, It); else P.ReceiveLocalizedMessage(class'EavyHunterMessage',, It.PlayerReplicationInfo,, None); } if ( P.IsA('Bot') ) { if ( P == It ) { Bot(P).CampingRate = 0; Bot(P).Aggressiveness += 5.0; } else Bot(P).SetEnemy(It); } } LastIt = It; } } function float GameThreatAdd(Bot aBot, Pawn Other) { if ( (aBot != It) && (Other == It) ) return 10; else return 0; } event PostLogin( playerpawn NewPlayer ) { Super.PostLogin(NewPlayer); if( NewPlayer.Player != None && Viewport(NewPlayer.Player) != None) { LocalPlayer = NewPlayer; if ( !LocalPlayer.IsA('Spectator') && !LocalPlayer.IsA('Commander') ) FirstIt = true; } } function Timer() { local Pawn P; Super.Timer(); if ( bGameEnded ) { for ( P=Level.PawnList; P!=None; P=P.NextPawn ) if ( (P != It) && (P.Health > 0) && !P.bHidden ) { P.Health = 0; P.SpawnGibbedCarcass(); P.bHidden = true; } } else { if ( It == None ) TagYerIt(); else if ( ItCountdown > 0 ) { ItCountdown--; if ( ItCountdown == 0 ) { It.Style = It.Default.Style; It.ScaleGlow = It.Default.ScaleGlow; It = None; } } } } function bool IsRelevant(actor Other) { local Mutator M; local bool bArenaMutator; if ( GiveAllInventory ) { for (M = BaseMutator; M != None; M = M.NextMutator) { if (M.IsA('Arena')) bArenaMutator = True; } if ( bArenaMutator ) { if ( Other.IsA('Inventory') && (Inventory(Other).MyMarker != None) && !Other.IsA('UT_Jumpboots') && !Other.IsA('Ammo')) { Inventory(Other).MyMarker.markedItem = None; return false; } } else { if ( Other.IsA('Inventory') && (Inventory(Other).MyMarker != None) && !Other.IsA('UT_Jumpboots')) { Inventory(Other).MyMarker.markedItem = None; return false; } } } return Super.IsRelevant(Other); } function int ReduceDamage(int Damage, name DamageType, pawn injured, pawn instigatedBy) { local Bot B; Damage = Super.ReduceDamage(Damage, DamageType, injured, instigatedBy); if ( (instigatedBy != None) && (instigatedBy != injured) && (injured != It) && (instigatedBy != It) ) { B = Bot(injured); if ( B != None ) { if ( TeamGameBots ) B.YellAt(instigatedBy); else { B.Enemy = instigatedBy; B.LastSeenTime = Level.TimeSeconds; B.LastSeeingPos = injured.Location; B.LastSeenPos = instigatedBy.Location; B.EnemyAcquired(); } } return (Damage * (float(FriendlyFireScale) / 100)); } else return Damage; } function ScoreKill(pawn Killer, pawn Other) { if ( It != None ) { if ( Other == It ) { It.Style = It.Default.Style; It.ScaleGlow = It.Default.ScaleGlow; } if ( ((Killer == It) || (Killer == None)) && (Other == It) ) { It.PlayerReplicationInfo.Score -= 1; It = None; } else if ( (Killer == It) && (Other != It) ) It.PlayerReplicationInfo.Score += 1; else if ( (Killer != It) && (Other == It) ) { It = Killer; TagYerIt(); } else if ( (Killer != It) && (Killer != None) ) Killer.Spree = 0; } } function byte AssessBotAttitude(Bot aBot, Pawn Other) { if ( (aBot != It) && (Other != It) ) { if ( TeamGameBots ) return 3; else return 2; } return 1; } function AddDefaultInventory( pawn PlayerPawn ) { local Weapon weap; local int i; local inventory Inv; local float F; Super.AddDefaultInventory(PlayerPawn); if ( !GiveAllInventory || (bRequireReady && (Countdown > 0)) ) return; GiveWeapon(PlayerPawn, "Botpack.ShockRifle"); GiveWeapon(PlayerPawn, "Botpack.UT_BioRifle"); GiveWeapon(PlayerPawn, "Botpack.Ripper"); GiveWeapon(PlayerPawn, "Botpack.UT_FlakCannon"); if ( PlayerPawn.IsA('PlayerPawn') ) { GiveWeapon(PlayerPawn, "Botpack.SniperRifle"); GiveWeapon(PlayerPawn, "Botpack.PulseGun"); GiveWeapon(PlayerPawn, "Botpack.Minigun2"); GiveWeapon(PlayerPawn, "Botpack.UT_Eightball"); PlayerPawn.SwitchToBestWeapon(); } else { F = FRand(); if ( F < 0.7 ) { GiveWeapon(PlayerPawn, "Botpack.SniperRifle"); GiveWeapon(PlayerPawn, "Botpack.PulseGun"); if ( F < 0.4 ) { GiveWeapon(PlayerPawn, "Botpack.Minigun2"); GiveWeapon(PlayerPawn, "Botpack.UT_Eightball"); } else { GiveWeapon(PlayerPawn, "Botpack.UT_Eightball"); GiveWeapon(PlayerPawn, "Botpack.Minigun2"); } } else { GiveWeapon(PlayerPawn, "Botpack.Minigun2"); GiveWeapon(PlayerPawn, "Botpack.UT_Eightball"); if ( F < 0.88 ) { GiveWeapon(PlayerPawn, "Botpack.SniperRifle"); GiveWeapon(PlayerPawn, "Botpack.PulseGun"); } else { GiveWeapon(PlayerPawn, "Botpack.PulseGun"); GiveWeapon(PlayerPawn, "Botpack.SniperRifle"); } } } for ( inv=PlayerPawn.inventory; inv!=None; inv=inv.inventory ) { weap = Weapon(inv); if ( (weap != None) && (weap.AmmoType != None) ) weap.AmmoType.AmmoAmount = weap.AmmoType.MaxAmmo; } inv = Spawn(class'Armor2'); if( inv != None ) { inv.bHeldItem = true; inv.RespawnTime = 0.0; inv.GiveTo(PlayerPawn); } } function bool OneOnOne() { if ( It != None ) return true; else return false; } function GiveWeapon(Pawn PlayerPawn, string aClassName ) { Super.GiveWeapon(PlayerPawn, aClassName); if ( GiveAllInventory && (PlayerPawn.Weapon != None) ) PlayerPawn.Weapon.bCanThrow = false; } function PostBeginPlay() { local Inventory Inv; Super.PostBeginPlay(); if ( GiveAllInventory ) ForEach AllActors(class'Inventory', Inv) if ( !Inv.bHeldItem ) Inv.Destroy(); } wP< N $P L -$-   -4-    5J   S- 0  A 0 %  - 0   0 %  ! 1J  l;J%JJJ JS ;JJJ JS  J  J%#JJ JS  J  X 0J  J%#JJ JS  J   B@0Er?*6rM*?WBRB  ?\CC?D?,?D?, .< S A ACB rrrqQqUrqCqPqqqqqNqaq]q\qxqZquqfq(qaq@Yoq@TqOxIjWq^xni]@U{v@Sqtqz@kqYxb@ZjBqAq`YpqFqDqEzVrRZVqB@XqxqdYhpGNmqGZyqEzex%zOqYz:{w{bqX{cxGZdxqROjHLx>xFqj^qAx$xYcx?q{@Vxy{[_Zax=xA|xHZuZM@l{n@T@I{o@kxJxQrc{gxCY`FY^xKCYPZvUr`A]xJr\xLY]x<@\xAq[qS@HqDLx0q}x.XwB<hyNlq GO| TOlZ aOXb nOX  {OX! HPr~ UPtC aPdC nPrK {PX GQwK TQX `QXm mQXn zQX" GR|q TRZZ aRawnR! |R  HSX& TSX# aS^Y nSzl {StQHTrL VTwL bTb nTzszTd HUwM TUrM `U& lUlj xUz~ EVaW RV|}_V_ mVdl zVzz FWg SWyZ_Wt_ mWcd zW GX" SX|e _X^w kX# xX DYf PYf\YyKjYtr xYqq DZd@ QZt@ ]Zt iZaR uZKA[ rO[i A^@N N^ee[^ewi^v8 w^f| C_@@O_zW ]_ys i_wf u_wgB`wi P`J\`~h j`kew`~gEakwSa@O aa)Gna@6uc\C DdyJ Qd@M ^d+Zkdy[E\SK.ovL,]zm IAnUt^C[m QGE]am b%snvQNaHGoPvtt Fkm Rem ^[kJDy] }|j Zok4sf'\YXk4bu$JWXzaSk4v[vCRQvk4Sc*J vX=N@m N@FkZ>^E@k4yc?R \k4y~nX<o g@0NVs dS\po.KL======================================================================== | EavyHunterTournament: "Hunter" Stefan Daniel Schwarz | ======================================================================== Quick Installation Instructions ------------------------------- If you have downloaded EavyHunterTournament.umod, double-click it to run Unreal Tournament's built-in Module Setup, it will guide you through the installation. If you have downloaded EavyHunterTournament.umod.zip, unzip the file and double-click EavyHunterTournament.umod to run Unreal Tournament's built- in Module Setup, it will guide you through the installation. If you have downloaded EavyHunterTournament.zip, unzip the file and move EavyHunterTournament.int as well as EavyHunterTournament.u into your UT- System-Directory (eg C:\UnrealTournament\System) to manually install it. Intro ----- I originally created this TagYerIt variant as an additional gametype for Rocket Arena: UT but eventually took it out because it's quite a difference from the "Pure Deathmatch Experience" of Rocket Arena so now I'm releasing it stand-alone independently of RAUT. It was kind of inspired by Alien versus Predator's "Tag" gameplay yet there have been other similar mods like this before that game. This Unreal Tournament Mod is a server-side-only gametype so client downloads are not necessary. Configuration is integrated into the GUI Mod Menu. Rules ----- The rules are simple: We have two teams, a lone hunter versus all the other players, and only the hunter (It) scores frags. To become It, you have to kill It. If It suicides, another It will be chosen automatically. It has some advanced technology to stand a chance against the opposition: Cloaking device, Damage amplifier, etc. Please note that this can be customized by the server admin to their liking... It's a very interesting style of playing since you'll constantly switch between teamplay and one-against-all as you kill and get killed - in the end, one doesn't even know for sure who the hunter is, and who is being hunted: Is It the hunter or the hunted? You'll have to experience it for yourself! Extro ----- If you believe that this gametype should be put back into Rocket Arena: UT, we might reconsider, depending on popular demand - let me know your opinion about it... Mod Configuration Menu ---------------------- GiveAllInventory All players start with all weapons, full ammo, and body armor. All pickups throughout the level will be destroyed at startup. This is similar to Last Man Standing (and Rocket Arena: UT)... TeamGameBots Bots will play together as a team if this is kept on, if it is turned off, bots will simply ignore other players unless they are shot at (when that happens they will try to kill their attacker). FriendlyFireScale Percentage of friendly fire adjustment. The default of 100 means normal damage if non-It-players hit other non-It-players. Set it to 0 to disable non-It-damage or some other value that you like. MaxHunterDamage Turning it on disables the HunterDamage option since It will have a permanent Power Amplifier power-up. MaxHunterInvisibility Turning it on disables the HunterInvisibility option since It will have a permanent Invisibility power-up. HunterHealth When a player becomes It, their health will be reset to this value, full health (100) by default. Set it to 0 to disable health reset. Recommended values are between 0 and 199. HunterArmor When a player becomes It, their armor will be reset to this value, full armor (100) by default. Set it to 0 to disable armor reset. Recommended values are between 0 and 150. HunterCountdown This is a timer that determines the maximum It duration. After the timer runs out, a new It will be chosen even if the old one hasn't been killed. Keep the default of 0 to disable the timer. HunterDamage This determines how long It will have the Power Amplifier power- up. Set it to 0 to completely disable it. If you want to give It a permanent Power Amplifier, activate the MaxHunterDamage option. HunterInvisibility This determines how long It will have the Invisibility power-up. Set it to 0 to completely disable it. If you want to give It a permanent Invisibility, activate the MaxHunterInvisibility option. Server Side Only ---------------- This mod is server side only. It will not be downloaded automatically when clients connect to your server without having it installed. It is client-optional. If you run it on your server, you're welcome to mention my URL in your Message Of The Day so players can find out more about it at its website. Server admins are also encouraged to send me their server addresses so I can visit them and play there. Contact Me At... ---------------- mailto:EavyHunterTournament@unreal.eavy.de http://unreal.eavy.de/EavyHunterTournament/ <<< "Stefan Daniel 'Eavy' Schwarz" >>> BM 6(WR!B1J919RBBBZJJRkZZcss{!!))1199JJRRZZkkss{{)19JsWA941(-!.(.((..((..((..((..((..((AAWV"F"SCWKFM++W'=W &##'WWA941(-!.(.((..((..((..((..((..((AAWV"F"SCWKFM++W'=W &##'WWB2(-(-(.(-(-(-((--((--((--((--((--((;;W FAWQFS-W(-(-(-1BFWOFS5W+ F++W'+:W#!W W>(-(-(-1BFWOFS5W+ F++W'+:W#!WWB-(-(0HLWF"F5WQFS-W+:W!WWB-(-(0HLWF"F5WQFS-W+:W!WW-(.(-;PWTFO3WFI-W$ :W#WW-(.(-;PWTFO3WFI-W$ :W#WW-(.(-;PWTFO3WFI-W$ :W#WW2(-(-=TWKF"/W+LF+-W W+:W WW2(-(-=TWKF"/W+LF+-W W+:W WWC(-(-7XWFK++WUF"FN-W W'jWTF"P+FI.W$/W #W# WWW-(-(->jWTF"P+FI.W$/W #W# WWW-(-(.9jWKF+LF"F+.W 3W+!W WWW-(-(.9jWKF+LF"F+.W 3W+!W WWW-(-(.9jWKF+LF"F+.W 3W+!W WWWC(-(-(.ChWFGFN.W 5W'W W&WWC(-(-(.ChWFGFN.W 5W'W W&W WA-(-(-(!>dWOF+,W'7WW#W+W WA-(-(-(!>dWOF+,W'7WW#W+W WC(-(-(.(-17;=@A@A@A@H9WF"FS-W;W+WWW WC(-(-(.(-17;=@A@A@A@H9WF"FS-W;W+WWWW3(-(-(-(.(.(-(-(-((--((--((--((--((--((;;9WT FI-W$$;W W#WWW3(-(-(-(.(.(-(-(-((--((--((--((--((--((;;9WT FI-W$$;W W#WWW3(-(-(-(.(.(-(-(-((--((--((--((--((--((;;9WT FI-W$$;W W#WWWC(-(-(-(-(-(.(-(..((--((..((--((..((--;;;WKF+-W ?WW WWWC(-(-(-(-(-(.(-(..((--((..((--((..((--;;;WKF+-W ?WW WWW8(-(-(-(-(-(--((--((--((--((--((--;;=WFN-W AW'W W&W8(-(-(-(-(-(--((--((--((--((--((--;;=WFN-W AW'W W&WD;62.(-(-(--((--((--((--((--((--AA=WRFK/W CWW  WWD;62.(-(-(--((--((--((--((--((--AA=WRFK/W CWW  WWD;62.(-(-(--((--((--((--((--((--AA=WRFK/W CWW  WSystem\Manifest.iniSystem\Manifest.int1 System\EavyHunterTournament.intSystem\EavyHunterTournament.uKHelp\EavyHunterTournament.txt~Help\EavyLogo.bmpv HALm