Guest User

Untitled

a guest
Jan 13th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. <<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>
  3.               EUTCTFHud
  4. <<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>
  5. */
  6.  
  7. class EUTCTFHud extends ChallengeCTFHUD;
  8.  
  9. var CTFReplicationInfo GameRI;
  10. var EUTGameReplicationInfo MyCRI;
  11. var DeathMatchPlus DMP;
  12. var EUTHudSettings HudSettings;
  13. var CTFFlag Flag${1}< ${3} >
  14. var Pawn P;
  15. var PlayerReplicationInfo PRI;
  16. var private PlayerReplicationInfo StoredPRI[32];
  17. var private PlayerReplicationInfo MyPRI;
  18. var private GameReplicationInfo StoredGRI;
  19. var EUTStatInfo StatInfo;
  20. var EUTHudHelper HudHelper;
  21. var private PlayerPawn MyPlayer;
  22. var font MySmallFont;
  23.  
  24. var class<EUTStatInfo> StatInfo${1}< ${3} >
  25. var class<EUTHudHelper> HudHelper${1}< ${3} >
  26. var class<EUTDemoEnhancer> EUTDemoEnhancer${1}< ${3} >
  27.  
  28. var bool bWarmupSwitch, bStartMessage, bUdemo;
  29.  
  30. var byte RedTeamSize,
  31.     BlueTeamSize,
  32.     RequestHitsounds;
  33.  
  34. var color BlueColor,
  35.     RedColor;
  36.  
  37. var float PreBaseEye;
  38.  
  39. var string RedFlagCarrierLocation,
  40.     BlueFlagCarrierLocation,
  41.     StartMessage,
  42.     LastEventMessage;
  43.  
  44. var texture TimeBack,
  45.     PingBack,
  46.     TeamBack,
  47.     AccuracyBack,
  48.     AccuracyBackRifle,
  49.     AccuracyBackShock,
  50.     EUTElements,
  51.     Badge;
  52.  
  53. //-------------------------------------
  54. // PostBeginPlay
  55. //-------------------------------------
  56. simulated function PostBeginPlay()
  57. {
  58.     SetTimer(1.0, True);
  59.  
  60.     if (ServerInfo == none) ServerInfo = Spawn(ServerInfoClass, Owner);
  61.     if (StatInfo == none) StatInfo = Spawn(StatInfoClass, Owner);
  62.     if (HudHelper == none) HudHelper = Spawn(HudHelperClass,Owner);
  63.     if (MyFonts == none) MyFonts = FontInfo(Spawn(Class<Actor>(DynamicLoadObject(FontInfoClass, class'Class'))));
  64.  
  65.     InitializeHudSettings();
  66.     LoadTextures();
  67.     SetDefaults(0);
  68.  
  69.     if (Level.NetMode != NM_Standalone) MOTDFadeOutTime = 350;
  70.     FaceAreaOffset = -64;
  71.  
  72.     if ((PlayerPawn(Owner).GameReplicationInfo != None)
  73.     && (PlayerPawn(Owner).GameReplicationInfo.RemainingTime > 0))
  74.         TimeMessageClass = class<CriticalEventPlus>(DynamicLoadObject("BotPack.TimeMessage", class'Class'));
  75.  
  76.     MyCRI = EUTGameReplicationInfo(PlayerPawn(Owner).GameReplicationInfo);
  77. }
  78.  
  79. //-------------------------------------
  80. // InitializeHudSettings
  81. //-------------------------------------
  82. simulated final function InitializeHudSettings()
  83. {
  84.     if (HudSettings == none)
  85.     {
  86.         HudSettings = EUTHudSettings(Spawn(Class<Actor>(DynamicLoadObject("EUTSource.EUTHudSettings",class'class'))));
  87.         if (HudSettings != none)
  88.         {
  89.             HudSettings.MyPlayer = PlayerPawn(Owner);
  90.             HudSettings.HS = HudSettings;
  91.             HudSettings.SaveConfig();
  92.         }
  93.     }
  94. }
  95.  
  96. //-------------------------------------
  97. // LoadTextures
  98. //-------------------------------------
  99. simulated final function LoadTextures()
  100. {
  101.     TimeBack = texture(DynamicLoadObject("EUT_Textures.Timeback", class'Texture'));
  102.     PingBack = texture(DynamicLoadObject("EUT_Textures.PingDisplay", class'Texture'));
  103.     TeamBack = texture(DynamicLoadObject("EUT_Textures.TeamBack", class'Texture'));
  104.     AccuracyBack = Texture(DynamicLoadObject("EUT_Textures.EUTAccBack", class'Texture'));
  105.     AccuracyBackRifle = Texture(DynamicLoadObject("EUT_Textures.EUTAccBackRifle", class'Texture'));
  106.     AccuracyBackShock = Texture(DynamicLoadObject("EUT_Textures.EUTAccBackShock", class'Texture'));
  107.     EUTElements = Texture(DynamicLoadObject("EUT_Textures.EUT_Elements", class'Texture'));
  108.     Badge = Texture(DynamicLoadObject("EUT_Textures.EUT_Badge", class'Texture'));
  109.     MySmallFont = Font(DynamicLoadObject("EUT_Textures.EUTSmallFont", class'Font'));
  110. }
  111.  
  112. //-------------------------------------
  113. // SetDefaults
  114. //-------------------------------------
  115. simulated final function SetDefaults(byte c)
  116. {
  117.     switch (c)
  118.     {
  119.         case 0: HudHelper.ResetWeaponData(); break;
  120.         case 1: HudHelper.ResetWeaponData();
  121.                 HudHelper.StageCount = 1;
  122.                 HudHelper.WeaponDrawOffset = 0;
  123.                 if(MyCRI != none) MyCRI.MouseYSetting = 100;
  124.                 break;
  125.     }
  126. }
  127.  
  128. //-------------------------------------
  129. // Timer
  130. //-------------------------------------
  131. function Timer()
  132. {
  133.     super(ChallengeHUD).Timer();
  134.  
  135.     if ((PlayerOwner == None) || (PawnOwner == None))
  136.         return;
  137.     if (PlayerPawn(Owner).PlayerReplicationInfo == none)
  138.         return;
  139.  
  140.     if (MyCRI == none)
  141.     {
  142.         MyCRI = EUTGameReplicationInfo(PlayerPawn(Owner).GameReplicationInfo);
  143.         MyCRI.MouseYSetting = 100;
  144.     }
  145.     else
  146.     {
  147.         MyCRI.ClientCrosshair = Crosshair;
  148.         MyCRI.ClientCrosshairTexture = CrossHairTextures[Crosshair];
  149.  
  150.         if (!HudHelper.bCheckKeyBindings) HudHelper.CheckKeyBindings();
  151.         MyCRI.MouseYRefCount = HudHelper.MouseYCount;
  152.  
  153.         MyCRI.RequestHitsounds = RequestHitsounds;
  154.         MyCRI.WeaponAccuracy.Enforcer = HudHelper.Acc.Enforcer;
  155.         MyCRI.WeaponAccuracy.BioGun = HudHelper.Acc.BioGun;
  156.         MyCRI.WeaponAccuracy.ShockRifle = HudHelper.Acc.ShockRifle;
  157.         MyCRI.WeaponAccuracy.PulseGun = HudHelper.Acc.PulseGun;
  158.         MyCRI.WeaponAccuracy.Ripper = HudHelper.Acc.Ripper;
  159.         MyCRI.WeaponAccuracy.MiniGun = HudHelper.Acc.MiniGun;
  160.         MyCRI.WeaponAccuracy.FlakCannon = HudHelper.Acc.FlakGun;
  161.         MyCRI.WeaponAccuracy.EightBall = HudHelper.Acc.EightBall;
  162.         MyCRI.WeaponAccuracy.SniperRifle = HudHelper.Acc.SniperRifle;
  163.         MyCRI.WeaponAccuracy.SuperShockRifle = HudHelper.Acc.SuperShockRifle;
  164.         MyCRI.WeaponAccuracy.CustomWeapon = HudHelper.Acc.CustomWeapon;
  165.         MyCRI.bJumpBoots = HudSettings.bJumpBoots;
  166.  
  167.         if (!HudHelper.bSetMessageDefaults) HudHelper.SetMessageDefaults(0);
  168.  
  169.         if (!bWarmupSwitch && MyCRI.bWarmupSwitch)
  170.         {
  171.             bWarmupSwitch = true;
  172.             SetDefaults(1);
  173.  
  174.             if (!HudHelper.bCheckForAutoRecorder && MyCRI.bTournament && MyCRI.bMatchStarted)
  175.                 HudHelper.CheckForAutoRecorder(PlayerPawn(Owner), HudSettings.AutoRecorder);
  176.         }
  177.         if (!HudHelper.bCheckForAutoRecorder && !MyCRI.bTournament && MyCRI.bMatchStarted)
  178.             HudHelper.CheckForAutoRecorder(PlayerPawn(Owner), HudSettings.AutoRecorder);
  179.  
  180.         MyCRI.TextureCounter++;
  181.         if (MyCRI.TextureCounter == 2)
  182.         {
  183.             MyCRI.TextureCounter = 0;
  184.             switch (MyCRI.TextureSwitch)
  185.             {
  186.                 case 0: MyCRI.TextureSwitch = 1; break;
  187.                 case 1: MyCRI.TextureSwitch = 0; break;
  188.             }
  189.         }
  190.  
  191.         if (MyCRI.PlayWaitMessage[PlayerPawn(Owner).PlayerReplicationInfo.PlayerID] == 1)
  192.             PlayerOwner.ReceiveLocalizedMessage(class'EUTHudMessages', 17);
  193.     }
  194.  
  195.     GameRI = CTFReplicationInfo(PlayerPawn(Owner).GameReplicationInfo);
  196.     if (GameRI == None) return;
  197.  
  198.     RedTeamSize = GameRI.Teams[0].Size;
  199.     BlueTeamSize = GameRI.Teams[1].Size;
  200.     RequestHitsounds = HudSettings.HitSounds;
  201.  
  202.     if (PawnOwner.PlayerReplicationInfo.HasFlag != None
  203.     && (!PawnOwner.PlayerReplicationInfo.HasFlag.IsA('EUTReadyFlag')))
  204.         PlayerOwner.ReceiveLocalizedMessage( class'CTFMessage2', 0);
  205.  
  206.     if ((FlagClass != None) && !FlagClass.bHome)
  207.         PlayerOwner.ReceiveLocalizedMessage(class'CTFMessage2', 1);
  208.  
  209.     if (HudHelper.DelayDataClear < 20) HudHelper.DelayDataClear++;
  210.     if (PlayerPawn(Owner).PlayerReplicationInfo.bIsSpectator) return;
  211.  
  212.     if (PlayerPawn(Owner).GameReplicationInfo != none)
  213.     {
  214.         MyCRI.bAutoShot = HudSettings.bAutoShot;
  215.         if (PlayerPawn(Owner).GameReplicationInfo.GameEndedComments != "")
  216.         {
  217.             HudHelper.ScreenShotDelay++;
  218.             if (HudHelper.ScreenShotDelay >= 6 && PlayerPawn(Owner).IsInState('GameEnded'))
  219.             {
  220.                 HudHelper.StopDemo(PlayerPawn(Owner));
  221.                 if (!HudHelper.bScreenShotTaken && HudSettings.bAutoShot)
  222.                 {
  223.                     HudHelper.bScreenShotTaken = True;
  224.                     PlayerPawn(Owner).ConsoleCommand("sshot");
  225.                     PlayerPawn(Owner).ClientMessage("Auto ScreenShot Taken");
  226.                 }
  227.             }
  228.         }
  229.     }
  230. }
  231.  
  232. //-------------------------------------
  233. // PreRender
  234. //-------------------------------------
  235. simulated event PreRender(Canvas C)
  236. {
  237.     local byte i;
  238.  
  239.     MyPlayer = PlayerPawn(Owner);
  240.  
  241.     if (HudHelper != none)
  242.         bUdemo = HudHelper.IsUdemoSpectator(PlayerOwner);
  243.  
  244.     if(MyPlayer != none && HudHelper != none)
  245.         HudHelper.FixPhysics(MyPlayer);
  246.  
  247.     if (MyCRI != none)
  248.     {
  249.         for (i=0; i<MyCRI.ScrollersCount; i++)
  250.         {
  251.             if (MyCRI.Scrollers[i] != none && MyPlayer != none)
  252.             {
  253.                 MyCRI.Scrollers[i].Player = MyPlayer;
  254.                 MyCRI.Scrollers[i].Player.PlayerReplicationInfo = MyPlayer.PlayerReplicationInfo;
  255.                 MyCRI.Scrollers[i].Player.GameReplicationInfo = MyPlayer.GameReplicationInfo;
  256.             }
  257.         }
  258.     }
  259.  
  260.     if (level.netmode != NM_ListenServer)
  261.     {
  262.         if (MyPlayer != None
  263.         && (MyPlayer.GameReplicationInfo != none)
  264.         && (MyPlayer.PlayerReplicationInfo != none))
  265.         {
  266.             if (!bUdemo)
  267.             {
  268.                 PreBaseEye = MyPlayer.BaseEyeHeight;
  269.                 MyPlayer.BaseEyeHeight = -10000;
  270.             }
  271.  
  272.             for (i = 0; i < 32; i++)
  273.             {
  274.                 PRI = MyPlayer.GameReplicationInfo.PRIArray[i];
  275.                 if ((PRI != None ) && (PRI != MyPlayer.PlayerReplicationInfo))
  276.                 {
  277.                     P = Pawn(PRI.Owner);
  278.                     if (P != None && !bUdemo)
  279.                     {
  280.                         P.bIsPlayer = false;
  281.                         P.bISpawn = false;
  282.                         StoredPRI[i] = P.PlayerReplicationInfo;
  283.  
  284.                         if (P.PlayerReplicationInfo != none && (P.PlayerReplicationInfo.HasFlag == none))
  285.                            P.PlayerReplicationInfo = none;
  286.                     }
  287.                 }
  288.             }
  289.         }
  290.     }
  291.  
  292.     if (MyPlayer != none
  293.     && (MyPlayer.PlayerReplicationInfo != none)
  294.     && (!bUdemo))
  295.     {
  296.         MyPRI = MyPlayer.PlayerReplicationInfo;
  297.         MyPlayer.PlayerReplicationInfo = none;
  298.     }
  299.  
  300.     if (MyPlayer != none
  301.     && (MyPlayer.GameReplicationInfo != none)
  302.     && (!bUdemo))
  303.     {
  304.         StoredGRI = MyPlayer.GameReplicationInfo;
  305.         MyPlayer.GameReplicationInfo = none;
  306.     }
  307.  
  308.     super.PreRender(C);
  309. }
  310.  
  311. //-------------------------------------
  312. // PostRender
  313. //-------------------------------------
  314. simulated event PostRender(Canvas C)
  315. {
  316.     local float X, Y, XL, YL, _Scale;
  317.     local CTFFlag _Flag;
  318.     local byte i;
  319.  
  320.     MyPlayer = PlayerPawn(Owner);
  321.  
  322.     if (MyPlayer != none
  323.     && (MyPlayer.GameReplicationInfo == none)
  324.     && (StoredGRI != none)
  325.     && (!bUdemo))
  326.         MyPlayer.GameReplicationInfo = StoredGRI;
  327.  
  328.     if (MyPlayer != none
  329.     && (MyPlayer.PlayerReplicationInfo == none)
  330.     && (MyPRI != none)
  331.     && (!bUdemo))
  332.         MyPlayer.PlayerReplicationInfo = MyPRI;
  333.  
  334.     if (MyPlayer == none
  335.     || (MyPlayer.PlayerReplicationInfo == none)
  336.     || (PawnOwner == none)
  337.     || (PlayerOwner == none)
  338.     || (HudHelper == none)
  339.     || (MyCRI == none))
  340.     {
  341.         MyPlayer.bIsPlayer = true;
  342.         super(ChallengeHUD).PostRender(C);
  343.         return;
  344.     }
  345.  
  346.     if (level.netmode != NM_ListenServer)
  347.     {
  348.         if (MyPlayer != None
  349.         && (MyPlayer.GameReplicationInfo != none)
  350.         && (MyPlayer.PlayerReplicationInfo != None))
  351.         {
  352.             if (!bUdemo)
  353.             {
  354.                 MyPlayer.BaseEyeHeight = PreBaseEye;
  355.                 MyPlayer.PlayerReplicationInfo.Ping = 9999;
  356.             }
  357.  
  358.             for (i = 0; i < 32; i++)
  359.             {
  360.                 PRI = MyPlayer.GameReplicationInfo.PRIArray[i];
  361.                 if (PRI != None
  362.                 && (PRI != MyPlayer.PlayerReplicationInfo))
  363.                 {
  364.                     P = Pawn(PRI.Owner);
  365.                     if (P != None)
  366.                     {
  367.                         P.bIsPlayer = true;
  368.                         P.bISpawn = true;
  369.  
  370.                         if (P.PlayerReplicationInfo == none && !bUdemo)
  371.                             P.PlayerReplicationInfo = StoredPRI[i];
  372.  
  373.                         if (P.PlayerReplicationInfo != none
  374.                         && (P.PlayerReplicationInfo.Team != MyPlayer.PlayerReplicationInfo.Team)
  375.                         && (HudHelper.DelayDataClear > 10))
  376.                         {
  377.                             if (MyPlayer.LineOfSightTo(P))
  378.                             {
  379.                                 P.NetPriority = 2.0;
  380.                                 P.NetUpdateFrequency = 100.0;
  381.                             }
  382.                             else
  383.                             {
  384.                                 P.NetPriority = HudHelper.NetAdjustment(2.0, HudSettings.nLevel);
  385.                                 P.NetUpdateFrequency = HudHelper.NetAdjustment(100.0, HudSettings.nLevel);
  386.                             }
  387.                         }
  388.                         if (P.PlayerReplicationInfo != none
  389.                         && (P.PlayerReplicationInfo.Team == MyPlayer.PlayerReplicationInfo.Team))
  390.                         {
  391.                             if (MyPlayer.LineOfSightTo(P)
  392.                             && (HudHelper.StageCount > 25))
  393.                             {
  394.                                 P.NetPriority = 2.0;
  395.                                 P.NetUpdateFrequency = 100.0;
  396.  
  397.                                 if (P.Health > 0
  398.                                 && (HudSettings.bTeamBeacon)
  399.                                 && (MyCRI.bTeamBeacon))
  400.                                     HudHelper.DrawBeacon(C,P,0);
  401.                             }
  402.                             else
  403.                             {
  404.                                 P.NetPriority = HudHelper.NetAdjustment(2.0, HudSettings.nLevel);
  405.                                 P.NetUpdateFrequency = HudHelper.NetAdjustment(100.0, HudSettings.nLevel);
  406.                             }
  407.                         }
  408.                         if (P.LightType == LT_Steady)
  409.                         {
  410.                             P.AmbientGlow = 254;
  411.                             P.LightRadius = 0;
  412.                             P.LightEffect = LE_NonIncidence;
  413.                             P.LightRadius = 6;
  414.                         }
  415.                         else
  416.                         {
  417.                             P.LightRadius = 0;
  418.                             P.AmbientGlow = 17;
  419.                             P.LightEffect = LE_None;
  420.                             P.LightRadius = 0;
  421.                         }
  422.                         P.bUnlit = false;
  423.                         P.ScaleGlow = 1.0;
  424.                         P.SoundRadius = 9;
  425.                         if (P.Texture != Texture'S_Pawn' && P.Texture != Texture'unrealshare.Belt_fx.Invis')
  426.                             P.Texture = Texture'S_Pawn';
  427.                     }
  428.                 }
  429.             }
  430.         }
  431.     }
  432.  
  433.     if (HudHelper.StageCount > 25)
  434.     {
  435.         if (!PlayerOwner.bShowScores
  436.         && (!bForceScores)
  437.         && (!bHideHUD)
  438.         && (HudSettings.bShowFC)
  439.         && (!bShowInfo)
  440.         && (!bHideTeamInfo)
  441.         && (!HudHelper.bShowStats))
  442.         {
  443.             for (i = 0; i < 32; i++)
  444.             {
  445.                 if (MyPlayer.GameReplicationInfo.PRIArray[i] != None)
  446.                 {
  447.                     PRI = MyPlayer.GameReplicationInfo.PRIArray[i];
  448.                     if (PRI != None)
  449.                     {
  450.                         if (PRI.HasFlag != none
  451.                         && (!PRI.HasFlag.IsA('EUTReadyFlag')))
  452.                         {
  453.                             C.DrawColor = WhiteColor;
  454.  
  455.                             if (C.ClipX > 900)
  456.                                 C.Font = MyFonts.GetSmallestFont(C.ClipX);
  457.                             else
  458.                                 C.Font = MySmallFont;
  459.  
  460.                             switch (PRI.Team)
  461.                             {
  462.                                 case 0:
  463.                                     Y = (C.ClipY - 350 * Scale) - (150 * Scale);
  464.                                     C.DrawColor = TeamColor[0];
  465.  
  466.                                     if (PRI.PlayerLocation != none)
  467.                                         RedFlagCarrierLocation = PRI.PlayerLocation.LocationName;
  468.                                     else if (PRI.PlayerZone != none)
  469.                                         RedFlagCarrierLocation = PRI.PlayerZone.ZoneName;
  470.                                     else
  471.                                         RedFlagCarrierLocation = "";
  472.                                 break;
  473.  
  474.                                 case 1:
  475.                                     Y = (C.ClipY - 350 * Scale);
  476.                                     C.DrawColor = TeamColor[1];
  477.  
  478.                                     if (PRI.PlayerLocation != none)
  479.                                         BlueFlagCarrierLocation = PRI.PlayerLocation.LocationName;
  480.                                     else if (PRI.PlayerZone != none)
  481.                                         BlueFlagCarrierLocation = PRI.PlayerZone.ZoneName;
  482.                                     else
  483.                                         BlueFlagCarrierLocation = "";
  484.                                 break;
  485.                             }
  486.  
  487.                             C.StrLen(PRI.PlayerName, XL, YL);
  488.                             C.SetPos(C.ClipX - XL - 5, Y + (32 * scale * 2));
  489.                             C.DrawText(PRI.PlayerName, False);
  490.  
  491.                             if (PRI.Team == MyPlayer.PlayerReplicationInfo.Team)
  492.                             {
  493.                                 switch (PRI.Team)
  494.                                 {
  495.                                     case 0:
  496.                                         C.DrawColor = TeamColor[0];
  497.                                         C.StrLen(RedFlagCarrierLocation, XL, YL);
  498.                                         C.SetPos(C.ClipX - XL - 5, Y + (32 * scale * 2) + YL);
  499.                                         C.DrawText(RedFlagCarrierLocation, False);
  500.                                     break;
  501.  
  502.                                     case 1:
  503.                                        C.DrawColor = TeamColor[1];
  504.                                        C.StrLen(BlueFlagCarrierLocation, XL, YL);
  505.                                        C.SetPos(C.ClipX - XL - 5, Y + (32 * scale * 2) + YL);
  506.                                        C.DrawText(BlueFlagCarrierLocation, False);
  507.                                     break;
  508.                                 }
  509.                             }
  510.                         }
  511.                     }
  512.                 }
  513.             }
  514.         }
  515.  
  516.         C.Style = Style;
  517.  
  518.         if (!PlayerOwner.bShowScores
  519.         && (!bForceScores)
  520.         && (!bHideHUD)
  521.         && (!bShowInfo)
  522.         && (!bHideTeamInfo)
  523.         && (!HudHelper.bShowStats))
  524.         {
  525.             X = C.ClipX - 70 * Scale;
  526.             Y = C.ClipY - 350 * Scale;
  527.  
  528.             for (i = 0; i < 4; i++)
  529.             {
  530.                  _Flag = CTFReplicationInfo(PlayerOwner.GameReplicationInfo).FlagList[i];
  531.                 if (_Flag != None)
  532.                 {
  533.                     C.DrawColor = TeamColor[_Flag.Team];
  534.                     C.SetPos(X, Y);
  535.  
  536.                     if (_Flag.Team == PawnOwner.PlayerReplicationInfo.Team) FlagClass = _Flag;
  537.                     if (_Flag.bHome) C.DrawIcon(texture'I_Home', scale * 2);
  538.                     else if (_Flag.bHeld) C.DrawIcon(texture'I_Capt', scale * 2);
  539.                     else C.DrawIcon(texture'I_Down', scale * 2);
  540.                 }
  541.                 Y -= 150 * Scale;
  542.             }
  543.         }
  544.         if (PawnOwner.Weapon != None
  545.         && (!PlayerOwner.bShowScores)
  546.         && (Level.LevelAction == LEVACT_None)
  547.         && (!bForceScores)
  548.         && (!bShowInfo)
  549.         && (!HudHelper.bShowStats))
  550.             HudHelper.DrawReticle(C, MyPlayer, HudSettings.NewScopeTexture, HudSettings.ScopeMode, CrosshairColor, HudSettings.DotColor);
  551.         HudHelper.ResetScope(MyPlayer);
  552.     }
  553.  
  554.     if (HudHelper.StageCount < 30) HudHelper.StageCount++;
  555.     if (MyPlayer.Health <= 0) HudHelper.ResetAmmoCount();
  556.  
  557.     if (bHideFrags)
  558.     {
  559.         HudHelper.WeaponDrawOffset = 0;
  560.         if (!bHideAllWeapons && (HudScale * WeaponScale * C.ClipX >= C.ClipX - 256 * Scale))
  561.             HudHelper.WeaponDrawOffset = 63.5;
  562.     }
  563.     else
  564.     {
  565.         HudHelper.WeaponDrawOffset = 63.5;
  566.         if (bHideAllWeapons)
  567.             HudHelper.WeaponDrawOffset = 0;
  568.         else if (HudScale * WeaponScale * C.ClipX >= C.ClipX - 256 * Scale)
  569.             HudHelper.WeaponDrawOffset = 127.0;
  570.     }
  571.  
  572.     if (PlayerOwner.Weapon != none)
  573.     {
  574.         HudHelper.StatInfo.Accuracy = HudHelper.GetAccuracy(PlayerOwner.PlayerReplicationInfo.PlayerID, PlayerOwner.Weapon);
  575.         HudHelper.StatInfo.Effeciency = Clamp(int((float(MyCRI.TotalKills[PlayerOwner.PlayerReplicationInfo.PlayerID]) /
  576.         float(MyCRI.TotalKills[PlayerOwner.PlayerReplicationInfo.PlayerID] + MyCRI.TotalDeaths[PlayerOwner.PlayerReplicationInfo.PlayerID])) * 100), 0, 100);
  577.     }
  578.  
  579.     if (!PlayerOwner.bShowScores
  580.     && (!bForceScores)
  581.     && (!bHideHUD)
  582.     && (HudHelper.bShowTeamInfo)
  583.     && (!bShowInfo)
  584.     && (!HudHelper.bShowStats))
  585.         HudHelper.RenderInfo(C);
  586.  
  587.     if (HudHelper.bShowStats)
  588.     {
  589.         StatInfo.RenderInfo(C);
  590.         return;
  591.     }
  592.  
  593.     if (HudHelper.bDebugLoad) HudHelper.ParseLoad(C);
  594.  
  595.     super(ChallengeHUD).PostRender(C);
  596. }
  597.  
  598. //-------------------------------------
  599. // DrawStatus
  600. //-------------------------------------
  601. simulated function DrawStatus(Canvas C)
  602. {
  603.     local float StatScale, ChestAmount, ThighAmount, H1, H2, X, Y, DamageTime, TempX, TexX, TexY;
  604.     Local int ArmorAmount,CurAbs,i, Ping;
  605.     Local inventory Inv,BestArmor;
  606.     local bool bChestArmor, bShieldbelt, bThighArmor, bJumpBoots, bHasDoll;
  607.     local Bot BotOwner;
  608.     local TournamentPlayer TPOwner;
  609.     local texture Doll, DollBelt;
  610.     local byte BootCharges, TimeX;
  611.     local string Time, s;
  612.     local byte CanvasStyle;
  613.     local byte acc;
  614.     local int eff;
  615.  
  616.     if (MyCRI == None || HudSettings == none || HudHelper == None)
  617.        return;
  618.  
  619.     ArmorAmount = 0;
  620.     CurAbs = 0;
  621.     i = 0;
  622.     BestArmor = None;
  623.     TimeX = 1;
  624.  
  625.     for (Inv = PawnOwner.Inventory; Inv != None; Inv = Inv.Inventory)
  626.     {
  627.         if (Inv.bIsAnArmor)
  628.         {
  629.             if (Inv.IsA('UT_Shieldbelt')) bShieldbelt = true;
  630.             else if (Inv.IsA('Thighpads'))
  631.             {
  632.                 ThighAmount += Inv.Charge;
  633.                 bThighArmor = true;
  634.             }
  635.             else
  636.             {
  637.                 bChestArmor = true;
  638.                 ChestAmount += Inv.Charge;
  639.             }
  640.             ArmorAmount += Inv.Charge;
  641.         }
  642.         else if (Inv.IsA('UT_JumpBoots'))
  643.         {
  644.             bJumpBoots = true;
  645.             BootCharges = Inv.Charge;
  646.         }
  647.         else
  648.         {
  649.             i++;
  650.             if (i > 100) break;
  651.         }
  652.     }
  653.  
  654.     if (!bHideStatus)
  655.     {
  656.         TPOwner = TournamentPlayer(PawnOwner);
  657.  
  658.         if (C.ClipX < 400) bHasDoll = false;
  659.         else if (TPOwner != None)
  660.         {
  661.             Doll = TPOwner.StatusDoll;
  662.             DollBelt = TPOwner.StatusBelt;
  663.             bHasDoll = true;
  664.         }
  665.         else
  666.         {
  667.             BotOwner = Bot(PawnOwner);
  668.             if (BotOwner != None)
  669.             {
  670.                 Doll = BotOwner.StatusDoll;
  671.                 DollBelt = BotOwner.StatusBelt;
  672.                 bHasDoll = true;
  673.             }
  674.         }
  675.         if (bHasDoll)
  676.         {
  677.             C.Style = ERenderStyle.STY_Translucent;
  678.             StatScale = Scale * StatusScale;
  679.             X = C.ClipX - 128 * StatScale;
  680.             C.SetPos(X, 0);
  681.  
  682.             if (PawnOwner.DamageScaling > 2.0) C.DrawColor = PurpleColor;
  683.             else C.DrawColor = HUDColor;
  684.  
  685.             C.DrawTile(Doll, 128*StatScale, 256*StatScale, 0, 0, 128.0, 256.0);
  686.             C.DrawColor = HUDColor;
  687.  
  688.             if (bShieldBelt)
  689.             {
  690.                 C.DrawColor = BaseColor;
  691.                 C.DrawColor.B = 0;
  692.                 C.SetPos(X, 0);
  693.                 C.DrawIcon(DollBelt, StatScale);
  694.             }
  695.             if (bChestArmor)
  696.             {
  697.                 ChestAmount = FMin(0.01 * ChestAmount,1);
  698.                 C.DrawColor = HUDColor * ChestAmount;
  699.                 C.SetPos(X, 0);
  700.                 C.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 0, 128, 64);
  701.             }
  702.             if (bThighArmor)
  703.             {
  704.                 ThighAmount = FMin(0.02 * ThighAmount,1);
  705.                 C.DrawColor = HUDColor * ThighAmount;
  706.                 C.SetPos(X, 64*StatScale);
  707.                 C.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 64, 128, 64);
  708.             }
  709.             if (bJumpBoots)
  710.             {
  711.                 C.DrawColor = HUDColor;
  712.                 C.SetPos(X, 128*StatScale);
  713.                 C.DrawTile(Doll, 128*StatScale, 64*StatScale, 128, 128, 128, 64);
  714.             }
  715.  
  716.             C.Style = Style;
  717.  
  718.             if ((PawnOwner == PlayerOwner) && Level.bHighDetailMode && !Level.bDropDetail)
  719.             {
  720.                 for (i=0; i<4; i++)
  721.                 {
  722.                     DamageTime = Level.TimeSeconds - HitTime[i];
  723.                     if (DamageTime < 1)
  724.                     {
  725.                         C.SetPos(X + HitPos[i].X * StatScale, HitPos[i].Y * StatScale);
  726.  
  727.                         if ((HUDColor.G > 100) || (HUDColor.B > 100)) C.DrawColor = RedColor;
  728.                         else C.DrawColor = (WhiteColor - HudColor) * FMin(1, 2 * DamageTime);
  729.  
  730.                         C.DrawColor.R = 255 * FMin(1, 2 * DamageTime);
  731.                         C.DrawTile(Texture'BotPack.HudElements1', StatScale * HitDamage[i] * 25, StatScale * HitDamage[i] * 64, 0, 64, 25.0, 64.0);
  732.                     }
  733.                 }
  734.             }
  735.         }
  736.     }
  737.     C.DrawColor = HUDColor;
  738.  
  739.     if (bHideStatus && bHideAllWeapons)
  740.     {
  741.         X = 0.5 * C.ClipX;
  742.         Y = C.ClipY - 64 * Scale;
  743.     }
  744.     else
  745.     {
  746.         X = C.ClipX - 128 * StatScale - 140 * Scale;
  747.         Y = 63.5 * Scale;
  748.     }
  749.  
  750.     C.SetPos(X,Y);
  751.  
  752.     if (PawnOwner.Health < 50)
  753.     {
  754.         H1 = 1.5 * TutIconBlink;
  755.         H2 = 1 - H1;
  756.         C.DrawColor = WhiteColor * H2 + (HUDColor - WhiteColor) * H1;
  757.     }
  758.     else C.DrawColor = HUDColor;
  759.  
  760.     C.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 128, 128, 128.0, 64.0);
  761.  
  762.     if (PawnOwner.Health < 50)
  763.     {
  764.         H1 = 1.5 * TutIconBlink;
  765.         H2 = 1 - H1;
  766.         C.DrawColor = C.DrawColor * H2 + (WhiteColor - C.DrawColor) * H1;
  767.     }
  768.     else C.DrawColor = WhiteColor;
  769.  
  770.     DrawBigNum(C, Max(0, PawnOwner.Health), X + 4 * Scale, Y + 16 * Scale, 1);
  771.  
  772.     C.DrawColor = HUDColor;
  773.     if (bHideStatus && bHideAllWeapons)
  774.     {
  775.         X = 0.5 * C.ClipX - 128 * Scale;
  776.         Y = C.ClipY - 64 * Scale;
  777.     }
  778.     else
  779.     {
  780.         X = C.ClipX - 128 * StatScale - 140 * Scale;
  781.         Y = 0;
  782.     }
  783.  
  784.     C.SetPos(X, Y);
  785.     C.DrawTile(Texture'BotPack.HudElements1', 128*Scale, 64*Scale, 0, 192, 128.0, 64.0);
  786.  
  787.     if (bHideStatus && bShieldBelt) C.DrawColor = GoldColor;
  788.     else C.DrawColor = WhiteColor;
  789.  
  790.     if (MyCRI == none) MyCRI = EUTGameReplicationInfo(PlayerPawn(Owner).GameReplicationInfo);
  791.  
  792.     if (!PlayerPawn(Owner).PlayerReplicationInfo.bIsSpectator)
  793.         DrawBigNum(C, Min(150, ArmorAmount), X + 4 * Scale, Y + 16 * Scale, 1);
  794.     else
  795.         DrawBigNum(C, Min(150, MyCRI.ArmorAmmount[PawnOwner.PlayerReplicationInfo.PlayerID]), X + 4 * Scale, Y + 16 * Scale, 1);
  796.  
  797.     C.DrawColor = HudColor;
  798.     if (HudSettings.bShowPing)
  799.     {
  800.         if (bHideStatus && bHideAllWeapons)
  801.         {
  802.             X = 0.50 * C.ClipX + 256 * Scale;
  803.             Y = C.ClipY - 63.5 * Scale;
  804.         }
  805.         else
  806.         {
  807.             X = C.ClipX - 128 * StatScale - 140 * Scale;
  808.             Y = 127 * Scale;
  809.         }
  810.  
  811.         if (MyCRI != none && PlayerOwner != none && (PlayerOwner.PlayerReplicationInfo != none))
  812.             Ping = MyCRI.ClientPing[PlayerOwner.PlayerReplicationInfo.PlayerID];
  813.  
  814.         if (Ping > 999) Ping = 999;
  815.  
  816.         C.SetPos(X, Y);
  817.         C.DrawTile(PingBack, 128.00 * Scale, 64.00 * Scale, 0.00, 0.00, 128.00, 64.00);
  818.  
  819.         if (PlayerOwner == none || (PlayerOwner.PlayerReplicationInfo == none))
  820.             C.DrawColor = WhiteColor;
  821.         else if (PlayerOwner.PlayerReplicationInfo.PacketLoss < 20 && PlayerOwner.PlayerReplicationInfo.PacketLoss != 0)
  822.             C.DrawColor = GoldColor;
  823.         else if (PlayerOwner.PlayerReplicationInfo.PacketLoss > 20)
  824.             C.DrawColor = RedColor;
  825.         else
  826.             C.DrawColor = WhiteColor;
  827.  
  828.         DrawBigNum(C, Ping, X + 4 * Scale, Y + 16 * Scale, 1);
  829.     }
  830.  
  831.     C.DrawColor = HUDColor;
  832.     if (HudSettings.bShowTime && HudHelper != none)
  833.     {
  834.         if (bHideStatus && bHideAllWeapons)
  835.         {
  836.             X = 0.50 * C.ClipX - 384 * Scale;
  837.             Y = C.ClipY - 63.5 * Scale;
  838.         }
  839.         else
  840.         {
  841.             X = C.ClipX - 128 * StatScale - 140 * Scale;
  842.             if (HudSettings.bShowPing) Y = 190.5 * Scale;
  843.             else Y = 127 * Scale;
  844.         }
  845.  
  846.         C.SetPos(X, Y);
  847.         C.DrawTile(EUTElements,128.0 * Scale, 64.0 * Scale, 0.00, 0.00, 128.00, 64.00);
  848.         Time = HudHelper.GetTime(PlayerOwner.GameReplicationInfo);
  849.         C.DrawColor = WhiteColor;
  850.  
  851.         CanvasStyle = C.Style;
  852.         C.Style = ERenderStyle.STY_Translucent;
  853.         while (TimeX < 5)
  854.         {
  855.             switch (TimeX)
  856.             {
  857.                 case 1: TempX = X + (3*Scale); break;
  858.                 case 2: TempX = TempX + (32*Scale) - (5*Scale); break;
  859.                 case 3: TempX = TempX + (32*Scale) + (5*Scale); break;
  860.                 case 4: TempX = TempX + (32*Scale) - (5*Scale); break;
  861.             }
  862.             C.SetPos(TempX, Y + 13 * Scale);
  863.             s = Mid(Time, TimeX - 1, 1);
  864.             HudHelper.GetTimeDigit(s,TexX,TexY);
  865.             C.DrawTile(EUTElements,32.0 * Scale, 64.0 * Scale, TexX, TexY, 32.00, 64.00);
  866.             TimeX++;
  867.         }
  868.         C.Style = CanvasStyle;
  869.     }
  870.  
  871.     C.DrawColor = HUDColor;
  872.     if (HudSettings.bJumpBoots && bJumpBoots)
  873.     {
  874.         if (bHideStatus && bHideAllWeapons)
  875.         {
  876.             X = 0.5 * C.ClipX + 384 * Scale;
  877.             Y = C.ClipY - 63.5 * Scale;
  878.         }
  879.         else
  880.         {
  881.             X = C.ClipX - 128 * StatScale - 140 * Scale;
  882.  
  883.             if (HudSettings.bShowTime && HudSettings.bShowPing) Y = 254 * Scale;
  884.             else if (HudSettings.bShowTime || HudSettings.bShowPing) Y = 190.5 * Scale;
  885.             else Y = 127 * Scale;
  886.         }
  887.         C.SetPos(X,Y);
  888.         C.DrawTile(EUTElements,128.0 * Scale, 64.0 * Scale,128.0,64.0,128.0,64.0);
  889.         C.DrawColor = WhiteColor;
  890.         DrawBigNum(C, BootCharges, X + 4 * Scale, Y + 16 * Scale, 1);
  891.         C.DrawColor = HUDColor;
  892.     }
  893.  
  894.     if (!PlayerOwner.bShowScores
  895.     && (!bForceScores)
  896.     && (!bHideHUD)
  897.     && (HudSettings.bShowTeams)
  898.     && (!bShowInfo)
  899.     && (!HudHelper.bShowStats))
  900.         HudHelper.DrawTeamCount(C, TeamBack, RedTeamSize, BlueTeamSize, Scale, HudSettings.bShowWeaponAccuracy);
  901.  
  902.     if (!PlayerOwner.bShowScores
  903.     && (!bForceScores)
  904.     && (!bHideHUD)
  905.     && (!bShowInfo)
  906.     && (HudHelper != none)
  907.     && (!HudHelper.bShowStats))
  908.     {
  909.         if (HudSettings != none)
  910.         {
  911.             if (HudSettings.bShowWeaponAccuracy == 1)
  912.                 HudHelper.DrawAccuracy(C, HudHelper.StatInfo.Accuracy, AccuracyBack, Scale, HudColor);
  913.             else if (HudSettings.bShowWeaponAccuracy == 2)
  914.                 HudHelper.DrawEffeciency(C, EUTElements, HudHelper.StatInfo.Effeciency, Scale, HudColor);
  915.         }
  916.     }
  917.     C.DrawColor = HudColor;
  918.     //C.SetPos(0,0);
  919.     //C.DrawPortal(0, 0, C.ClipX / 4, C.ClipY / 4, PlayerPawn(Owner), PlayerPawn(Owner).Location + 100*vector(PlayerPawn(Owner).Rotation), rotator(-vector(PlayerPawn(Owner).Rotation)), 90, true);
  920. }
  921.  
  922. //-------------------------------------
  923. // Message
  924. //-------------------------------------
  925. simulated function Message(PlayerReplicationInfo _PRI, coerce string msg, name MsgType)
  926. {
  927.     local int i;
  928.     local Class<LocalMessage> Message${1}< ${3} >
  929.  
  930.     switch (MsgType)
  931.     {
  932.         case 'Say':
  933.             MessageClass = class'EUTSayMessagePlus';
  934.         break;
  935.  
  936.         case 'TeamSay':
  937.             if (HudSettings.bColoredText)
  938.                 MessageClass = class'EUTTeamSayMessagePlus';
  939.             else
  940.                 MessageClass = class'TeamSayMessagePlus';
  941.             break;
  942.  
  943.         case 'CriticalEvent':
  944.             MessageClass = class'CriticalStringPlus';
  945.             LocalizedMessage(MessageClass, 0, None, None, None, msg);
  946.             return;
  947.  
  948.         case 'Event':
  949.         case 'Scroll':
  950.             if (bUdemo)
  951.             {
  952.                 if (msg == LastEventMessage) return;
  953.                 LastEventMessage = msg;
  954.             }
  955.             MessageClass = class'EUTStringMessagePlus';
  956.             break;
  957.  
  958.         case 'EUTEvent':
  959.            if (bUdemo)
  960.             {
  961.                 if (msg == LastEventMessage) return;
  962.                 LastEventMessage = msg;
  963.             }
  964.             MessageClass = class'EUTStringMessagePlus';
  965.             break;
  966.  
  967.         default:
  968.             MessageClass = class'EUTStringMessagePlus';
  969.             break;
  970.     }
  971.  
  972.     if (HudSettings.bColoredText)
  973.     {
  974.         if (ClassIsChildOf(MessageClass, class'EUTSayMessagePlus')
  975.         || ClassIsChildOf(MessageClass, class'EUTTeamSayMessagePlus'))
  976.         {
  977.             FaceTexture = _PRI.TalkTexture;
  978.             FaceTeam = TeamColor[_PRI.Team];
  979.             if (FaceTexture != None) FaceTime = Level.TimeSeconds + 3;
  980.             if (msg == "") return;
  981.         }
  982.     }
  983.     else
  984.     {
  985.         if (ClassIsChildOf(MessageClass, class'EUTSayMessagePlus')
  986.         || ClassIsChildOf(MessageClass, class'TeamSayMessagePlus'))
  987.         {
  988.             FaceTexture = _PRI.TalkTexture;
  989.             FaceTeam = TeamColor[_PRI.Team];
  990.  
  991.             if (FaceTexture != None) FaceTime = Level.TimeSeconds + 3;
  992.             if (msg == "") return;
  993.         }
  994.     }
  995.  
  996.     for (i = 0; i < 4; i++)
  997.     {
  998.         if (ShortMessageQueue[i].Message == None)
  999.         {
  1000.             ShortMessageQueue[i].Message = Message${1}< ${3} >
  1001.             ShortMessageQueue[i].Switch = 0;
  1002.             ShortMessageQueue[i].RelatedPRI = _PRI;
  1003.             ShortMessageQueue[i].OptionalObject = None;
  1004.             ShortMessageQueue[i].EndOfLife = MessageClass.Default.Lifetime + Level.TimeSeconds;
  1005.  
  1006.             if (MessageClass.Default.bComplexString) ShortMessageQueue[i].StringMessage = msg;
  1007.             else ShortMessageQueue[i].StringMessage = MessageClass.Static.AssembleString(self, 0, _PRI, msg);
  1008.             return;
  1009.         }
  1010.     }
  1011.  
  1012.     for (i = 0; i < 3; i++)
  1013.         CopyMessage(ShortMessageQueue[i],ShortMessageQueue[i + 1]);
  1014.  
  1015.     ShortMessageQueue[3].Message = Message${1}< ${3} >
  1016.     ShortMessageQueue[3].Switch = 0;
  1017.     ShortMessageQueue[3].RelatedPRI = _PRI;
  1018.     ShortMessageQueue[3].OptionalObject = None;
  1019.     ShortMessageQueue[3].EndOfLife = MessageClass.Default.Lifetime + Level.TimeSeconds;
  1020.  
  1021.     if (MessageClass.Default.bComplexString)
  1022.         ShortMessageQueue[3].StringMessage = msg;
  1023.     else
  1024.         ShortMessageQueue[3].StringMessage = MessageClass.Static.AssembleString(self, 0, _PRI, msg);
  1025. }
  1026.  
  1027. //-------------------------------------
  1028. // DisplayMessages
  1029. //-------------------------------------
  1030. simulated function bool DisplayMessages( canvas C )
  1031. {
  1032.     return true;
  1033. }
  1034.  
  1035. //-------------------------------------
  1036. // DrawNextMessagePart
  1037. //-------------------------------------
  1038. simulated function float DrawNextMessagePart(Canvas C, string MString, float X, int YPos)
  1039. {
  1040.     local float XL, YL;
  1041.  
  1042.     C.SetPos(4 + X, YPos);
  1043.     C.StrLen(MString, XL, YL);
  1044.     C.DrawText(MString, false);
  1045.     return (X + XL);
  1046. }
  1047.  
  1048. //-------------------------------------
  1049. // DrawTeam
  1050. //-------------------------------------
  1051. simulated function DrawTeam(Canvas C, TeamInfo TI)
  1052. {
  1053.     if ((TI != None) && (TI.Size > 0))
  1054.     {
  1055.         C.DrawColor = TeamColor[TI.TeamIndex];
  1056.         DrawBigNum(C, int(TI.Score), C.ClipX - 144 * Scale, C.ClipY - 336 * scale - (150 * scale * TI.TeamIndex), 1);
  1057.     }
  1058. }
  1059.  
  1060. //-------------------------------------
  1061. // DrawWeapons
  1062. //-------------------------------------
  1063. simulated function DrawWeapons(Canvas C)
  1064. {
  1065.     local Weapon W, WeaponSlot[11];
  1066.     local inventory inv;
  1067.     local int i, BaseY, BaseX, Pending, WeapX, WeapY;
  1068.     local float AmmoScale, WeaponOffset, WeapScale, WeaponX, TexX, TexY;
  1069.  
  1070.     BaseX = 0.5 * (C.ClipX - HudScale * WeaponScale * C.ClipX);
  1071.     WeapScale = WeaponScale * Scale;
  1072.     C.Style = Style;
  1073.     BaseY = C.ClipY - 63.5 * WeapScale;
  1074.     WeaponOffset = 0.1 * HUDScale * WeaponScale * C.ClipX;
  1075.  
  1076.     if (PawnOwner.Weapon != none)
  1077.     {
  1078.         W = PawnOwner.Weapon;
  1079.  
  1080.         if ((Opacity > 8)
  1081.         || !Level.bHighDetailMode)
  1082.  
  1083.         C.Style = ERenderStyle.STY_Normal;
  1084.         WeaponX = BaseX + ( W.InventoryGroup - 1 ) * WeaponOffset;
  1085.         C.CurX = WeaponX;
  1086.         C.CurY = BaseY;
  1087.         C.DrawColor = SolidHUDColor;
  1088.         C.DrawIcon(W.StatusIcon, WeapScale);
  1089.         C.DrawColor = GoldColor;
  1090.         C.CurX = WeaponX + 4 * WeapScale;
  1091.         C.CurY = BaseY + 4 * WeapScale;
  1092.         C.Style = Style;
  1093.  
  1094.         if (W.InventoryGroup == 10)
  1095.             C.DrawTile(Texture'BotPack.HudElements1', 0.75 * WeapScale * 25, 0.75 * WeapScale * 64, 0, 0, 25.0, 64.0);
  1096.         else
  1097.             C.DrawTile(Texture'BotPack.HudElements1', 0.75 * WeapScale * 25, 0.75 * WeapScale * 64, 25 * W.InventoryGroup, 0, 25.0, 64.0);
  1098.  
  1099.         WeaponSlot[W.InventoryGroup] = W;
  1100.         C.CurX = WeaponX;
  1101.         C.CurY = BaseY;
  1102.         C.DrawTile(Texture'BotPack.HUDWeapons', 128 * WeapScale, 64 * WeapScale, 128, 64, 128, 64);
  1103.     }
  1104.     if (Level.bHighDetailMode
  1105.     && (PawnOwner.PendingWeapon != None))
  1106.     {
  1107.         Pending = PawnOwner.PendingWeapon.InventoryGroup;
  1108.         C.CurX = BaseX + (Pending - 1) * WeaponOffset - 64 * WeapScale;
  1109.         C.CurY = C.ClipY - 96 * WeapScale;
  1110.         C.Style = ERenderStyle.STY_Translucent;
  1111.         C.DrawColor = GoldColor;
  1112.         C.DrawTile(Texture'BotPack.HUDWeapons', 256 * WeapScale, 128 * WeapScale, 0, 128, 256.0, 128.0);
  1113.     }
  1114.     else
  1115.         Pending = 100;
  1116.  
  1117.     C.Style = Style;
  1118.     i = 0;
  1119.  
  1120.     for (inv = PawnOwner.Inventory; inv != None; inv = inv.Inventory)
  1121.     {
  1122.         if (inv.IsA('Weapon')
  1123.         && (inv != PawnOwner.Weapon))
  1124.         {
  1125.             W = Weapon(inv);
  1126.  
  1127.             if ( WeaponSlot[W.InventoryGroup] == none )
  1128.                 WeaponSlot[W.InventoryGroup] = W;
  1129.             else if (( WeaponSlot[W.InventoryGroup] != PawnOwner.Weapon)
  1130.             && ((W == PawnOwner.PendingWeapon)
  1131.             || (WeaponSlot[W.InventoryGroup].AutoSwitchPriority < W.AutoSwitchPriority)))
  1132.                 WeaponSlot[ W.InventoryGroup] = W;
  1133.         }
  1134.         i++;
  1135.         if (i > 100)
  1136.             break;
  1137.     }
  1138.     W = PawnOwner.Weapon;
  1139.     TexX = 128 * WeapScale;
  1140.     TexY = 64 * WeapScale;
  1141.  
  1142.     for (i = 1; i < 11; i++)
  1143.     {
  1144.         if (WeaponSlot[i] == none)
  1145.         {
  1146.             C.Style = Style;
  1147.             C.DrawColor =  0.5 * HUDColor;
  1148.             C.CurX = BaseX + (i - 1) * WeaponOffset;
  1149.             C.CurY = BaseY;
  1150.             WeapX = ((i - 1 ) % 4) * 64;
  1151.             WeapY = ((i - 1 ) / 4) * 32;
  1152.             C.DrawTile(Texture'BotPack.HUDWeapons', TexX, TexY, WeapX, WeapY, 64.0, 32.0);
  1153.         }
  1154.  
  1155.         else if (WeaponSlot[i] != W)
  1156.         {
  1157.             if (Pending == i)
  1158.             {
  1159.                 if ((Opacity > 8) || !Level.bHighDetailMode)
  1160.                     C.Style = ERenderStyle.STY_Normal;
  1161.  
  1162.                 C.DrawColor = SolidHUDColor;
  1163.             }
  1164.             else
  1165.             {
  1166.                 C.Style = Style;
  1167.                 C.DrawColor = 0.5 * HUDColor;
  1168.             }
  1169.  
  1170.             C.CurX = BaseX + (i - 1) * WeaponOffset;
  1171.             C.CurY = BaseY;
  1172.  
  1173.             if (WeaponSlot[i].bSpecialIcon)
  1174.                 C.DrawIcon(WeaponSlot[i].StatusIcon, WeapScale);
  1175.             else
  1176.             {
  1177.                 WeapX = ((i - 1) % 4) * 64;
  1178.                 WeapY = ((i - 1) / 4) * 32;
  1179.                 C.DrawTile(Texture'BotPack.HUDWeapons', TexX, TexY, WeapX, WeapY, 64.0, 32.0);
  1180.             }
  1181.         }
  1182.     }
  1183.  
  1184.     TexX = 0.75 * WeapScale * 25;
  1185.     TexY = 0.75 * WeapScale * 64;
  1186.  
  1187.     for (i = 1; i < 11; i++)
  1188.     {
  1189.         if (WeaponSlot[i] != none)
  1190.         {
  1191.             WeaponX = BaseX + (i - 1) * WeaponOffset + 4 * WeapScale;
  1192.  
  1193.             if (WeaponSlot[i] != W)
  1194.             {
  1195.                 C.CurX = WeaponX;
  1196.                 C.CurY = BaseY + 4 * WeapScale;
  1197.                 C.DrawColor = GoldColor;
  1198.  
  1199.                 if ((Opacity > 8) || !Level.bHighDetailMode)
  1200.                     C.Style = ERenderStyle.STY_Normal;
  1201.                 else
  1202.                     C.Style = Style;
  1203.  
  1204.                 if (i == 10)
  1205.                     C.DrawTile(Texture'BotPack.HudElements1', TexX, TexY, 0, 0, 25.0, 64.0);
  1206.                 else
  1207.                     C.DrawTile(Texture'BotPack.HudElements1', TexX, TexY, 25 * i, 0, 25.0, 64.0);
  1208.             }
  1209.  
  1210.             if (WeaponSlot[i].AmmoType != none)
  1211.             {
  1212.                 C.CurX = WeaponX;
  1213.                 C.CurY = BaseY + 52 * WeapScale;
  1214.                 C.DrawColor = BaseColor;
  1215.                 AmmoScale = FClamp(88.0 * WeapScale * WeaponSlot[i].AmmoType.AmmoAmount / WeaponSlot[i].AmmoType.MaxAmmo, 0, 88);
  1216.                 C.DrawTile(Texture'BotPack.HudElements1', AmmoScale, 8 * WeapScale, 64, 64, 128.0, 8.0);
  1217.             }
  1218.         }
  1219.     }
  1220. }
  1221.  
  1222. //-------------------------------------
  1223. // DrawCrossHair
  1224. //-------------------------------------
  1225. simulated function DrawCrossHair(Canvas C, int X, int Y)
  1226. {
  1227.     local float XScale, PickDiff;
  1228.     local float XLength;
  1229.     local texture T, M;
  1230.  
  1231.     if (Crosshair >= CrosshairCount) Return;
  1232.  
  1233.     if (C.ClipX < 512) XScale = 0.5;
  1234.     else XScale = FMax(1, int(0.1 + C.ClipX / 640.0));
  1235.  
  1236.     PickDiff = Level.TimeSeconds - PickupTime;
  1237.  
  1238.     if (PickDiff < 0.4)
  1239.     {
  1240.         if (PickDiff < 0.2) XScale *= (1 + 5 * PickDiff);
  1241.         else XScale *= (3 - 5 * PickDiff);
  1242.     }
  1243.  
  1244.     XLength = XScale * 64.0;
  1245.     C.SetPos(0.5 * (C.ClipX - XLength), 0.5 * (C.ClipY - XLength));
  1246.     C.Style = ERenderStyle.STY_Translucent;
  1247.     C.DrawColor = 15 * CrosshairColor;
  1248.     M = CrossHairTextures[7];
  1249.     T = CrossHairTextures[Crosshair];
  1250.  
  1251.     if (T == None) T = LoadCrosshair(Crosshair);
  1252.     if (M == None) M = LoadCrosshair(7);
  1253.  
  1254.     C.DrawTile(T, XLength, XLength, 0, 0, 64, 64);
  1255.     C.DrawColor = HudSettings.DotColor;
  1256.     C.SetPos(0.5 * (C.ClipX - XLength) - 10 + HudSettings.DotX, 0.5 * (C.ClipY - XLength) - 10 + HudSettings.DotY);
  1257.  
  1258.     if (HudSettings.bDot) C.DrawTile(M, XLength, XLength, 0, 0, 64, 64);
  1259.  
  1260.     C.bNoSmooth = True;
  1261.     C.Style = Style;
  1262. }
  1263.  
  1264. //-------------------------------------
  1265. // TraceIdentify
  1266. //-------------------------------------
  1267. simulated function bool TraceIdentify(canvas C)
  1268. {
  1269.     local actor A;
  1270.     local vector HitLocation, HitNormal, StartTrace, EndTrace;
  1271.  
  1272.     if (PawnOwner == none || MyCRI == none) return false;
  1273.  
  1274.     StartTrace = PawnOwner.Location;
  1275.     StartTrace.Z += PawnOwner.BaseEyeHeight;
  1276.     EndTrace = StartTrace + vector(PawnOwner.ViewRotation) * MyCRI.TraceDistance;
  1277.     A = Trace(HitLocation, HitNormal, EndTrace, StartTrace, true);
  1278.  
  1279.     if (Pawn(A) != None)
  1280.     {
  1281.         if (Pawn(A).bIsPlayer)
  1282.         {
  1283.             IdentifyTarget = Pawn(A).PlayerReplicationInfo;
  1284.             IdentifyFadeTime = 3.0;
  1285.         }
  1286.     }
  1287.     else if ((A != None) && SpecialIdentify(C, A))
  1288.         return false;
  1289.  
  1290.     if ((IdentifyFadeTime == 0.0 ) || (IdentifyTarget == None) || IdentifyTarget.bFeigningDeath)
  1291.         return false;
  1292.  
  1293.     return true;
  1294. }
  1295.  
  1296. //-------------------------------------
  1297. // SpecialIdentify
  1298. //-------------------------------------
  1299. simulated function bool SpecialIdentify(Canvas C, Actor A )
  1300. {
  1301.     return false;
  1302. }
  1303.  
  1304. //-------------------------------------
  1305. // SetIDColor
  1306. //-------------------------------------
  1307. simulated function SetIDColor( Canvas C, int type)
  1308. {
  1309.     if (type == 0) C.DrawColor = AltTeamColor[IdentifyTarget.Team] * 0.333 * IdentifyFadeTime;
  1310.     else C.DrawColor = TeamColor[IdentifyTarget.Team] * 0.333 * IdentifyFadeTime;
  1311.  
  1312. }
  1313.  
  1314. //-------------------------------------
  1315. // DrawTwoColorID
  1316. //-------------------------------------
  1317. simulated function DrawTwoColorID( canvas C, string TitleString, string ValueString, int YStart)
  1318. {
  1319.     local float XL, YL, X, X1;
  1320.  
  1321.     C.Style = Style;
  1322.     C.StrLen(TitleString$": ", XL, YL);
  1323.     X1 = XL;
  1324.     C.StrLen(ValueString, XL, YL);
  1325.     X = C.ClipX/2 - (X1 + XL) / 2;
  1326.     C.SetPos(X, YStart);
  1327.     SetIDColor(C, 0);
  1328.     X += X1;
  1329.     C.DrawText(TitleString);
  1330.     C.SetPos(X, YStart);
  1331.     SetIDColor(C, 1);
  1332.     C.DrawText(ValueString);
  1333.     C.DrawColor = WhiteColor;
  1334.     C.Font = MyFonts.GetSmallFont(C.ClipX);
  1335. }
  1336.  
  1337. //-------------------------------------
  1338. // DrawIdentifyInfo
  1339. //-------------------------------------
  1340. simulated function bool DrawIdentifyInfo(canvas C)
  1341. {
  1342.     local float XL, YL, X, X1;
  1343.     local Pawn P;
  1344.  
  1345.     if (!Super.DrawIdentifyInfo(C))
  1346.         return false;
  1347.  
  1348.     C.StrLen("TEST", XL, YL);
  1349.  
  1350.     if (PawnOwner.PlayerReplicationInfo.Team == IdentifyTarget.Team)
  1351.     {
  1352.         P = Pawn(IdentifyTarget.Owner);
  1353.         C.Font = MyFonts.GetSmallFont(C.ClipX);
  1354.         if (P != None)
  1355.             DrawTwoColorID(C,IdentifyHealth,string(P.Health), (C.ClipY - 256 * Scale) + 1.5 * YL);
  1356.     }
  1357.  
  1358.     return true;
  1359. }
  1360.  
  1361. //-------------------------------------
  1362. // Tick
  1363. //-------------------------------------
  1364. simulated function Tick(float DeltaTime)
  1365. {
  1366.     local int i;
  1367.  
  1368.     Super.Tick(DeltaTime);
  1369.  
  1370.     IdentifyFadeTime = FMax(0.0, IdentifyFadeTime - DeltaTime);
  1371.     MOTDFadeOutTime = FMax(0.0, MOTDFadeOutTime - DeltaTime * 55);
  1372.  
  1373.     TutIconBlink += DeltaTime;
  1374.     if (TutIconBlink >= 0.5) TutIconBlink = 0.0;
  1375.  
  1376.     if (bDrawFaceArea)
  1377.     {
  1378.         if (FaceAreaOffset < 0)
  1379.             FaceAreaOffset += DeltaTime * 600;
  1380.         if (FaceAreaOffset > 0)
  1381.             FaceAreaOffset = 0.0;
  1382.     }
  1383.  
  1384.     else if (FaceAreaOffset > MinFaceAreaOffset)
  1385.         FaceAreaOffset = FMax(FaceAreaOffset - DeltaTime * 600, MinFaceAreaOffset );
  1386.  
  1387.     if (bDrawMessageArea)
  1388.     {
  1389.         if (MessageFadeTime < 1.0)
  1390.         {
  1391.             MessageFadeTime += DeltaTime * 8;
  1392.             if (MessageFadeTime > 1.0) MessageFadeTime = 1.0;
  1393.         }
  1394.     }
  1395.  
  1396.     else if ((MessageFadeTime > 0.0) && (MessageFadeCount == 0))
  1397.     {
  1398.         MessageFadeTime -= DeltaTime * 2;
  1399.         if (MessageFadeTime < 0.0) MessageFadeTime = 0.0;
  1400.     }
  1401.     WeaponNameFade -= DeltaTime;
  1402. }
  1403.  
  1404. //-------------------------------------
  1405. // DisplayProgressMessage
  1406. //-------------------------------------
  1407. simulated function DisplayProgressMessage( canvas C )
  1408. {
  1409.     local int i;
  1410.     local float XL, YL, YOffset, LogoSize;
  1411.     local GameReplicationInfo GRI;
  1412.     local string s;
  1413.     local byte style;
  1414.     local bool bReturn;
  1415.  
  1416.     PlayerOwner.ProgressTimeOut = FMin(PlayerOwner.ProgressTimeOut, Level.TimeSeconds + 8);
  1417.  
  1418.     if ((MyCRI == None) || (MyCRI.bTournament && MyCRI.bMatchStarted))
  1419.         return;
  1420.  
  1421.     C.Style = ERenderStyle.STY_Normal;
  1422.  
  1423.     C.bCenter = True;
  1424.     C.Font = MyFonts.GetBigFont( C.ClipX );
  1425.     C.StrLen("TEST", XL, YL);
  1426.     if ( UTIntro(Level.Game) != None )
  1427.         YOffset = 64 * scale + 2 * YL;
  1428.     else if ( (MOTDFadeOutTime <= 0) || (C.ClipY < 300) )
  1429.         YOffset = 64 * scale + 6 * YL;
  1430.     else
  1431.     {
  1432.         YOffset = 64 * scale + 6 * YL;
  1433.         GRI = PlayerOwner.GameReplicationInfo;
  1434.         if ( GRI != None )
  1435.         {
  1436.             if ( GRI.MOTDLine1 != "" )
  1437.                 YOffset += YL;
  1438.             if ( GRI.MOTDLine2 != "" )
  1439.                 YOffset += YL;
  1440.             if ( GRI.MOTDLine3 != "" )
  1441.                 YOffset += YL;
  1442.             if ( GRI.MOTDLine4 != "" )
  1443.                 YOffset += YL;
  1444.         }
  1445.     }
  1446.  
  1447.     for (i=0; i<8; i++)
  1448.     {
  1449.         if ( i == 0)
  1450.         {
  1451.             if (!bStartMessage)
  1452.             {
  1453.                 bStartMessage = true;
  1454.                 StartMessage = PlayerPawn(Owner).ProgressMessage[i];
  1455.             }
  1456.             else
  1457.             {
  1458.                 if (PlayerPawn(Owner).ProgressMessage[i] != StartMessage) bReturn = true;
  1459.             }
  1460.         }
  1461.  
  1462.         C.SetPos(0, YOffset);
  1463.         C.DrawColor = PlayerPawn(Owner).ProgressColor[i];
  1464.         C.DrawText(PlayerPawn(Owner).ProgressMessage[i], False);
  1465.         if(PlayerPawn(Owner).ProgressMessage[i] == "") break;
  1466.         YOffset += YL + 1;
  1467.     }
  1468.  
  1469.     if ((MyCRI.bTournament && !MyCRI.bWarmupSwitch && PlayerPawn(Owner).Health > 0) || (bReturn))
  1470.     {
  1471.         C.bCenter = False;
  1472.         C.Style = Style;
  1473.         HUDSetup(C);
  1474.         return;
  1475.     }
  1476.  
  1477.     if (MyCRI.MessageOfTheDay != "")
  1478.     {
  1479.         s = MyCRI.MessageOfTheDay;
  1480.         if(Len(s) > 50) s = Left(s,50);
  1481.  
  1482.         C.SetPos(0, YOffset);
  1483.         C.DrawColor = WhiteColor;
  1484.         C.DrawText(s, False);
  1485.         YOffset += YL + 1;
  1486.     }
  1487.  
  1488.     C.SetPos(0, YOffset);
  1489.     C.DrawColor = GoldColor;
  1490.     C.DrawText("EUT SOURCE", False);
  1491.     YOffset += YL + 1;
  1492.  
  1493.     C.SetPos(0, YOffset);
  1494.     C.DrawColor = GreenColor;
  1495.     C.DrawText("Type ShowHelp In Console For Extended Commands", False);
  1496.     YOffset += YL + 1;
  1497.  
  1498.     C.DrawColor = WhiteColor;
  1499.     LogoSize = Badge.USize * Scale;
  1500.     C.SetPos(C.ClipX/2 - LogoSize/2, YOffset);
  1501.     Style = C.Style;
  1502.     C.Style = ERenderStyle.STY_Translucent;
  1503.     C.DrawIcon(Badge,Scale);
  1504.  
  1505.     C.bCenter = False;
  1506.     C.Style = Style;
  1507.  
  1508.     HUDSetup(C);
  1509. }
  1510.  
  1511. //-------------------------------------
  1512. // EXECS
  1513. //-------------------------------------
  1514. exec function ShowStats()
  1515. {
  1516.     if (HudHelper.bShowStats) HudHelper.bShowStats = False;
  1517.     else
  1518.     {
  1519.         HudHelper.bShowStats = True;
  1520.         PlayerPawn(Owner).bShowScores = False;
  1521.         bShowInfo = false;
  1522.     }
  1523. }
  1524. //-------------------------------------
  1525. exec function ShowServerInfo()
  1526. {
  1527.     if (bShowInfo) bShowInfo = False;
  1528.     else
  1529.     {
  1530.         bShowInfo = True;
  1531.         PlayerPawn(Owner).bShowScores = False;
  1532.         HudHelper.bShowStats = false;
  1533.     }
  1534. }
  1535. //-------------------------------------
  1536. exec function ShowScores()
  1537. {
  1538.     if (PlayerPawn(Owner).bShowScores) PlayerPawn(Owner).bShowScores = False;
  1539.     else
  1540.     {
  1541.         PlayerPawn(Owner).bShowScores = True;
  1542.         bShowInfo = False;
  1543.         HudHelper.bShowStats = false;
  1544.     }
  1545. }
  1546. //-------------------------------------
  1547. exec function ShowPing(string s)
  1548. {
  1549.     HudSettings.ShowPing(s);
  1550. }
  1551. //-------------------------------------
  1552. exec function ShowTime(string s)
  1553. {
  1554.     HudSettings.ShowTime(s);
  1555. }
  1556. //-------------------------------------
  1557. exec function EText(string s)
  1558. {
  1559.     HudSettings.EText(s);
  1560. }
  1561. //-------------------------------------
  1562. exec function ShowTeams(string s)
  1563. {
  1564.     HudSettings.ShowTeams(s);
  1565. }
  1566. //-------------------------------------
  1567. exec function Scope(string s)
  1568. {
  1569.    HudSettings.Scope(s);
  1570. }
  1571. //-------------------------------------
  1572. exec function ShowFC(string s)
  1573. {
  1574.    HudSettings.ShowFC(s);
  1575. }
  1576. //-------------------------------------
  1577. exec function ShowWeaponAccuracy(string s)
  1578. {
  1579.    HudSettings.ShowWeaponAccuracy(s);
  1580. }
  1581. //-------------------------------------
  1582. exec function HitSounds(string s)
  1583. {
  1584.    HudSettings._HitSounds(s);
  1585. }
  1586. //-------------------------------------
  1587. exec function AutoSS(string s)
  1588. {
  1589.    HudSettings.AutoSS(s);
  1590. }
  1591. //-------------------------------------
  1592. exec function ShowHelp(string s)
  1593. {
  1594.    HudSettings.ShowHelp(s);
  1595. }
  1596. //-------------------------------------
  1597. exec function ShowBeacon(string s)
  1598. {
  1599.    HudSettings.ShowBeacon(s);
  1600. }
  1601. //-------------------------------------
  1602. exec function UseDot(string s)
  1603. {
  1604.    HudSettings.UseDot(s);
  1605. }
  1606. //-------------------------------------
  1607. exec function ShowBoots(string s)
  1608. {
  1609.    HudSettings.ShowBoots(s);
  1610. }
  1611. //-------------------------------------
  1612. exec function ShowTeamInfo()
  1613. {
  1614.    if (HudHelper.bShowTeamInfo)
  1615.         HudHelper.bShowTeamInfo = False;
  1616.    else
  1617.         HudHelper.bShowTeamInfo = True;
  1618. }
  1619. //-------------------------------------
  1620. exec function Spectate(string s)
  1621. {
  1622.    if (s ~= "")
  1623.    {
  1624.        if (PlayerPawn(Owner).IsA('Spectator'))
  1625.        {
  1626.             PlayerPawn(Owner).ClientMessage("You are already a Spectator!");
  1627.             return;
  1628.        }
  1629.  
  1630.        if (MyCRI.bCanSpectate)
  1631.        {
  1632.             PlayerPawn(Owner).ClientMessage("Changing to Spectator Mode");
  1633.             PlayerPawn(Owner).ConsoleCommand("Disconnect");
  1634.             PlayerPawn(Owner).UpdateURL("OverrideClass", "Botpack.CHSpectator", True);
  1635.             PlayerPawn(Owner).ConsoleCommand("Reconnect");
  1636.        }
  1637.        else
  1638.             PlayerPawn(Owner).ClientMessage("Spectator Spots Full.");
  1639.  
  1640.    }
  1641. }
  1642. //-------------------------------------
  1643. exec function QuickJoin(string s)
  1644. {
  1645.     if (PlayerPawn(Owner).IsA('Spectator'))
  1646.     {
  1647.         if (s ~= "")
  1648.         {
  1649.             PlayerPawn(Owner).ClientMessage("Joining Server");
  1650.             PlayerPawn(Owner).UpdateURL("OverrideClass", "", True);
  1651.             PlayerPawn(Owner).ConsoleCommand("Reconnect");
  1652.         }
  1653.     }
  1654. }
  1655. //-------------------------------------
  1656. exec function DebugLoad(string s)
  1657. {
  1658.    if (!MyPlayer.PlayerReplicationInfo.bAdmin)
  1659.    {
  1660.         MyPlayer.ClientMessage("You Must Be Logged In As An Admin To Access This Debugger!");
  1661.         return;
  1662.    }
  1663.  
  1664.    switch (s)
  1665.    {
  1666.         case "1":
  1667.             MyPlayer.ConsoleCommand("Inject UserFlag 1");
  1668.             MyPlayer.ClientMessage("Load Debugger Activated!");
  1669.             HudHelper.bDebugLoad = true;
  1670.             break;
  1671.  
  1672.         case "0":
  1673.             MyPlayer.ConsoleCommand("Inject UserFlag 0");
  1674.             MyPlayer.ClientMessage("Load Debugger DeActivated!");
  1675.             HudHelper.bDebugLoad = false;
  1676.             break;
  1677.    }
  1678. }
  1679. //-------------------------------------
  1680. exec function NetCode(string s)
  1681. {
  1682.    HudSettings.ChangenLevel(s);
  1683. }
  1684. //-------------------------------------
  1685. exec function ShowLeader(string s)
  1686. {
  1687.     HudSettings.ShowLeader(s);
  1688. }
  1689.  
  1690. //-------------------------------------
  1691. // defaultproperties
  1692. //-------------------------------------
  1693.  
  1694. defaultproperties
  1695. {
  1696.      StatInfoClass=Class'EUTSource.EUTStatInfo'
  1697.      HudHelperClass=Class'EUTSource.EUTHudHelper'
  1698.      BlueColor=(B=255)
  1699.      RedColor=(R=255)
  1700.      ServerInfoClass=Class'EUTSource.EUTServerInfo'
  1701. }
Add Comment
Please, Sign In to add comment